Skip to content

Instantly share code, notes, and snippets.

@sk22
Last active March 20, 2017 12:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sk22/e181f948225594760b0db9fc3362519a to your computer and use it in GitHub Desktop.
Save sk22/e181f948225594760b0db9fc3362519a to your computer and use it in GitHub Desktop.
NVS-Test am 20.3.2017

OSI Layer 4: Transport Layer

Zweck

  • Temporäre Communication-Session
  • Services
    • Verbindungsorientierter Data Stream
    • Ausfallsicherheit
    • Flusskontrolle
    • Multiplexing

Multiplexing

  • Verwaltung unterschiedlicher Verbindungen
  • Gleichzeitiges Senden und Empfangen
  • Zuordnung der Applikationen durch eindeutige Einträge im Header
    • Portnummer

Portnummern

  • Source Port
    • Vom Sender dynamisch ausgewählt
    • Client → mehrere HTTP Requests → jede Verbindung hat Source Port
  • Destination Port
    • Identifikation einer Applikation/Services auf Server
    • Server kann mehrere Services zur gleichen Zeit anbieten

Gruppen

Internet Assigned Numbers Authority (IANA) verantwortlich

  • 0 - 1023: Well-known Ports
  • 1024 - 49151: Registered Ports
  • 49152 - 65535: Private and/or Dynamic Ports

netstat

  • Verifizierung aktiver Verbindungen
  • Listet verwendete Protokolle (lokale und fremde Adresse und Portnummer)

UDP

User Datagram Protocol

Dienste

  • Trennung der Applikationen vom Datentransport
  • Multiplexing des IP-Stacks
  • Minimale Kontrollmechanismen, geringer Overhead zu puren IP-Paketen
  • Keine sonstigen Leistungen (Flusskontrolle oder Fehlererkennung)
    • Verbindungskontrolle liegt bei Applikationen

Header (8 Octets)

  1. 16 Bit (2 Octets) Source Port
  2. 16 Bit (2 Octets) Destination Port
  3. 16 Bit (2 Octets) Länge
  4. 16 Bit (2 Octets) Prüfsumme

TCP

Transmission Control Protocol

Dienste

  • Aufbau einer Transportverbindung
  • Sicherer Datentransfer
  • Möglichkeit zum Multiplexing
  • Fehlererkennung, Flusskontrolle, Supervisor-Funktionen
  • Kontrollierter Abbau einer Transportverbindung

Funktionen

  • Ende-zu-Ende-Kontrolle:
    • sicherer Transfer durch Bestätigung jedes übertragenen Bytes
    • Wiederholung von nicht angekommenen Daten
  • Gesicherter Verbindungsaufbau durch 3-way Handshake
  • Aufrechterhaltung der Verbindung während Datenübertragung
  • Gesichterter Verbindungsabbau
    • ggf. Fehlermeldung an die Applikation
  • Flusskontrolle: Sender passt Output an Kapazität
    • Empfänger signalisiert Sender Zustand seines Eingangspuffers
  • Multiplexing → mehrere Verbindungen gleichzeitig
  • Virtuelle Leitungsverbindung über paketvermittelte Netze
    • TCP bringt Datenpakete beim Empfänger in richtige Reihenfolge

Header

  • TCP-Segmente werden von IP als zusammenhangslose IP-Pakete übetragen
  • Segmentierung: Zerlegung der Daten des Quellrechners in nummerierte Segmente
  • Jedes Datensegment wird mit TCP-Header versehen (min. 20 Byte)
  • Maximale Segmentgröße: 65535 Byte
  • Source Port: Portnummer des Anwendungsprozesses am Quellrechner
  • Destination Port: Portnummer des Anwendungsprozesses am Zielrechner
  • Sequence Number
    • Nummerierung von gesendeten Datensegmenten (Senderichtung)
    • Verbindungsaufbau mit eindeutiger Anfangs-Sequenznummer
    • Darf sich in der TTL-Zeit der IP-Pakete nicht wiederholen
  • Acknowledgement Number
    • Quittungsnummer in der Empfangsrichtung
    • Bestätigung von empfangenen Datensegmenten (Byte-Pointer der korrekten Daten)
  • Data Offset: Länge des TCP-Headers
  • Control Flags (6 Bit)
    • URG: Urgent Pointer ist gültig → Zeiger auf Urgent-Daten direkt nach TCP-Header
    • ACK: Quittungsnummer ist gültig
    • PSH: Push-Funktion: alle Daten werden im Sendepuffer übergeben
    • RST: Reset der TCP-Verbindung
    • SYN: Request zum Verbindungsaufbau (Synchronize)
    • FIN: Unidirektionaler TCP-Verbindungsabbau → Ende der Übertragung
  • Window: Fenstergröße, Flusskontrolle und Sliding-Window-Prinzip
  • Checksum: Berechnete Prüfsumme für übergebene TCP-Header und Daten
  • Optionen: Angabe von Service-Optionen

Allgemein

  • TCP Timeouts
    • Kein gleichzeitiger Verbindungsaufbau zwischen zwei Systemen
    • Nach Timeout kann der Sender keinen mehrfachen Verbindungsaufbau anfordern
    • Datenaustausch nach Verbindungsaufbau nach Timeout durch Wiederholung der Segment-Übertragung
  • Retransmission Time:
    • Quittung vom Empfänger über die erhaltenen Segmente nach RTT (Round-Trip Time)
    • Neuberechnung RTT für jedes TCP-Segment je nach aktueller Netzbelastung
  • Window Size (WSIZE): Größe des TCP-Empfangspuffers in Byte
  • Maximum Segment Size (MSS): max. Wert des TCP-Sendepuffers (MSS < WSIZE)

Verbindungsablauf

Verbindungsablauf

Verbindungsaufbau

Three Way Handshake: Synchronisation beider Seiten mit drei Nachrichten

ACK und SEQ

  • SEQ Senderseite ↔ ACK Empfangsseite
  • ACK-Nummer
    • Kern des Verbindungsablaufes (ACK-Flag muss gesetzt sein)
    • Pointer auf nächstes Datenbyte, auf das gewartet wird
    • ACK-Nummer = empfangene SEQ-Nummer + Länge des TCP-Segments + 1

Verbindungsabbau

Eingeleitet von beiden kommunizierenden Anwendungsprozessen Abbau nacheinander, jede TCP-Instanz verhindert Verlust unquittierter Daten

Maximum Segment Lifetime (MSL)

Interner Timeout-Algorithmus beim Verbindungsabbau

Übertragung und Fehlerbehebung

Übertragung und Fehlerbehebung Wenn kein ACK nach Ablauf der RTT angekommen ist, wird nochmal gesendet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment