Sobes.tech
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):

  1. Der Client sendet ein Segment mit dem SYN-Flag und einer initialen Sequenznummer.
  2. 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.
  3. 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
};