Ultimativer GAP2 FISI Lernzettel
Table of Contents
1. Prüfungsform
- Schriftliche Abschlussprüfung
- vier ungebundene Aufgaben
- je Aufgabe kann es zwischen 20 und 30 Punkten geben
- Gesamtzahl der möglichen Punkte: 100 Punkte
2. Generelle Themenübersicht:
Zusammenfassung des offiziellen Prüfungskatalogs, teilweise für besseres Verständnis/Übersicht modifiziert. Manche Themen sind zusammengefasst,
2.0.1. Informieren und Beraten von KundInnen:
- Kommunikationsmodelle
- Verkaufsgespräche
- Rechtliche Grundsätze und betriebliche Abläufe:
- BGB/HGB
- Unlauterer Wettbewerb
- AGB-Gesetz
- Compliance
- CRM
- Präsentationstechnik
- Tabellenkalkulation
- Corporate Identity
2.0.2. Programmieren
- Debugging, Breakpoint
- Software Tests:
- Dynamische und statische Tests (Black Box, White Box, Review…)
- Testdaten
- Aktivitätsdiagramm
Pseudocode
Muss nicht komplett Syntax folgen, Kernstruktur sollte jedoch korrekt sein
- UML-Diagramme:
- Use Case
- Klassendiagramm
- Aktivitätsdiagramm
- Anwendungsfalldiagramm
- Sequenzdiagramm
- UI/UX Ergonomisch und Barrierefrei erstellen
- Versionsmanagement (Git)
- Softwareanforderungen erfassen und umsetzen:
- Änderbarkeit/Erweiterbarkeit
- Benutzbarkeit
- Effizienz
- Funktionalität
- Übertragbarkeit
- Zuverlässigkeit
- Wartbarkeit
- Normen anwenden
- ERM
- Relationales Datenmodell
- Arbeiten mit Datenschnittstellen:
- Datenaustauschformate (XML, Json…)
- SQL
- APIs, z.B. REST, GraphQL
- Kennen und Auswählen von Programmiersprachen/Stacks
- Performance
- Portabilität
- Ökosystem (Bibliotheken etc.)
- IDEs
- Compiler vs. Interpreter
- Kompatibilität und Wartbarkeit
- Zeichensätze (ISO etc.)
- Formate
- Aktualisierungsmanagement (z.B. von Dependencies)
- Mathematische Kenntnisse:
- Umwandlung Kbit -> Kbyte etc.
- Binär und Hexadezimalsystem
2.0.3. Datenbanken
- Relationale und nicht-relationale Datenbanken
- NoSQL
- Datentypen
- Bools
- Ganzzahl
- Gleitkomma
- Währung
- Datum
- BLO
- Koordinaten
- Datum
- Anomalien/Redundanzen
- Normalisieren, 1.-3. Normalform
- ER-Modell:
- Attribute
- Beziehungen
- Kardinalitäten
- referenzielle Integrität
- Aktualisierungsweitergabe
- Löschweitergabe
- Primärschlüssel
- Fremdschlüssel
- Datenbankeabfrage, Datenpflege
- SQL-Syntax (Siehe anhang Prüfungskatalog)
- Abfragen über mehrere Tabellen
- Ausdrücke und Bedingungen
- Aggregat-Funktionen
- OpenData, API-Schnittstellen
2.0.4. Durchführen und Dokumentieren von qualitätssichernden Maßnahmen
- QM-Prozess:
- PDCA-Zyklus
- KVP
- Kennzahlen
- Soll-ist-Vergleich, Abweichungen erkennen und berechnen
- Test/Abnahmeprotokoll
2.0.5. Umsetzen, Integrieren und Prüfen von Maßnahmen zu IT-Sicherheit und Datenschutz
- Schadenspotentiale von IT-Sicherheitsvorfällen einschätzen können:
- Wirtschaftlicher Schaden
- Datenverlust
- Imageschaden
- Ransomware
- Phishing
- Auswahl sicherer Software
- Technisch-Organisatorische Maßnahmen (TOM) (Unterschiede und Beispiele kennen):
- Zutrittskontrolle
- Zugangskontrolle
- Zugriffskontrolle
- Bedrohungsszenarien z.B.:
- MITM
- SQL-Injection
- DDOS
- Penetration Testing
- Identity & Access Management
- Schwachstellenanalyze (ig damit ist Blue Teaming gemeint?)
- Log Management
- Compliance Reporting
- User/Zugriffsmanagement
- Firewall/Webfilter
- Verschlüsselung
- Angriffszenarien
- SSO
- Zertifikate
- Symmetische/Asymmetrische Verschlüsselung
- OTP
- Hardwaretoken (NFC, FIDO2…)
2.0.6. Netzwerktechnik
- OSI-Modell, Schichten benennen und Beispiele nennen
- Protokolle/Technologien:
- IPv4,v6
- MAC
- ARP
- TCP/UDP
- DHCP
- VLANs
- LAN/WAN/MAN/GAN/PAN/WLAN/Mesh
- RADIUS
- Kerberos
- OSPF
- DNS
- Proxy
- NAS
- SAN
- iSCSI
- SMB
- NFS
- Ethernet
- FibreChannel
- SSL/TLS
- Loadbalancer
- Spanning Tree
- QoS
- NAT/PAT
- Meshing
- IDS/IPS
- Netzwerkgeräte benennen und beschreiben:
- Modem
- Router
- Firewall
- Bridge
- Switch
- Access Point
- Sniffer
- Strukturierte Verkabelung
- Bluetooth
- Netzwerkpläne lesen und erstellen
- Tunelling
- Kenntnis von Troubleshooting-Tools (ping, traceroute, Wireshark, nMap)
2.0.7. Applikationen betreuen:
- Serverdienste entwerfen, bewerten:
- Echtzeitkommunikation
- Mailserver
- Webserver
- Groupware
- Datenbanken
- Datenformate:
- XML, JSON, CSV etc.
- Bildung eines Data Lake
- PDCA-Zyklus
- Plan – Do – Check – Act, iterativer Prozess zur Verbesserung in einer Organisation
- MTBF/AFR
- MTBF: Mean Time Between Failure, durschnittliche Zeit bis zum Versagen des Gerätes/Komponente AFR: Annualized failure rate, Geschätzte Wahrscheinlichkeit pro Jahr, dass das Gerät/Komponente versagt.
- Disaster Recovery
- Ausfallsichere Systeme:
- USV
- Hardwareredundanzen (Netzteile, RAID)
- Backups
- Lifecycle-Betrachtung
- Monitoring-Systeme
- SNMP
- SMART
- Alerts
- Gängige Softwares
- Predictive Maintenance
- Früherkennung
- Monitoringdaten Auswerten und Maßnahmen auswählen:
- Standard Operation Procedures (SOP)
- Service Level Agreements (SLAs), Level 1-3
- Incident Management (z.B. mit Ticketsystem)
- Eskalationen
- Erstellen von Dokumentation für Nutzer und Kollegen
- Shell/Skriptporgrammierung z.B. Bash, PowerShell, Python
- Hardware- und Softwareanforderungen definieren:
- CPU/RAM/Netzwerk-Leistung
- Verfügbarkeit
- Latenz
- Betriebssystem
- Schichtenarchitektur
- 2-Tier
- 3-Tier
- Multi-Tier
- Schutzziele:
- Vertraulichkeit
- Authentizität
- Integrität
- Verfügbarkeit
- Virtualisierung/Container
- Typ 1/2 Hypervisor
- Docker
- Stakeholder-Analyse
- Auswertung von Protokollen/Logs
- Richtlinien identifizieren, beschreiben und implementieren:
- BSI-Grundschutz
- DSGVO
- Data Loss Prevention
- Nutzer/Betriebsordnung
- BYOD (Bring your own Device)
- Berechtigungskonzepte:
- ACLs
- LDAP
- Domänen
- Update-Management
- Backup-Strategien:
- On-Site vs Off-Site
- Hot vs. Cold Backup
- Lagerung
- Blockbasiert vs. Dateibasiert
- Technologien:
- Band, Festplatte, Cloud…
- Backupdauer berechnen
- Testen von Backups (ganz wichtig^^)
- Versionierung
2.0.8. Services und B2B
- Autoscale
- Servicemodelle:
- On Premises, Cloud […]
- Saas, IaaS, PaaS […]
- Abo vs. Kaufmodell
- Pay-per-use
- Rahmenverträge
- CALs
- Lizenzen
- Lizenzmodelle (Open-Source, Closed Source, GPL vs GNU etc…)
- Verträge
- Rechtliche Anforderungen (z.B. DSGVO bei der Providerwahl)
- Cloud-Anbieter nach Kriterien auswählen:
- Lokation
- Preis
- Effiziente Nutzung der Cloud (e.g. Cloud-Spezifische services nutzen)
- Datenschutz/Compliance
- Managebarkeit
- Infrastructure as Code
3. Spickzettel zu den Einzelthemen
Hier sind nur Themen, mit denen ich Persönlich noch Probleme habe erklärt.
3.1. Formeln:
3.1.1. Schritte zur Umrechnung von Dezimal nach Binär:
- Teile die Dezimalzahl durch 2.
- Notiere den Rest (0 oder 1).
- Wiederhole den Vorgang mit dem ganzzahligen Quotienten, bis du 0 erreichst.
- Lies die notierten Reste von unten nach oben – das ist die Binärdarstellung.
Beispiel: Umwandlung von 25 in Binär Wir konvertieren die Dezimalzahl 25 in eine Binärzahl:
Berechnung | Quotient | Rest (Bit) |
---|---|---|
25 ÷ 2 = 12 | 12 | 1 |
12 ÷ 2 = 6 | 6 | 0 |
6 ÷ 2 = 3 | 3 | 0 |
3 ÷ 2 = 1 | 1 | 1 |
1 ÷ 2 = 0 | 0 | 1 |
Ergebnis: 25 (dezimal) = 11001 (binär) (Lies den Rest von unten nach oben!)
3.1.2. Speichereinheiten:
- Umrechnungs-Tabelle
Datenheiten in Bit Datenheiten in Byte Bit = 0 oder 1 Byte (B) = 8 Bit (2 hoch 10 Byte) Kilobit (Kbit) = 1.000 Bit Kilobyte (KB) = 1.024 B (2 hoch 20 Byte) Megabit (Mbit) = 1.000 Kbit Megabyte (MB) = 1.024 KB (2 hoch 30 Byte) Gigabit (Gbit) = 1.000 Mbit Gigabyte (GB) = 1.024 MB (2 hoch 40 Byte) Terabit (Tbit) = 1.000 Gbit Terabyte (TB) = 1.024 GB (2 hoch 50 Byte) - Umrechnung von Downloadzeiten
Um die Zeit zu berechnen, die benötigt wird, um eine Datei herunterzuladen, verwenden wir die Formel:
Zeit (Sekunden) = Dateigröße (Bits) / Downloadgeschwindigkeit (Bits pro Sekunde)
- Beispielrechnung: 4 GB mit einer 500 Mbit/s Leitung
- Dateigröße in Bits umrechnen:
- 1 GB = 1.024 MB
- 4 GB = 4 x 1.024 MB = 4.096 MB
- 1 MB = 1.024 KB
- 4.096 MB = 4.096 x 1.024 KB = 4.194.304 KB
- 1 KB = 8.192 bit (da 1 Byte = 8 Bit)
- 4.194.304 KB = 4.194.304 x 8.192 bit = 34.359.738.368 bit
- Downloadgeschwindigkeit:
- 500 Mbit/s = 500.000.000 bit/s
- Benötigte Zeit berechnen:
Zeit = 34.359.738.368 bit / 500.000.000 bit/s = 68,72 Sekunden
Es dauert also ungefähr 69 Sekunden, um 4 GB mit einer 500 Mbit/s Verbindung herunterzuladen.
- Dateigröße in Bits umrechnen:
3.2. Netzwerktechnik
3.2.1. Reservierte, Private Netze:
- Class A Netzwerke
- Bereich: `1.0.0.0` bis `127.255.255.255`
- Subnetzmaske: `255.0.0.0` (CIDR: `/8`)
- Anzahl möglicher Netzwerke: 126 (0 und 127 sind reserviert)
- Anzahl Hosts pro Netzwerk: ~16.77 Millionen
Verwendung: Große Netzwerke, Internetanbieter, große Unternehmen
Beispiel: `10.0.0.0/8` (Private IP, RFC 1918)
- Class B Netzwerke
- Bereich: `128.0.0.0` bis `191.255.255.255`
- Subnetzmaske: `255.255.0.0` (CIDR: `/16`)
- Anzahl möglicher Netzwerke: 16.384
- Anzahl Hosts pro Netzwerk: ~65.000
Verwendung: Mittelgroße bis große Netzwerke (Universitäten, große Firmen)
Beispiel: `172.16.0.0/12` (Private IP,RFC 1918)
- Class C Netzwerke
- Bereich: `192.0.0.0` bis `223.255.255.255`
- Subnetzmaske: `255.255.255.0` (CIDR: `/24`)
- Anzahl möglicher Netzwerke: ~2 Millionen
- Anzahl Hosts pro Netzwerk: 254
Verwendung: Kleine Netzwerke, Heimnetzwerke, KMU (kleine und mittlere Unternehmen)
Beispiel: `192.168.0.0/16` (Private IP, RFC 1918)
- Class D Netzwerke (Multicast)
- Bereich: `224.0.0.0` bis `239.255.255.255`
- Subnetzmaske: Keine Standard-Subnetzmaske
- Verwendung: Multicast-Übertragungen (Streaming, Echtzeitkommunikation)
- Wichtige Adressen:
- `224.0.0.1` → Alle Hosts im lokalen Netzwerk
- `224.0.0.2` → Alle Router im lokalen Netzwerk
- Schritte zur Berechnung der Hosts pro Subnetz
- Bestimme die Subnetzmaske → Zähle die Anzahl der verbleibenden Host-Bits (Null-Bits in der Maske).
- Berechne die Anzahl der Hosts → Nutze die Formel
2^Host-Bits - 2
.
3.2.2. Host-Berechnungstabelle
CIDR | Subnetzmaske | Host-Bits | Maximale Hosts |
---|---|---|---|
/30 | 255.255.255.252 | 2 | 2 |
/29 | 255.255.255.248 | 3 | 6 |
/28 | 255.255.255.240 | 4 | 14 |
/27 | 255.255.255.224 | 5 | 30 |
/26 | 255.255.255.192 | 6 | 62 |
/25 | 255.255.255.128 | 7 | 126 |
/24 | 255.255.255.0 | 8 | 254 |
/23 | 255.255.254.0 | 9 | 510 |
/22 | 255.255.252.0 | 10 | 1022 |
/21 | 255.255.248.0 | 11 | 2046 |
/20 | 255.255.240.0 | 12 | 4094 |
3.2.3. Beispiel: Wie viele Hosts in einem /26-Subnetz?
- Subnetzmaske: 255.255.255.192
- Host-Bits berechnen:
- IPv4 hat 32 Bits insgesamt.
- /26 bedeutet 26 Netzwerk-Bits, also verbleiben 6 Host-Bits.
Anzahl der Hosts rechnen:
2**6 - 2 # Ergebnis: 62 nutzbare Hosts
- Ergebnis: Ein /26-Netzwerk kann 62 nutzbare Hosts haben.
3.2.4. IPv4 Header:
- IPv4 Header Struktur
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version | IHL | DSCP | Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address (32 Bit) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address (32 Bit) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Feldbeschreibung des IPv4-Headers
Feld Größe (Bits) Beschreibung Version 4 IPv4 = 4 IHL (Header Length) 4 Länge des Headers in 32-Bit-Worten (min. Wert: 5) DSCP (Differentiated Services Code Point) 6 QoS oder Priorisierung ECN (Explicit Congestion Notification) 2 Vermeidung von Netzwerküberlastung Total Length 16 Gesamtlänge des IPv4-Pakets inkl. Daten (max. 65.535 Bytes) Identification 16 Eindeutige Paket-ID für Fragmentierung Flags 3 Steuerbits für Fragmentierung Fragment Offset 13 Position eines Fragments im ursprünglichen Paket Time to Live (TTL) 8 Maximale Hop-Anzahl, um Endlosschleifen zu vermeiden Protocol 8 Welches Protokoll folgt? (z. B. TCP=6, UDP=17) Header Checksum 16 Prüfsumme zur Fehlererkennung im Header Source Address 32 Absender-IP-Adresse Destination Address 32 Ziel-IP-Adresse Options (optional) variabel Zusätzliche Routing- oder Prüf-Informationen - Wichtige Feld-Details
- Version (4 Bit)
- Gibt die IP-Version an. Für IPv4 ist der Wert immer 4.
- IPv6 nutzt Version 6.
- IHL (Internet Header Length, 4 Bit)
- Gibt die Längedes Headers in 32-Bit-Worten an.
- Wert `5` bedeutet 5 × 4 = 20 Bytes (Mindestgröße).
- Falls es Optionen gibt, kann der Header länger sein.
- DSCP & ECN (6+2 Bit, Differentiated Services)
- DSCP (6 Bit): Wird für Quality of Service (QoS) genutzt.
- ECN (2 Bit): Ermöglicht die aktive Netzwerküberlastungskontrolle.
- Total Length (16 Bit)
- Gibt die Gesamtlänge des IP-Pakets (Header + Daten) in Bytes an.
- Minimaler Wert: 20 Bytes (nur Header).
- Maximaler Wert: 65.535 Bytes (größer = Fragmentierung nötig).
- Fragmentierungs-Felder
Feld Beschreibung Identification Eindeutige ID für zusammenhängende Fragmente Flags (3 Bit) 0. Reserviert / 1. DF (Don’t Fragment) / 2. MF (More Fragments) Fragment Offset Gibt die Position eines Fragments im Gesamtpaket an - TTL – Time to Live (8 Bit)
- Gibt die maximale Anzahl an Hops (Routern) an.
- Jeder weitergeleitete Hop verringert den Wert um 1.
- Wenn `TTL = 0`, wird das Paket verworfen (Vermeidung endloser Loops).
- Protocol (8 Bit)
- Zeigt an, welches Protokoll nach dem IP-Header kommt:
Wert Protokoll 1 ICMP 6 TCP 17 UDP 41 IPv6 in IPv4-Tunnel - Header Checksum (16 Bit)
- Prüft auf Fehler innerhalb des IPv4-Headers.
- Wird bei jeder Weiterleitung neu berechnet!
- Source & Destination Address (je 32 Bit)
- Enthält die Absender- und Ziel-IP-Adresse.
- Optionen (optional, variable Länge)
- Wird selten genutzt, meist für Debugging oder interne Routing-Protokolle.
- Version (4 Bit)
3.2.5. OSI-Modell:
NR | Schicht | Funktion / Aufgaben | Wichtige Protokolle / Technologien |
---|---|---|---|
7 | Anwendung (Application) | Schnittstelle für Anwendungen und Benutzer | HTTP, FTP, SMTP, DNS, POP3 |
6 | Darstellung (Presentation) | Datenformatierung, Verschlüsselung, Komprimierung | SSL/TLS, ASCII, JPEG, MPEG |
5 | Sitzung (Session) | Verbindungs- und Sitzungssteuerung zwischen Endgeräten | NetBIOS, RPC, PPTP |
4 | Transport (Transport) | Ende-zu-Ende-Kommunikation, Segmentierung, Fehlerkontrolle | TCP, UDP |
3 | Netzwerk (Network) | Logische Adressierung, Routing zwischen Netzwerken | IP, ICMP, ARP, RIP, OSPF |
2 | Sicherung (Data Link) | Physikalische Adressierung (MAC), Fehlerkorrektur | Ethernet, WiFi (802.11), PPP, ARP |
1 | Bitübertragung (Physical) | Übertragung elektrischer/optischer Signale als Bits | Kabel (Ethernet, Glasfaser), Funk, Netzwerkkarten |
3.2.6. VLANs:
VLANs (Virtuelle LANs) sind eine Methode zur logischen Trennung von Netzwerken auf Layer 2 (OSI-Modell). Sie ermöglichen es, dass verschiedene Geräte in unterschiedlichen Netzwerken agieren, obwohl sie physisch verbunden sind.
- Vorteile von VLANs
- Netzwerksegmentierung: Trennung von Broadcast-Domains, reduziert Netzwerküberlastung.
- Sicherheit: Geräte aus unterschiedlichen VLANs können nicht direkt kommunizieren (außer über Layer-3-Routing).
- Flexibilität: Geräte müssen nicht physisch umgesteckt werden, nur VLAN-Änderung erforderlich.
- Bessere Performance: Broadcast-Traffic wird pro VLAN begrenzt.
- VLAN-Typen
Typ Beschreibung Static VLAN Manuelles Zuweisen eines Ports zu einem VLAN Dynamic VLAN Automatische VLAN-Zuweisung durch MAC-Adressen oder Authentifizierung Voice VLAN Spezielles VLAN für VoIP (Quality of Service verbessert) - VLAN-Tagging und IEEE 802.1Q
- 802.1Q ist der Standard für VLAN-Tagging auf Trunks.
- Trunk-Ports transportieren mehrere VLANs & besitzen VLAN-Tags (4 Byte).
- Access-Ports gehören zu einem einzigen VLAN & haben keine Tags.
+-------+ VLAN 10 +-------+ | PC A |-------------| SW1 | +-------+ +-------+ │ VLAN 10 │ VLAN 20 +-------+ +-------+ | PC B |------------| SW2 | +-------+ +-------+
- VLAN-Konfiguration Beispiel (Cisco Switch)
# VLAN erstellen Switch(config)# vlan 10 Switch(config-vlan)# name Sales # Port einem VLAN zuweisen Switch(config)# interface FastEthernet 0/1 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 10 # Trunk-Port für mehrere VLANs konfigurieren Switch(config)# interface GigabitEthernet 0/1 Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk allowed vlan 10,20,30
Wichtig: Ohne ein Routing-Gerät (Router oder Layer-3-Switch) können VLANs nicht miteinander kommunizieren.
3.2.7. DHCP – Dynamic Host Configuration Protocol
- Einführung
DHCP (Dynamic Host Configuration Protocol) ist ein Netzwerkprotokoll, das Clients automatisch mit IP-Adressen und weiteren Netzwerkinformationen versorgt. Es ermöglicht die dynamische Zuweisung von Netzwerkkonfigurationen, ohne dass Administratoren manuelle Einstellungen vornehmen müssen.
- Vorteile von DHCP
- Automatische IP-Vergabe: Kein manuelles Konfigurieren von Geräten erforderlich.
- Effiziente IP-Nutzung: IP-Adressen können nach Ablauf einer Leasezeit wiederverwendet werden.
- Zentrale Verwaltung: Der DHCP-Server verwaltet alle IPs und Einstellungen zentral.
- Reduzierte Fehleranfälligkeit: Fehler durch doppelte IP-Adressen werden vermieden.
- DHCP-Zuweisung – Ablauf
- Discovery: Client sendet eine Broadcast-Anfrage (`DHCPDISCOVER`).
- Offer: DHCP-Server antwortet mit einem Angebot (`DHCPOFFER`).
- Request: Client akzeptiert das Angebot durch eine Anforderungsnachricht (`DHCPREQUEST`).
- Acknowledge: Der Server bestätigt die Zuweisung mit (`DHCPACK`).
- Wichtige DHCP-Einstellungen
Einstellung Bedeutung IP-Adresse Zuweisung einer eindeutigen Adresse Subnetzmaske Definiert das Subnetz Gateway Router-Adresse für den Netzwerkzugang DNS-Server Server für Namensauflösung Lease Time Zeitraum, für den eine IP gültig ist - DHCP-Konfigurationsbeispiel (Linux, ISC-DHCP-Server)
# DHCP-Server Konfigurationsdatei (/etc/dhcp/dhcpd.conf) subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 8.8.8.8, 8.8.4.4; default-lease-time 600; max-lease-time 7200; }
3.2.8. DNS – Domain Name System
- Einführung
DNS (Domain Name System) ist ein verteiltes, hierarchisches Namensauflösungssystem, das Domain-Namen in IP-Adressen übersetzt. Ohne DNS müssten Benutzer statt einfacher Web-Adressen wie `example.com` die dazugehörige IP-Adresse eingeben.
- Vorteile von DNS
- Ermöglicht einfache Namensauflösung: Menschenfreundliche Namen statt numerischer IPs.
- Skalierbar und dezentral: DNS-Server sind weltweit verteilt und redundant.
- Automatische Weiterleitungen: Unterstützt Alias-Namen und Weiterleitungen.
- Schnelle Antwortzeiten: DNS-Caching reduziert die Notwendigkeit häufiger Anfragen.
- DNS-Auflösung – Ablauf
- Client-Anfrage: Der Client sendet eine Namensauflösungsanfrage (`example.com`).
- Lokaler DNS-Cache: Prüft, ob die IP-Adresse bereits gespeichert ist.
- Recursive Resolver: Fragt bei übergeordneten DNS-Servern nach.
- Root-Server: Leitet die Anfrage an entsprechende TLD-Server weiter.
- TLD-Server: Gibt den zuständigen autoritativen DNS-Server an.
- Autoritativer DNS-Server: Liefert die endgültige Antwort mit der IP-Adresse.
- Antwort an den Client: Client speichert die Information im Cache und stellt die Verbindung her.
- Wichtige DNS-Einträge
Typ Bedeutung A IPv4-Adresse eines Hosts AAAA IPv6-Adresse eines Hosts CNAME Alias für eine andere Domain MX Mail-Server für eine Domain NS Angabe des autoritativen DNS-Servers PTR Rückwärtsauflösung von IP zu Domain - DNS-Konfigurationsbeispiel (BIND 9)
# Beispiel-Zonendatei (/etc/bind/db.example.com) $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2024060401 ; Seriennummer 3600 ; Refresh 1800 ; Retry 1209600 ; Expire 86400 ; Minimum TTL ) @ IN NS ns1.example.com. @ IN A 192.168.1.10 www IN A 192.168.1.100 mail IN MX 10 mail.example.com.
- Fazit
- DNS übersetzt Domainnamen in IP-Adressen, um Internetzugriffe zu erleichtern.
- Der DNS-Resolver führt eine rekursive Namensauflösung durch, um IP-Adressen zu finden.
- Wichtige DNS-Einträge wie `A`, `MX` und `CNAME` definieren verschiedene Funktionen im DNS-System.
- DNS-Caching hilft, Anfragen zu beschleunigen, indem bereits aufgelöste Adressen zwischengespeichert werden.
3.2.9. TCP & UDP – Transportprotokolle
- Einführung
TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) sind die beiden wichtigsten Transportprotokolle im OSI-Modell (Schicht 4). Sie ermöglichen die Übertragung von Datenpaketen zwischen Anwendungen über Netzwerke wie das Internet.
- Unterschiede zwischen TCP und UDP
Merkmal TCP (Transmission Control Protocol) UDP (User Datagram Protocol) Verbindungsaufbau Ja, benötigt 3-Wege-Handshake Nein, verbindungslos Fehlertoleranz Hoch, mit Bestätigungen und Wiederholungen Niedrig, keine Überprüfung Reihenfolgegarantie Ja, Pakete werden in der richtigen Reihenfolge zusammengesetzt Nein, Pakete können in beliebiger Reihenfolge eintreffen Geschwindigkeit Langsamer aufgrund von Fehlerkontrolle und Bestätigungen Schneller, da weniger Overhead Anwendungsbereiche Web, E-Mail, Dateien (HTTP, FTP, SMTP) Streaming, VoIP, Online-Gaming (DNS, VoIP, Videoübertragung) - TCP – Verlässliche Datenübertragung
TCP baut eine gesicherte Verbindung zwischen Sender und Empfänger auf. Jeder Datenblock wird bestätigt, und verlorene Pakete werden erneut gesendet.
TCP 3-Wege-Handshake:
- SYN: Client sendet Verbindungsanfrage an Server.
- SYN-ACK: Server bestätigt die Anfrage.
- ACK: Client bestätigt erneut → Verbindung aufgebaut.
Wenn die Übertragung beendet ist, folgt die TCP-Verbindungstrennung mit einem 4-Wege-Handschlag.
- UDP – Schnelle, ungesicherte Übertragung
UDP sendet Datenpakete ohne vorherige Verbindung und ohne Bestätigung. Dies macht UDP ideal für Anwendungen, die geringe Latenz erfordern, jedoch etwas Fehlertoleranz haben.
UDP wird häufig verwendet für:
- DNS-Anfragen, da schnelle Antwortzeiten erforderlich sind.
- Streaming-Dienste, bei denen kleine Verluste tolerierbar sind.
- VoIP, um Sprachübertragungen in Echtzeit zu ermöglichen.
- TCP & UDP in der Praxis – Portnummern
Protokoll Standard-Port Beschreibung HTTP 80 (TCP) Webseiten ohne Verschlüsselung HTTPS 443 (TCP) Verschlüsselte Webseiten mit TLS/SSL FTP 21 (TCP) Dateiübertragung DNS 53 (UDP/TCP) Namensauflösung (UDP für schnelle Anfragen, TCP für große Antworten) SMTP 25 (TCP) E-Mail-Versand SSH 22 (TCP) Sicherer Fernzugriff auf Server - Fazit
- TCP bietet eine zuverlässige, fehlerfreie Datenübertragung mit Verbindungsaufbau und Kontrolle.
- UDP ist schneller und effizienter, aber mit möglichen Paketverlusten.
- Anwendungen wählen je nach Anwendungsfall das passende Protokoll.
- Viele Netzwerkprotokolle wie HTTP, FTP, DNS und VoIP basieren auf TCP oder UDP.
3.2.10. ARP & MAC – Adressierung im Netzwerk
- Grundlegendes
ARP (Address Resolution Protocol) und MAC-Adressen (Media Access Control) sind essenziell für die Kommunikation in Netzwerken auf OSI-Schicht 2 und 3. Während MAC-Adressen die physische Identifikation von Geräten ermöglichen, wandelt ARP logische IP-Adressen in MAC-Adressen um.
- MAC-Adresse – Physikalische Gerätekennung
- Eine MAC-Adresse ist eine weltweit eindeutige Adresse eines Netzwerkgeräts (z. B. Netzwerkkarte).
Besteht aus 48 Bit und wird meist als sechs Hexadezimalpaare dargestellt:
`00:1A:2B:3C:4D:5E`
- Aufbau einer MAC-Adresse:
- OUI (Organizationally Unique Identifier, 24 Bit) → Herstellerkennung
- Gerätespezifischer Teil (24 Bit) → Eindeutige Seriennummer
- Wird für die Kommunikation innerhalb eines lokalen Netzwerks (LAN) verwendet.
- Funktioniert nur in Layer-2-Segmenten, da MAC-Adressen nicht über Router weitergeleitet werden.
- ARP – Zuordnung von IP- zu MAC-Adressen
- ARP löst IP-Adressen (OSI-Schicht 3) in MAC-Adressen (OSI-Schicht 2) auf.
- Wird benötigt, wenn ein Gerät die MAC-Adresse eines anderen Geräts im gleichen Netzwerk nicht kennt.
Ablauf einer ARP-Anfrage:
- Host A sendet eine Broadcast-Anfrage: „Wer hat 192.168.1.10? Sende mir deine MAC-Adresse!“
- Host B antwortet mit seiner MAC-Adresse direkt an Host A.
- Die Antwort wird im ARP-Cache gespeichert, um zukünftige Anfragen zu vermeiden.
- Wichtige ARP-Typen
Typ Funktion ARP Request Host fragt nach der MAC-Adresse einer IP ARP Reply Host antwortet mit der passenden MAC-Adresse Gratuitous ARP Host sendet seine eigene IP-MAC-Zuordnung (z. B. nach einer IP-Änderung) Reverse ARP (RARP) MAC-Adresse wird zur Ermittlung einer IP-Adresse genutzt (veraltet) - ARP-Cache prüfen und verwalten
Betriebssystem Befehl Windows `arp -a` → Zeigt den ARP-Cache Linux/macOS `ip neigh show` oder `arp -n` Eintrag löschen `arp -d <IP>` (löscht Cache-Eintrag) - ARP-Spoofing – Sicherheitsgefahr
- Angreifer manipulieren MAC-Addressen, um sich als ein anderes Gerät auszugeben.
- Wird für MITM-Angriffe (Man-in-the-Middle) genutzt.
- Schutzmaßnahmen:
- Statische ARP-Einträge für kritische Geräte setzen.
- ARP-Inspection aktivieren (bei Managed Switches).
- VPN und sichere Verbindungen verwenden, um ARP-Manipulationen zu erschweren.
- Zusammenfassung
- MAC-Adressen identifizieren ein Gerät im Netzwerk eindeutig auf Layer 2.
- ARP erleichtert die Kommunikation, indem IP-Adressen MAC-Adressen zugeordnet werden.
- ARP ist anfällig für Spoofing-Angriffe, daher sind Sicherheitsmaßnahmen erforderlich.
- Ohne ARP könnten Geräte in einem LAN nicht miteinander kommunizieren.
3.2.11. IPv6 - Adressierung und Kommunikation im Netzwerk
- Grundlegendes
IPv6 ist das neueste Internetprotokoll für IP-Adressen. Es bietet eine unglaubliche Anzahl von möglichen IP-Adressen, was bedeutet, dass es weniger Probleme mit der Zuweisung von IP-Adressen gibt.
- Die Grundlagen von IPv6
IPv6 ist auf der Betrachtung einer 128-Bit-Address-Struktur basiert. Das bedeutet eine unglaubliche Anzahl möglicher Adressen.
- IPv6-Adressformate
- Global-Addresses: Diese sind die traditionellen IP-Adressen, die wir kennen.
- Link-Local-Addresses: Diese Adressen sind nur für einen bestimmten Netzwerk-Link gültig.
- Unique-Locales: Diese Adressen können innerhalb eines Netzwerks verwendet werden und können zwischen Netzwerken unterscheidbar sein.
- TODO Unvollständig
3.2.12. Fachbegriffe:
Begriff | Erklärung |
---|---|
Broadcast-Domäne | Eine Broadcast-Domäne ist ein Netzwerkbereich, in dem alle Geräte untereinander Broadcast-Nachrichten empfangen und senden können. Sie wird typischerweise durch Router oder VLANs begrenzt, um die Netzwerklast zu verringern und die Effizienz zu steigern. |
FQDN | Ein FQDN (Fully Qualified Domain Name) ist der vollständige Domainname eines Geräts im Internet, der alle Ebenen der Domainstruktur (Domain + Subdomain + TLD) bis zur obersten Ebene umfasst, zum Beispiel: www.finnlab.moe. |
3.3. Datenbanken
Datenbanken sind strukturierte Sammlungen von Informationen, die elektronisch gespeichert und verwaltet werden. Sie ermöglichen das effiziente Speichern, Abrufen, Verwalten und Aktualisieren von Daten. Datenbanken spielen eine zentrale Rolle in nahezu allen Bereichen der Informatik und Informationstechnologie, von Unternehmensanwendungen bis hin zu Webdiensten und mobilen Apps.
3.3.1. Relationale und nicht-relationale Datenbanken
3.3.2. Relationale Datenbanken
Relationale Datenbanken basieren auf dem relationalen Modell, das von Edgar F. Codd in den 1970er Jahren entwickelt wurde. Sie organisieren Daten in Tabellen (Relationen), die durch eindeutige Schlüssel (Primär- und Fremdschlüssel) miteinander verbunden sind.
- Struktur: Tabellen mit Zeilen (Datensätzen) und Spalten (Attributen).
- Schema: Definiert die Struktur der Datenbank, einschließlich Tabellen, Spalten und Beziehungen.
- Vorteile:
- Datenintegrität: Durch den Einsatz von Primär- und Fremdschlüsseln.
- Flexibilität: Unterstützung komplexer Abfragen mittels SQL.
- Skalierbarkeit: Gut geeignet für strukturierte Daten mit klar definierten Beziehungen.
3.3.3. Nicht-relationale Datenbanken
Nicht-relationale Datenbanken, auch als NoSQL-Datenbanken bezeichnet, wurden entwickelt, um die Einschränkungen relationaler Datenbanken zu überwinden, insbesondere im Hinblick auf Skalierbarkeit und Flexibilität bei der Modellierung von Daten.
- Typen:
- Dokumentenorientiert: Speichern Daten als Dokumente (z.B. JSON, BSON) – z.B. MongoDB.
- Schlüssel-Wert-Speicher: Speichern Daten als Schlüssel-Wert-Paare – z.B. Redis.
- Spaltenorientiert: Speichern Daten in Spaltenfamilien – z.B. Cassandra.
- Graphdatenbanken: Speichern Daten als Knoten und Kanten zur Darstellung von Netzwerken – z.B. Neo4j.
- Vorteile:
- Hohe Skalierbarkeit: Bessere Unterstützung für horizontale Skalierung.
- Flexibilität: Schemafreie Datenmodelle ermöglichen die Speicherung von unstrukturierten und semi-strukturierten Daten.
- Performance: Optimiert für bestimmte Anwendungsfälle und Datenzugriffsmuster.
3.3.4. NoSQL
NoSQL (Not Only SQL) bezeichnet eine Klasse von Datenbankmanagementsystemen, die nicht auf dem relationalen Modell basieren. Sie sind besonders geeignet für Anwendungen, die hohe Skalierbarkeit, Flexibilität und Performance erfordern.
- Grundprinzipien:
- Schemafreiheit: Keine festen Schemata, was die Speicherung abwechslungsreicher Datenstrukturen ermöglicht.
- Horizontale Skalierung: Einfache Erweiterung durch Hinzufügen weiterer Server.
- Verteilte Architektur: Daten werden über mehrere Knoten verteilt, um Ausfallsicherheit und Leistungsfähigkeit zu erhöhen.
- Hauptkategorien:
- Dokumentenbasierte Datenbanken: Speichern komplexe Datenstrukturen als Dokumente – z.B. MongoDB, CouchDB.
- Schlüssel-Wert-Datenbanken: Einfache Speicherung von Daten als Schlüssel-Wert-Paare – z.B. Redis, DynamoDB.
- Spaltenarische Datenbanken: Optimiert für Abfragen über große Datenmengen und spezifische Spalten – z.B. Cassandra, HBase.
- Graphdatenbanken: Ideal für die Darstellung und Verarbeitung von Netzwerken und Beziehungen – z.B. Neo4j, JanusGraph.
- Anwendungsbereiche:
- Big Data und Echtzeitanalysen.
- Content Management Systeme.
- E-Commerce Plattformen.
- Social Networks und Empfehlungssysteme.
3.3.5. Datentypen
Datentypen definieren die Art der Daten, die in einer Datenbank gespeichert werden können. Sie bestimmen, welche Operationen auf den Daten durchgeführt werden können und wie sie von der Datenbank interpretiert werden.
- Boolean (Bools)
- Beschreibung: Ein Datentyp, der nur zwei Werte annehmen kann: `TRUE` (wahr) oder `FALSE` (falsch).
- Verwendung: Zur Darstellung von Wahrheitswerten, Zuständen oder Flags.
- Beispiel: Ein Feld `isactive` könnte angeben, ob ein Benutzerkonto aktiv ist (`TRUE`) oder deaktiviert wurde (`FALSE`).
- Ganzzahl (Integer)
- Beschreibung: Ganze Zahlen ohne Dezimalstellen.
- Subtypen:
- Kleine Ganzzahlen: z.B. `TINYINT` in SQL.
- Normale Ganzzahlen: z.B. `INT` in SQL.
- Große Ganzzahlen: z.B. `BIGINT` in SQL.
- Verwendung: Zur Darstellung von Zählungen, IDs, Mengenangaben.
- Beispiele: Anzahl der Seiten in einem Buch, Primärschlüssel einer Tabelle.
- Gleitkomma (Float, Double)
- Beschreibung: Zahlen mit Dezimalstellen, die eine ungefähre Darstellung von Werten ermöglichen.
- Subtypen:
- FLOAT: Eine Gleitkommazahl mit einfacher Genauigkeit.
- DOUBLE: Eine Gleitkommazahl mit doppelter Genauigkeit.
- Verwendung: Zur Darstellung von Messwerten, wissenschaftlichen Berechnungen, Angabe von Präzision.
- Beispiele: Temperaturmessungen, Geokoordinaten.
- Währung (Currency, Decimal)
- Beschreibung: Spezielle Datentypen zur Darstellung von Geldwerten mit fester Dezimalgenauigkeit.
- Verwendung: Sicherstellung der präzisen Darstellung und Berechnung von finanziellen Daten.
- Beispiele: Preisangaben, Gehaltszahlungen.
- Bemerkung: Oftmals wird der `DECIMAL`-Datentyp bevorzugt, da er exakte Werte ohne Rundungsfehler ermöglicht.
- Datum (Date)
- Beschreibung: Datentyp zur Speicherung von Kalenderdaten ohne Zeitangabe.
- Verwendung: Zur Darstellung von Ereignissen, Geburtstagen, Bestelldaten.
- Formatierung: `YYYY-MM-DD` (z.B. `2024-04-27`).
- BLO (Binary Large Object)
- Beschreibung: Datentyp zur Speicherung von großen Datenmengen wie Bilder, Videos, Audiodateien oder andere binäre Daten.
- Verwendung: Speicherung von Multimedia-Inhalten, Dokumenten.
- Beispiele: Profilbilder, hochgeladene Dateien.
- Koordinaten (Geospatial Data)
- Beschreibung: Datentypen zur Speicherung von geografischen Daten, die Positionen auf der Erdoberfläche darstellen.
- Unterkategorien:
- POINT: Ein einzelner Punkt (z.B. ein Standort).
- LINESTRING: Eine Reihe verbundener Punkte, die eine Strecke darstellen.
- POLYGON: Ein geschlossener Pfad, der einen Bereich umschließt.
- Verwendung: Geolocation-Dienste, Kartendaten, Standortbezogene Anwendungen.
- Beispiele: GPS-Koordinaten, Grenzen von Städten oder Bezirken.
- Datum
(Hinweis: Dieser Datentyp wurde bereits unter “Datum” beschrieben.)
3.3.6. Anomalien/Redundanzen
3.3.7. Anomalien in Datenbanken
Datenanomalien entstehen durch inkonsistente oder redundante Daten in einer Datenbank. Sie können vorkommen, wenn Daten nicht ordnungsgemäß normalisiert sind. Es gibt drei Haupttypen von Anomalien:
- Einfügeanomalie (Insertion Anomaly):
- Beschreibung: Schwierigkeiten beim Hinzufügen neuer Daten, weil einige Attribute nicht vorhanden sind.
- Beispiel: In einer nicht-normalisierten Tabelle kann das Hinzufügen eines neuen Produkts ohne eine Bestellung problematisch sein, wenn Produktdaten nur in der Bestellungstabelle enthalten sind.
- Löschanomalie (Deletion Anomaly):
- Beschreibung: Unbeabsichtigtes Verlust von Daten durch das Löschen anderer Daten.
- Beispiel: Das Löschen einer Bestellung könnte auch die zugehörigen Kundendaten entfernen, wenn beide in derselben Tabelle gespeichert sind.
- Updateanomalie (Update Anomaly):
- Beschreibung: Inkonsistente Daten aufgrund von Updates an mehreren Stellen.
- Beispiel: Die Aktualisierung der Adresse eines Kunden muss in allen entsprechenden Datensätzen vorgenommen werden. Wird nur ein Datensatz aktualisiert, entstehen Inkonsistenzen.
3.3.8. Redundanzen
Redundanzen treten auf, wenn dieselben Daten mehrfach in der Datenbank gespeichert sind. Sie sind oft eine Folge mangelnder Normalisierung und können zu den oben genannten Anomalien beitragen.
- Nachteile von Redundanzen:
- Speicherplatzverbrauch: Mehrfache Speicherung derselben Daten beansprucht unnötig Speicherplatz.
- Inkonsequente Daten: Bei Änderungen müssen alle redundanten Kopien aktualisiert werden, was fehleranfällig ist.
- Komplexität: Erschwert die Datenpflege und erhöht das Risiko von Anomalien.
- Vorteile von Redundanzen (in begrenztem Maße):
- Performance: In einigen Fällen können Redundanzen die Abfragegeschwindigkeit erhöhen, z.B. durch Vorhaltung häufiger verwendeter Daten an mehrerenStellen.
3.3.9. Normalisieren, 1.-3. Normalform
3.3.10. Normalisierung
Normalisierung ist ein Prozess in der Datenbankgestaltung, der darauf abzielt, Datenbankstrukturen zu optimieren, indem Redundanzen minimiert und Datenanomalien vermieden werden. Sie basiert auf einer Reihe von Normalformen, die die Relationstabellen in der Datenbank strikt definieren.
3.3.11. Normalformen**
- Erste Normalform (1. NF):
- Anforderungen:
- Alle Attributwerte sind atomar (nicht weiter teilbar).
- Jede Spalte enthält nur einen einzigen Wert pro Zeile.
- Ziel: Vermeidung von wiederholten Gruppen und Mehrwertfeldern.
- Beispiel: Statt einer Tabelle mit mehreren Telefonnummern in einer Spalte, jede Telefonnummer in einer separaten Zeile speichern.
- Anforderungen:
- Zweite Normalform (2. NF):
- Anforderungen:
- Erfüllt alle Anforderungen der 1. NF.
- Jedes Nicht-Schlüsselattribut ist vollständig funktional abhängig vom gesamten Primärschlüssel, nicht nur von einem Teil davon.
- Ziel: Vermeidung von partiellen Abhängigkeiten.
- Anwendung: Trennen von Tabellen, um Daten so zu strukturieren, dass jedes Attribut nur von der Gesamtheit des Primärschlüssels abhängt.
- Anforderungen:
- Dritte Normalform (3. NF):
- Anforderungen:
- Erfüllt alle Anforderungen der 2. NF.
- Keine transitive Abhängigkeit zwischen Nicht-Schlüsselattributen besteht (d.h., Nicht-Schlüsselattribute hängen nur vom Primärschlüssel ab und nicht voneinander).
- Ziel: Vermeidung von transitive Abhängigkeiten und weiteren Redundanzen.
- Anwendung: Trennen von abhängigen Attributen in eigene Tabellen.
- Anforderungen:
3.3.12. Vorteile der Normalisierung:**
- Reduzierte Redundanz: Weniger doppelte Daten.
- Verbesserte Datenintegrität: Sicherstellung konsistenter und korrekter Daten.
- Einfachere Wartung: Leichtere Pflege und Aktualisierung der Datenbank.
3.3.13. Nachteile der Normalisierung:**
- Komplexität: Mehr Tabellen können die Datenbankstruktur komplexer machen.
- Performance: In bestimmten Szenarien kann die Abfragegeschwindigkeit abnehmen, da mehr Joinserforderlich sind.
3.3.14. ER-Modell
Das Entity-Relationship-Modell (ER-Modell) ist eine konzeptionelle Darstellung von Daten und deren Beziehungen in einer Datenbank. Es hilft beim Entwurf von Datenbanken, indem es Entitäten, deren Attribute und die Beziehungen zwischen ihnen identifiziert.
3.3.15. Komponenten des ER-Modells:**
- Attribute
- Beschreibung: Eigenschaften oder Merkmale von Entitäten.
- Arten:
- Einfache Attribute: Nicht weiter teilbar (z.B. `Name`, `Alter`).
- Zusammengesetzte Attribute: Bestehen aus mehreren Teilattributen (z.B. `Adresse` kann in `Straße`, `Stadt`, `Postleitzahl` unterteilt werden).
- Schlüsselattribute: Eindeutige Identifikation von Entitäten (z.B. `KundenID`).
- Mehrwertige Attribute: Können mehrere Werte annehmen (z.B. `Telefonnummern`).
- Beispiele:
- Eine Entität `Student` könnte Attribute wie `StudentenID`, `Name`, `Geburtsdatum` haben.
- Beziehungen
- Beschreibung: Verbindungen oder Assoziationen zwischen Entitäten.
- Typen von Beziehungen:
- Eins-zu-Eins (1:1): Ein Entität A ist mit genau einer Entität B verbunden und umgekehrt.
- Eins-zu-Viele (1:N): Eine Entität A ist mit mehreren Entitäten B verbunden, aber jede Entität B ist nur mit einer Entität A verbunden.
- Viele-zu-Viele (M:N): Mehrere Entitäten A können mit mehreren Entitäten B verbunden sein und umgekehrt.
- Beispiele:
- Ein `Kunde` kann mehrere `Bestellungen` haben (1:N).
- `Studenten` und `Kurse` stehen in einer M:N-Beziehung, da ein Student mehrere Kurse belegen kann und ein Kurs von mehreren Studenten besucht werden kann.
- Kardinalitäten
- Beschreibung: Bestimmt die Anzahl der Entitäten, die an einer Beziehung teilnehmen können.
- Typen:
- Minimum: Gibt an, wie viele Entitäten mindestens beteiligt sein müssen.
- Maximum: Gibt an, wie viele Entitäten maximal beteiligt sein können.
- Beispiele:
- 1:1: Jeder Mensch hat genau einen Pass.
- 1:N: Ein Lehrer kann mehrere Schüler haben.
- M:N: Ein Autor kann mehrere Bücher schreiben und ein Buch kann von mehreren Autoren verfasst sein.
- Referenzielle Integrität
- Beschreibung: Gewährleistet, dass Beziehungen zwischen Tabellen in einer Datenbank konsistent bleiben.
- Regeln:
- Ein Fremdschlüssel muss entweder den Wert eines existierenden Primärschlüssels enthalten oder `NULL` sein.
- Verhindert das Vorhandensein von Fremdschlüsseln, die auf nicht existierende Datensätze verweisen.
- Ein Fremdschlüssel muss entweder den Wert eines existierenden Primärschlüssels enthalten oder `NULL` sein.
- Beispiel: In einer `Bestellungen`-Tabelle muss jeder `KundenID`-Fremdschlüssel entweder auf eine vorhandene `KundenID` in der `Kunden`-Tabelle verweisen oder `NULL` sein.
- Aktualisierungsweitergabe
- Beschreibung: Bestimmt, wie Änderungen an einem Datensatz in einer Tabelle auf verbundene Datensätze in anderen Tabellen übertragen werden.
- Mögliche Aktionen:
- Cascade Update: Aktualisiert automatisch alle entsprechenden Fremdschlüsselwerte.
- Restrict: Verhindert die Aktualisierung, wenn verknüpfte Datensätze existieren.
- Set Null: Setzt die Fremdschlüsselwerte auf `NULL`.
- Beispiel: Wenn die `KundenID` eines Kunden aktualisiert wird, werden alle zugehörigen `Bestellungen`-Datensätze ebenfalls aktualisiert (Cascade Update).
- Löschweitergabe
- Beschreibung: Bestimmt, wie das Löschen eines Datensatzes Auswirkungen auf verbundene Datensätze in anderen Tabellen hat.
- Mögliche Aktionen:
- Cascade Delete: Löscht automatisch alle verknüpften Datensätze.
- Restrict: Verhindert das Löschen, wenn verknüpfte Datensätze existieren.
- Set Null: Setzt die Fremdschlüsselwerte auf `NULL`.
- Beispiel: Wenn ein Kunde gelöscht wird, werden alle seine Bestellungen ebenfalls gelöscht (Cascade Delete).
- Primärschlüssel
- Beschreibung: Ein Attribut oder eine Kombination von Attributen, das jeden Datensatz eindeutig identifiziert.
- Eigenschaften:
- Eindeutigkeit: Jeder Wert des Primärschlüssels ist einzigartig.
- Nicht NULL: Ein Primärschlüsselwert darf nicht `NULL` sein.
- Unveränderlichkeit: Primärschlüsselwerte sollten sich nach der Erstellung nicht ändern.
- Beispiele:
- `KundenID` in der `Kunden`-Tabelle.
- `ISBN` für Bücher.
- Fremdschlüssel
- Beschreibung: Ein Attribut oder eine Kombination von Attributen in einer Tabelle, das auf den Primärschlüssel einer anderen Tabelle verweist.
- Zweck: Stellt Beziehungen zwischen Tabellen her und gewährleistet referenzielle Integrität.
- Beispiele:
- `KundenID` in der `Bestellungen`-Tabelle verweist auf `KundenID` in der `Kunden`-Tabelle.
- `AutorID` in der `BuchAutor`-Tabelle verweist auf `AutorID` in der `Autoren`-Tabelle.
3.3.16. Datenbankabfrage, Datenpflege
3.3.17. Datenbankabfragen
Datenbankabfragen sind Anfragen, die an die Datenbank gestellt werden, um bestimmte Daten abzurufen, zu ändern oder zu verwalten. Die bekannteste Sprache zur Durchführung von Datenbankabfragen ist SQL (Structured Query Language).
- Grundlegende Abfragetypen:
- Selektive Abfragen: Abrufen von Daten basierend auf bestimmten Kriterien.
- Manipulative Abfragen: Einfügen, Aktualisieren oder Löschen von Daten.
- Definitionale Abfragen: Erstellen, Ändern oder Löschen von Datenbankstrukturen wie Tabellen und Schemata.
3.3.18. Datenpflege
Datenpflege bezieht sich auf die Verwaltung und Aktualisierung der in der Datenbank gespeicherten Daten, um ihre Genauigkeit, Konsistenz und Relevanz sicherzustellen.
- Aktivitäten der Datenpflege:
- Einfügen von Daten: Hinzufügen neuer Datensätze.
- Aktualisieren von Daten: Ändern bestehender Datensätze.
- Löschen von Daten: Entfernen unerwünschter oder veralteter Datensätze.
- Datenbereinigung: Identifizieren und Beheben von Fehlern oder Inkonsistenzen in den Daten.
- Datensicherung: Regelmäßige Sicherung der Datenbank, um Datenverlust zu verhindern.
- Tools und Techniken:
- SQL-Statements: Für direkte Manipulation und Abfrage der Daten.
- Datenbankverwaltungssysteme (DBMS): Eingebaute Tools zur Verwaltung und Pflege der Daten.
- Automatisierte Skripte: Für wiederkehrende Datenpflegeaufgaben.
3.3.19. SQL-Syntax (Siehe Anhang Prüfungskatalog)
3.3.20. SQL (Structured Query Language)
SQL ist die standardisierte Sprache zur Verwaltung und Manipulation von relationalen Datenbanken. Sie ermöglicht das Definieren von Datenstrukturen, das Abfragen von Daten und das Durchführen von Transaktionen.
- Grundlegende Komponenten:
- DDL (Data Definition Language): Befehle zum Definieren von Datenstrukturen – z.B. `CREATE`, `ALTER`, `DROP`.
- DML (Data Manipulation Language): Befehle zum Manipulieren von Daten – z.B. `SELECT`, `INSERT`, `UPDATE`, `DELETE`.
- DCL (Data Control Language): Befehle zur Steuerung des Zugriffs – z.B. `GRANT`, `REVOKE`.
- TCL (Transaction Control Language): Befehle zur Steuerung von Transaktionen – z.B. `COMMIT`, `ROLLBACK`.
3.3.21. Grundlegende SQL-Anweisungen:**
3.3.22. SELECT-Anweisung
- Syntax: ```sql SELECT spalte1, spalte2, … FROM tabelle WHERE bedingung; ```
- Beschreibung: Abrufen spezifischer Daten aus einer Tabelle basierend auf bestimmten Bedingungen.
- Beispiele:
- Alle Daten einer Tabelle abrufen: ```sql SELECT * FROM Kunden; ```
- Bestimmte Spalten abrufen: ```sql SELECT Name, Adresse FROM Kunden; ```
- Daten mit Bedingungen abrufen: ```sql SELECT * FROM Bestellungen WHERE KundenID = 123; ```
3.3.23. INSERT-Anweisung
- Syntax: ```sql INSERT INTO tabelle (spalte1, spalte2, …) VALUES (wert1, wert2, …); ```
- Beschreibung: Einfügen neuer Datensätze in eine Tabelle.
- Beispiel: ```sql INSERT INTO Kunden (Name, Adresse, Telefon) VALUES (’Max Mustermann’, ’Musterstraße 1’, ’01234-567890’); ```
3.3.24. UPDATE-Anweisung
- Syntax: ```sql UPDATE tabelle SET spalte1 = wert1, spalte2 = wert2, … WHERE bedingung; ```
- Beschreibung: Aktualisieren bestehender Datensätze in einer Tabelle.
- Beispiel: ```sql UPDATE Kunden SET Adresse = ’Neue Musterstraße 2’ WHERE KundenID = 123; ```
3.3.25. DELETE-Anweisung
- Syntax: ```sql DELETE FROM tabelle WHERE bedingung; ```
- Beschreibung: Löschen von Datensätzen aus einer Tabelle basierend auf bestimmten Bedingungen.
- Beispiel: ```sql DELETE FROM Bestellungen WHERE BestellID = 456; ```
3.3.26. CREATE TABLE-Anweisung
- Syntax: ```sql CREATE TABLE tabelle ( spalte1 datatype constraints, spalte2 datatype constraints, … ); ```
- Beschreibung: Erstellen einer neuen Tabelle mit definierten Spalten und Datentypen.
- Beispiel: ```sql CREATE TABLE Kunden ( KundenID INT PRIMARY KEY, Name VARCHAR(100), Adresse VARCHAR(255), Telefon VARCHAR(20) ); ```
3.3.27. ALTER TABLE-Anweisung
- Syntax: ```sql ALTER TABLE tabelle ADD spalte datatype; ``` oder ```sql ALTER TABLE tabelle DROP COLUMN spalte; ```
- Beschreibung: Ändern der Struktur einer bestehenden Tabelle, z.B. Hinzufügen oder Entfernen von Spalten.
- Beispiele:
- Spalte hinzufügen: ```sql ALTER TABLE Kunden ADD Email VARCHAR(100); ```
- Spalte entfernen: ```sql ALTERTABLE Kunden DROP COLUMN Telefon; ```
3.3.28. DROP TABLE-Anweisung
- Syntax: ```sql DROP TABLE tabelle; ```
- Beschreibung: Löschen einer bestehenden Tabelle und aller darin enthaltenen Daten.
- Beispiel: ```sql DROP TABLE AlteKundenDaten; ```
3.3.29. SELECT-Anfragen über mehrere Tabellen
3.3.30. Joins
Joins werden verwendet, um Daten aus mehreren Tabellen basierend auf gemeinsamen Attributen zu kombinieren.
- INNER JOIN:
- Beschreibung: Gibt nur die Datensätze zurück, die in beiden Tabellen übereinstimmen.
- Syntax: ```sql SELECT A.spalte1, B.spalte2 FROM TabelleA A INNER JOIN TabelleB B ON A.gemeinsameSpalte = B.gemeinsameSpalte; ```
- Beispiel: ```sql SELECT Kunden.Name, Bestellungen.BestellID FROM Kunden INNER JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID; ```
- LEFT JOIN (LEFT OUTER JOIN):
- Beschreibung: Gibt alle Datensätze aus der linken Tabelle und die übereinstimmenden Datensätze aus der rechten Tabelle zurück. Nicht übereinstimmende Datensätze in der rechten Tabelle werden mit `NULL` ergänzt.
- Syntax: ```sql SELECT A.spalte1, B.spalte2 FROM TabelleA A LEFT JOIN TabelleB B ON A.gemeinsameSpalte = B.gemeinsameSpalte; ```
- Beispiel: ```sql SELECT Kunden.Name, Bestellungen.BestellID FROM Kunden LEFT JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID; ```
- RIGHT JOIN (RIGHT OUTER JOIN):
- Beschreibung: Gibt alle Datensätze aus der rechten Tabelle und die übereinstimmenden Datensätze aus der linken Tabelle zurück. Nicht übereinstimmende Datensätze in der linken Tabelle werden mit `NULL` ergänzt.
- Syntax: ```sql SELECT A.spalte1, B.spalte2 FROM TabelleA A RIGHT JOIN TabelleB B ON A.gemeinsameSpalte = B.gemeinsameSpalte; ```
- Beispiel: ```sql SELECT Kunden.Name, Bestellungen.BestellID FROM Kunden RIGHT JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID; ```
- FULL JOIN (FULL OUTER JOIN):
- Beschreibung: Kombiniert die Ergebnisse von LEFT JOIN und RIGHT JOIN. Gibt alle Datensätze aus beiden Tabellen zurück, wobei nicht übereinstimmende Datensätze mit `NULL` ergänzt werden.
- Syntax: ```sql SELECT A.spalte1, B.spalte2 FROM TabelleA A FULL OUTER JOIN TabelleB B ON A.gemeinsameSpalte = B.gemeinsameSpalte; ```
- Beispiel: ```sql SELECT Kunden.Name, Bestellungen.BestellID FROM Kunden FULL OUTER JOIN Bestellungen ON Kunden.KundenID = Bestellungen.KundenID; ```
3.3.31. Subqueries (Unterabfragen)
Subqueries sind Abfragen innerhalb anderer Abfragen und können in verschiedenen Klauseln wie `SELECT`, `FROM`, `WHERE` verwendet werden.
- Beispiel: ```sql SELECT Name FROM Kunden WHERE KundenID IN (SELECT KundenID FROM Bestellungen WHERE Bestellwert > 100); ```
3.3.32. Ausdrücke und Bedingungen
3.3.33. Ausdrücke
Ausdrücke sind Kombinationen von Literalen, Operatoren und Funktionaufrufen, die zur Berechnung von Werten verwendet werden.
- Typen von Ausdrücken:
- Arithmetische Ausdrücke: `SUM`, `AVG`, `COUNT`.
- Logische Ausdrücke: `AND`, `OR`, `NOT`.
- Vergleichsausdrücke: `=`, `<>`, `>`, `<`, `>=`, `<=`.
- Beispiel: ```sql SELECT Name, (Preis * Menge) AS Gesamtwert FROM Artikel; ```
3.3.34. Bedingungen
Bedingungen werden verwendet, um festzulegen, welche Datensätze in eine Abfrage einbezogen oder ausgeschlossen werden.
- Klauseln:
- WHERE: Definiert die Bedingung für die Auswahl von Datensätzen.
- HAVING: Definiert Bedingungen für aggregierte Daten nach Gruppenbildung.
- Operatoren:
- Vergleichsoperatoren: `=`, `<>`, `>`, `<`, `>=`, `<=`.
- Logische Operatoren: `AND`, `OR`, `NOT`.
- Spezielle Operatoren: `BETWEEN`, `LIKE`, `IN`, `IS NULL`.
- Beispiele:
- Auswahl von Kunden aus einer bestimmten Stadt: ```sql SELECT * FROM Kunden WHERE Stadt = ’Berlin’; ```
- Auswahl von Bestellungen mit einem Bestellwert zwischen 50 und 100: ```sql SELECT * FROM Bestellungen WHERE Bestellwert BETWEEN 50 AND 100; ```
3.3.35. Aggregat-Funktionen
Aggregat-Funktionen werden verwendet, um Berechnungen auf einer Gruppe von Werten durchzuführen und ein einzelnes Ergebnis zurückzugeben. Sie sind besonders nützlich in Kombination mit der `GROUP BY`-Klausel.
- Hauptfunktionen:
- COUNT(): Zählt die Anzahl der Datensätze. ```sql SELECT COUNT(*) FROM Kunden; ```
- SUM(): Summiert die Werte einer Spalte. ```sql SELECT SUM(Bestellwert) FROM Bestellungen; ```
- AVG(): Berechnet den Durchschnittswert einer Spalte. ```sql SELECT AVG(Preis) FROM Artikel; ```
- MIN(): Findet den kleinsten Wert in einer Spalte. ```sql SELECT MIN(Alter) FROM Kunden; ```
- MAX(): Findet den größten Wert in einer Spalte. ```sql SELECT MAX(Bestellwert) FROM Bestellungen; ```
- Verwendung mit GROUP BY: ```sql SELECT Stadt, COUNT(*) AS AnzahlKunden FROM Kunden GROUP BY Stadt; ```
- Verwendung mit HAVING: ```sql SELECT Stadt, COUNT() AS AnzahlKunden FROM Kunden GROUP BY Stadt HAVING COUNT() > 10; ```
3.3.36. OpenData, API-Schnittstellen
3.3.37. OpenData
OpenData bezeichnet öffentlich zugängliche Daten, die von Regierungen, Organisationen oder Einzelpersonen bereitgestellt werden. Diese Daten sind oft in maschinenlesbaren Formaten verfügbar und können von jedermann genutzt, weiterverbreitet und wiederverwendet werden.
- Merkmale:
- Zugänglichkeit: Daten sind frei verfügbar und zugänglich ohne Einschränkungen.
- Maschinenlesbarkeit: Daten sind in Formaten wie CSV, JSON, XML verfügbar.
- Lizenzierung: Oft unter offenen Lizenzen wie der Open Data Commons Attribution License.
- Anwendungsbereiche:
- Forschung: Wissenschaftler nutzen OpenData für Analysen und Studien.
- Unternehmen: Unternehmen verwenden OpenData zur Marktforschung und Produktentwicklung.
- Königliche Verwaltung: Verbesserung der Transparenz und Rechenschaftspflicht durch Veröffentlichung von Regierungsdaten.
- Beispiele:
- Bevölkerungsdaten, Wetterdaten, Verkehrsdaten, Umweltdaten.
3.3.38. API-Schnittstellen
APIs (Application Programming Interfaces) sind definierte Schnittstellen, die es verschiedenen Softwareanwendungen ermöglichen, miteinander zu kommunizieren und Daten auszutauschen. Sie spielen eine wesentliche Rolle bei der Integration von Systemen und der Erweiterung der Funktionalität von Anwendungen.
- Typen von APIs:
- REST (Representational State Transfer): Ein architektonischer Stil, der auf HTTP-Protokollen basiert und für seine Einfachheit und Skalierbarkeit bekannt ist.
- SOAP (Simple Object Access Protocol): Ein Protokoll für den Austausch strukturierter Informationen in Webdiensten.
- GraphQL: Eine Abfragesprache für APIs, die den Client mehr Kontrolle über die abgefragten Daten gibt.
- Funktionen von API-Schnittstellen:
- Datenzugriff: Ermöglicht den Zugriff auf Datenbanken und Backend-Systeme.
- Funktionserweiterung: Bietet zusätzliche Funktionalitäten für Anwendungen ohne interne Implementierung.
- Integration: Erleichtert die Verbindung zwischen verschiedenen Diensten und Plattformen.
- Beispiele:
- Twitter API: Ermöglicht den Zugriff auf Tweets, Benutzerprofile und andere Twitter-Daten.
- Google Maps API: Bietet Kartenfunktionen und Standortinformationen für Anwendungen.
- OpenWeatherMap API: Stellt Wetterdaten für die Integration in verschiedene Anwendungen bereit.