Transportprotokolle - prototyping-lab/technisches-grundlagenprojekt GitHub Wiki
Transportprotokolle werden auf der vierten Schicht des OSI-Modells (Transport Layer) genutzt.
OSI-Modell
TCP
TCP steht für "Transmission Control Protocol". Das TCP ist ein verbindungsorientiertes Protokoll, welches sicherstellt, dass Datenpakete von A nach B kommen.
TCP header: 20 bytes
Verbindungsaufbau
Um die Verbindung von einem Client zu einem Server aufzubauen sind beim TCP ein paar Schritte erforderlich. Der sogenannte "3-Way Handshake":
Als Erstes sendet der Client einen Verbindungswunsch über eine SYN-Flag (SYN für synchronisation) an den Server. Der Server empfängt dieses Signal und falls er Daten senden möchte, sendet er eine Bestätigung durch eine ACK-Flag (ACK für Acknolegement) zurück, gefolgt durch eine SYN-Flag, um die Erlaubnis des Clients zu bekommen. Der Client empfängt beide Flags und schickt daraufhin auch eine ACK-Flag zum Server, um seine Anfrage wiederum zu bestätigen. Danach ist der "3-Way Handshake" abgeschlossen und Datenpakete können übertragen werden.
Sequenzen
Daten die versendet werden, werden in Segmente aufgeteilt. Beispielsweise wird eine kleine Datei in drei Teile aufgeteilt. Wenn jetzt Segment 1, 2 und 3 versendet werden und dabei Segment 2 verloren geht, erkennt das der Client und schaltet einen Puffer ein, der kurz wartet, ob Segment 2 noch nachkommt. Wenn nicht, geht eine Flag zurück zum Server, die ihm mitteilt, dass Segment 2 fehlt. Daraufhin kann der Server das einzelne Segment 2, ohne die anderen Segmente nachschicken und so die Datei vervollständigen. Die Segmente haben alle eine sequence number, in unserem Beispiel wären das 1,2 und 3. In der Realität sind diese Nummern aber viel größer. Dateisegmente haben größere sequence numbers, Flags hingegen immer nur + 1.
Verbindungsabbau
Wenn alle Datenpakete vom Client empfangen wurden, sendet dieser eine FIN-Flag (FIN für finish) an den Server. Der Server schickt daraufhin eine ACK-Flag und auch eine FIN-Flag an den Client zurück. Beendet wird das ganze noch mit einer ACK-Flag vom Client an den Server und der Datenaustausch ist beendet.
Protokolle die TCP nutzen
Beispiele hierfür sind HTTP oder SNTP. Beide Protokolle enthalten Texte. Deshalb wird hierfür TCP genutzt, da keine Daten verloren gehen dürfen. Wenn beispielsweise bei einem Chat Daten verloren gingen, würden Nachrichten fehlen oder in falscher Reihenfolge ankommen.
Geschichte
Entwickler: Robert E. Kahn & Vinton G Cerf Erstel Standardisierung von als RFC 793 im Jahr 1981
UDP
UDP steht für "User Datagram Protocol". Das UDP ist ein verbindungsloses Protokoll und kann somit nicht sicherstellen, dass verschickte Daten eins zu eins beim Empfänger ankommen. Es könne Fehler in Datenpaketen auftreten oder Teile verloren gehen. Fehlerhafte Daten können außerdem nicht korrigiert werden.
Vorteile zu TCP
UDP hat gegenüber TCP den großen Vorteil, dass es viel kleinere Datenpaket-Größen hat. Die Pakete von UDP sind bis zu 60% kleiner als die von TCP, da UDP einen Header von 8 bytes hat.
Beispiel
Man könnte Daten, die normalerweise über TCP transportiert werden theoretisch auch über UDP senden. Wenn man dann aber eine Datei aus dem Internet downloadet, kann es gut möglich sein, dass ein Fehler in einer Datei bei der Übertragung auftritt. Dieser Fehler kann aber nicht wie bei TCP korrigiert werden, sondern bleibt bestehen. Das führt nach abgeschlossenem Download evtl. dazu, dass sich die Datei nicht öffnen lässt und somit ist der ganze Download umsonst.
Geschichte
Die Entwicklung begann 1977, da man ein einfacheres Protokoll für den Transport von Sprache benötigte. Denn über TCP gab es oft hohe Latenzen weil TCP Datenpakete verzögert oder in falscher Reihenfolge ankommen können.
Alles Verstanden? Dann teste dein Wissen hier!
Text: | Leonard Bild: Agnes | Quiz: Vivienne