Grundlagen der Rechnernetze

Werbung
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
Herunterladen