Abschnittsübersicht

    • 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:

      PortDienstBeschreibungsimulierbar in Filius
      80 HTTP Webserver unverschlüsselt *
      443 HTTPS Webserver verschlüsselt
      25 SMTP Mailversand *
      110 POP3 Zugriff auf den Mailserver *
      143 IMAP Zugriff auf den Mailserver
      993 IMAPS Zugriff auf den Mailserver verschlüsselt
      25 DNS Auflösung von Domainnamen in IP-Adressen *
      67/68   DHCP Automatischer Bezug von IP-Adressen *