Unsere aktueller Arbeitsstand zum "Nachbau" des Internets scheint schon sehr vollständig zu sein. Uns fehlen aber auf jeden Fall noch die Anwendungen für die Nutzung des Internets, wie beispielsweise der Web-Dienst WWW.
Wenn ein Webclient mithilfe des Protokolls HTTP (hypertext transfer protocol) die Standardseite des Webservers abfragt, ergibt sich folgendes Sequenzdiagramm.
Sind Bilder enthalten, so werden diese nach dem gleichen Schema übermittelt: Anfrage → Antwort.
Doch damit ergeben sich neue Probleme.
Problem 1: Wie ist mit Daten umzugehen, die größer sind, als die erlaubte Paketgröße?
Problem 2: Was passiert, wenn IP-Datenpakete verloren gehen oder aufgrund abgelaufener Lebenszeit (time to live - TTL) gelöscht werden?
Problem 3: Was passiert, wenn die IP-Datenpakete in der falschen Reihenfolge oder mehrfach ankommen?
Problem 4: Wie erfolgt die Zuordnung des Pakets zum Dienst, wenn auf einem Server mehrere Dienste angeboten werden?
Lösung: Wir benötigen zwischen der Anwendungs- und der Internetschicht eine weitere Ebene, mit
garantierter Datenübertragung
Einhaltung der korrekten Reihenfolge der Daten
Unterstützung beliebig großer Datenübertragungen
einer Zuordnung Paket - Dienst
Diese Ebene wird in der Transportschicht realisiert. Die zwei Protokolle TCP und UDP stehen uns darin zur Verfügung.
Protokolle der Transportschicht: TCP und UDP
TCP - transmission control protocol
TCP garantiert, dass Segmente vollständig ankommen, in der korrekten Reihenfolge zusammengebaut und an die Anwendung gereicht werden (zuverlässig). Verlorene oder unbestätigte TCP-Segmente sendet der Sender erneut. Eine TCP-Verbindung wird mithilfe des TCP-Handshakes geöffnet und geschlossen (verbindungsorientiert). Der TCP-Header gibt neben dem Port auch die Sequenznummer des aktuellen Segments (SEQ - Sequence) und die Sequenznummer des nächsten erwarteten Segments (ACK - Acknowledgement).
Zu große Datenpakete werden durch TCP in kleiner Pakete zerlegt. Dabei bekommt jedes Paket eine Sequenznummer und die Bestätigung enthält als ACK die um die Byteanzahl vermehrte Sequenznummer. Dadurch wird die Reihenfolge der Teilpakete gekonnt bestimmt.
Beispiel für das Abrufen der Standard-Website auf einem Server in Filius
Protokollmitschnitt
Sequenzdiagramm
UDP - user datagram protocol
Die Datenübertragungen findet ohne vorherigen Verbindungsaufbau (verbindungslos) statt, es erfolgt keine Empfangsbestätigung, verloren gegangene Pakete werden nicht angefordert (unzuverlässig). UDP kann maximal 64 KByte groß sein; das Protokoll es kümmert sich nicht um die Zerlegung der Daten in die richtigen Paketgrößen, sondern überlässt dies dem Internet Protokoll. Es erfolgt keine Garantie, dass die Pakete in der richtigen Reihenfolge ankommen. Die Daten sind manipulierbar.
Das Protokoll wird für die Namensauflösung oder als Transportprotokoll für Video/Audiostreaming verwendet.
Adressierung in der Transportschicht: Portnummern
Das letzte Problem lässt sich erneut mithilfe einer Adressierung lösen. Jede Anwendung/jeder Dienst erhält eine Portnummer. Im neuen Header wird die Portnummer genannt und damit die Zustellung zum zugehörigen Dienst festgelegt. Bei TCP und UDP sind die Portnummern 16 Bits lange Binärzahlen. Es gibt folgende übliche Zuordnung: