Middle
Erzählen Sie mir von der Transportschicht (transport layer) des TCP/IP-Modells.
sobes.tech KI
Antwort von AI
Die TCP/IP-Transportschicht stellt die Kommunikation zwischen Prozessen auf verschiedenen Hosts bereit. Die Hauptaufgaben:
- Identifikation von Anwendungen/Prozessen auf dem Host (über Ports).
- Bereitstellung von Datenübertragungsdiensten:
- Zuverlässige, geordnete Übertragung (TCP).
- Unzuverlässige, ungesicherte Übertragung (UDP).
Zwei Hauptprotokolle:
- Transmission Control Protocol (TCP):
- Verbindungsorientiert.
- Garantiert die Zustellung von Paketen, erhält die Reihenfolge, steuert den Fluss und verwaltet Überlastungen.
- Wird für Anwendungen verwendet, die eine zuverlässige Übertragung erfordern (HTTP, FTP, SMTP).
- User Datagram Protocol (UDP):
- Ohne Verbindung.
- Garantiert nicht die Zustellung, Reihenfolge oder Flusskontrolle.
- Niedrige Latenz, geeignet für zeitkritische Anwendungen, bei denen ein kleiner Datenverlust akzeptabel ist (DNS, VoIP, Streaming).
TCP-Segmente enthalten Felder für: Quell-/Zielports, Sequenznummern, Bestätigungsnummern, Flags (SYN, ACK, FIN), Prüfsumme.
UDP-Datagramme enthalten Felder für: Quell-/Zielports, Länge und Prüfsumme.
Ports: 16-Bit-Zahlen, die für die Multiplexierung/Demultiplexierung von Daten zwischen Prozessen verwendet werden.
- Well-known ports (0-1023): Reserviert für Standarddienste (80 für HTTP, 443 für HTTPS, 22 für SSH).
- Registered ports (1024-49151): Für private Anwendungen, die bei IANA registriert sind.
- Dynamic/Private ports (49152-65535): Für Clients bei ausgehenden Verbindungen.
Beispiel für die Herstellung einer TCP-Verbindung (Three-way Handshake):
- Der Client sendet ein Segment mit dem SYN-Flag und einer initialen Sequenznummer.
- Der Server erhält SYN, antwortet mit einem Segment mit SYN- und ACK-Flags, seiner initialen Sequenznummer und einer ACK-Nummer, die client_seq + 1 entspricht.
- Der Client erhält SYN+ACK, antwortet mit einem Segment mit ACK-Flag und einer ACK-Nummer, die server_seq + 1 ist. Die Verbindung ist hergestellt.
// Beispiel für eine TCP-Header-Struktur (vereinfachte Version)
struct tcp_header {
unsigned short src_port; // Quellport
unsigned short dest_port; // Zielport
unsigned int seq_num; // Sequenznummer
unsigned int ack_num; // Bestätigungsnummer
unsigned short flags; // Flags (SYN, ACK, FIN usw.)
// andere Felder...
};
// Beispiel für eine UDP-Header-Struktur (vereinfachte Version)
struct udp_header {
unsigned short src_port; // Quellport
unsigned short dest_port; // Zielport
unsigned short length; // Länge des UDP-Datagramms
unsigned short checksum; // Prüfsumme
};