Grundlagen der Rechnernetze Transportschicht Übersicht • • • • • Einfacher Demultiplexer (UDP) Transmission Control Protocol (TCP) TCP‐Überlastkontrolle TCP‐Überlastvermeidung TCP‐Varianten SS 2014 Grundlagen der Rechnernetze ‐ Transportschicht 2 Einfacher Demultiplexer (UDP) SS 2014 Grundlagen der Rechnernetze ‐ Transportschicht 3 Demultiplexing aber sonst keine weitere Funktionalität über IP Sender‐Host Prozess Empfänger‐Host Prozess 1 Prozess 2 Prozess 3 Queues IP‐Paket Quelle: 192.100.120.40 Ziel: 192.200.133.100 Daten: UDP‐Paket SrcPort DstPort Length Checksum Data SS 2014 Demultiplexing mittels Portnummern Port‐Nummern sind 16 Bits lang. Damit gibt es 216 = 65536 Ankommende unterschiedliche Ports. Pakete Global eindeutige Adresse eines Prozesses: <Port,Host> UDP Grundlagen der Rechnernetze ‐ Transportschicht 4 Woher erfährt der Sender die Port‐Nummer des Empfängers? Möglichkeit 1: vorab festgelegte Port‐Nummern. • Zum Beispiel Port 53 für DNS, Port 25 für Mail‐Server oder Port 517 für Unix‐ Talk‐Programm • Festgelegte Portnummern werden in einem RFC periodisch aktualisiert • Unter vielen Unix‐Systemen findet man die festen Portnummern auch unter /etc/services Möglichkeit 2: Port‐Mapper • Nur ein festgelegter Port über den man den Port‐Mapper anspricht • Client fragt erst den Port‐Mapper nach dem richtigen Port für einen bestimmten Dienst • Der rückgegebene Port wird dann für die Kontaktierung des eigentlichen Services verwendet Bemerkung: häufig werden nach dem ersten Kontakt zwischen Client und Server ein privater Port für deren Session ausgemacht. Host 1 Port‐Mapper Client Host 2 Server SS 2014 Grundlagen der Rechnernetze ‐ Transportschicht 5 Transmission Control Protocol (TCP) SS 2014 Grundlagen der Rechnernetze ‐ Transportschicht 6 Übersicht Anwendungsprozess A TCP TCP Empfangs‐ puffer Sende‐ puffer IP … Segment Segment Sende‐ puffer Empfangs‐ puffer IP SS 2014 schreibe Bytes … lese Bytes lese Bytes … schreibe Bytes Anwendungsprozess B Segment Segment Segment Segment Grundlagen der Rechnernetze ‐ Transportschicht 7 Übersicht Anwendungsprozess A Darüber hinaus: • Flusskontrolle (vermeidet, dass TCP Sender den Empfänger überlastet) Sende‐ Empfangs‐ puffer puffer • Lastkontrolle (vermeidet, dass Sender zu viel Last im Netz IP … erzeugt) TCP Empfangs‐ puffer Sende‐ puffer IP Segment Segment SS 2014 Bytes … lese Bytes … schreibe Bytes Grundfunktion Anwendungsprozess B • Zuverlässige Auslieferung • eines Full‐Duplex • Byte‐Streams in schreibe • lese korrekter Reihenfolge Bytes Segment Segment Wie auch bei UDP: Segment Segment • Port‐Mechanismus Grundlagen der Rechnernetze ‐ Transportschicht 8 Segmentnummerierung und ACKs … Byte‐Stream Segment 1 Segment 2 Segment 3 Bytes: 0…1023 Bytes: 1024…2047 Bytes: 2048…5000 Sequenz‐ nummer: Sequenz‐ nummer: Sequenz‐ nummer: 2000 3024 4028 Daten (SequenceNum) Sender Acknowledgment (SequenceNum+1) Initiale Sequenznummer: 1999 SS 2014 Empfänger Grundlagen der Rechnernetze ‐ Transportschicht Bestätigt wird immer das nächste erwartete Byte 9 Sliding‐Window Empfangende Anwendung Sendende Anwendung LastByteWritten TCP … LastByteAcked … LastByteSent Sendepuffer TCP LastByteRead … … NextByteExpected LastByteRcvd Empfangspuffer MaxSendBuffer = Größe des Sendepuffers MaxRcvBuffer = Größe des Empfangspuffers TCP‐Acknowledgements sind kummulativ (Kummulative ACKs) – bestätigt wird die Nummer des ersten noch fehlenden Bytes. Alle vorigen Bytes wurden schon vollständig empfangen. SS 2014 Grundlagen der Rechnernetze ‐ Transportschicht 10 Flusskontrolle Empfänger Sender l=LastByteWritten … TCP … v=LastByteAcked w=LastByteSent MSB = MaxSendBuffer Zur Vermeidung eines Empfangs‐ pufferüberlaufes muss gelten: Hierzu wird dem Sender das folgende „AdvertisedWindow“ a mitgeteilt: x=LastByteRead … TCP … NextByteExpected y=LastByteRcvd MRB=MaxRcvBuffer Damit ist das Maximum an Daten, welches der Sender versenden darf (genannt „EffectiveWindow“ e): Anwendung, die z Bytes schreibt wird blockiert, wenn: Auf Senderseite muss stets gelten: SS 2014 Grundlagen der Rechnernetze ‐ Transportschicht 11 Protokollablauf Verbindungsaufbau Datenübertragungsphase Verbindungsabbau Bildquelle: en.wikipedia.org/wiki/Transmission_Control_Protocol SS 2014 Grundlagen der Rechnernetze ‐ Transportschicht 12