Daten per TCP/IP übertragen. Einfach erklärt Patrick Boekhoven https://www.youtube.com/watch?v=ff5RrlD3cB0 Transkript (automatisch erstellt) 0:00 Hinter TCP, dem Transmission Control Protocol, verbirgt sich ein Protokoll, das definiert, auf welche Art und Weisen Daten zwischen verschiedenen Netzwerkkomponenten 0:08 ausgetauscht werden. Wir reden hier oft vom TCP-Protokoll, also vom Internet Protocol, aber das sind zwei unterschiedliche Protokolle mit unterschiedlichen 0:18 Aufgaben auf unterschiedlichen Schichten, wenn wir vom OSI-Schichtenmodell reden. Und wo IP zum Einsatz kommt, das gucken wir uns gleich nochmal an. Aber jetzt erstmal zu TCP. 0:26 Bei TCP reden wir von einem verbindungsorientierten Protokoll. Verbindungsorientiert bedeutet, dass ihr eine Eins-zu-Eins-Verbindung habt. Also in diesem 0:35 Fall von unserem Teilnehmer 1 hier, Lutka Siard, der Kontakt zu unserem Webserver aufnehmen will. Und diese Eins-zu-Eins-Verbindung funktioniert natürlich in beide Richtungen. Also einerseits 0:44 von dem PC, mit dem Lutka Si den Webserver kontaktiert, und natürlich auch in dem Sinne, dass der Webserver Nachrichten an Lutgas PC senden kann. Und diese Verbindung, 0:54 die entsteht durch einen sogenannten Handshake. Also die beiden Teilnehmer in diesem Netzwerk, die schütteln sich einmal die Hände. Und das Ganze verläuft folgendermaßen: 1:03 Der Computer von Lutka Sieber sagt: "Hey, ich möchte jetzt eine Verbindung aufbauen. Und dementsprechend schicke ich dir jetzt ein sogenanntes SYN-Paket mit einer Sequenznummer." 1:12 Und der Server empfängt dieses SYN-Paket. Und nachdem er das bekommen hat, schickt er ein SYN-ACK-Paket zurück. Und dieses SYN-ACK-Paket enthält eine eigens generierte Sequenznummer, 1:22 also eine Sequenznummer, die der Server dann selber generiert hat. In diesem Fall ist das jetzt die 200. Und zusätzlich enthält dieses SYN-ACK-Paket noch ein ACK, also 1:31 eine Bestätigung. Und beim ACK finden wir dann die Sequenznummer vor, die wir als nächstes erwarten. Und jetzt nehmen wir mal für unseren einfachen Fall an, wir haben gerade die Sequenznummer 100 1:41 genutzt. Und wir reden jetzt davon, dass wir nur ein Zeichen haben. Dann finden wir beim ACK die Sequenznummer 101 vor. Das kann in der Realität ein bisschen komplexer sein, 1:49 beziehungsweise es ist möglich, dass die eine oder andere Nummer übersprungen wird, aber das Prinzip bleibt gleich. Vereinfacht gesagt, ich verschicke nicht nur eins, sondern zehn Zeichen in diesem 1:58 Paket. Dann würde sich die nächste Sequenznummer, die ich dann erwarte, um 10 erhöhen. Und Lutgas PC erhält dieses SYN-ACK-Paket jetzt und sagt: "Danke, ich habe das Angebot angenommen. Und 2:08 wir können ab jetzt Daten austauschen." Das heißt der Handshake wird bestätigt und synchronisiert. Und damit senden wir ein ACK-Paket zurück an den Server. Und in diesem ACK-Paket erhöht 2:18 dann der Klient seine Sequenznummer jeweils um eins, also auf 101. Und das enthält dann die nächste erwartete Sequenznummer des Servers, also in diesem Fall die 201. Und in 2:30 diesem Moment ist die Verbindung hergestellt und beide Geräte sind bereit Daten auszutauschen. Heißt also für uns, wenn wir von einem verbindungsorientierten Protokoll reden, 2:38 müssen wir eine Verbindung aufbauen und wir müssen sie natürlich auch abbauen, dazu kommen wir später noch. Das bedeutet, wir haben natürlich einen gewissen Overhead, 2:45 aber das Ganze bringt uns auch viele, viele Vorteile. Wir können so natürlich eine effektive Fehlerbehandlung gewährleisten. Und wie genau das funktioniert, das gucken wir uns gleich an, 2:54 beziehungsweise das gucken wir uns jetzt an, wenn wir einmal über die Datenübertragung sprechen. Also, was bedeutet, wenn dieser Handshake dann abgeschlossen ist? Dann geht's ans 3:01 Eingemachte. Heißt, ihr habt jetzt sozusagen eine Standleitung zwischen dem PC von Lutka Siard und dem Webserver. Und hier sollen jetzt Daten von A nach B und natürlich von B nach A übertragen 3:11 werden. Und diese Daten, beziehungsweise diese Datenpakete, die können manchmal zu groß sein, als dass man sie einzeln schickt. Also müssen diese zerteilt werden. Und hier reden wir von 3:21 kleinen Segmenten. Das heißt, wir teilen unsere Daten auf kleine Segmente auf. Und jedes dieser Segmente erhält eine einzelne Sequenznummer, also wie in unserem Beispiel hier 150 bis 153 3:33 für vier verschiedene Segmente. Und diese Segmente, die werden dann übers Internet, also von A nach B transportiert, und können natürlich über verschiedene 3:41 Wege zu verschiedenen Zeitpunkten beim Ziel, also in dem Fall beim Webserver, ankommen. Und dadurch, dass diese einzelnen Segmente einzelne Sequenznummern haben, 3:51 ist es für den Empfänger möglich, diese Segmente wieder genau in der Reihenfolge zusammenzubauen, wie sie zusammengebaut werden müssen, zumindest sofern sie richtig ankommen. Denn ihr habt 3:59 gerade gesehen, das Segment mit der Sequenznummer 153 ist verloren gegangen. Und so etwas kann auf verschiedenen Wegen im Internet passieren. Und diese Wegfindung, also dieses Routing, 4:09 das ist hier Aufgabe von IP, also vom Internet Protocol. Genauso wie diese logische Adressierung. Also bei der IP-Adressierung da reden wir davon, 4:18 dass unsere Geräte in unserem Netzwerk über eine IP-Adresse eindeutig identifiziert werden. Und wir können dann einzelne Topologien, also einzelne Netze, bilden. 4:26 Aber nun zurück zu Lutka's PC. Und dieser erwartet, dass für jedes verschickte Segment jetzt auch eine einzelne Bestätigung erhält, und zwar in Form eines ACK, also in dem Fall schickt 4:35 ja Lutga's PC verschiedene Daten zum Webserver und erwartet dann, dass eine Bestätigung kommt, nach dem Motto "Ich habe die Daten erhalten, also alles ist gut". Und diese ACKs, die haben dann 4:46 auch einzelne Nummern, und die geben dann, wie wir das vorhin gesehen haben, im Wesentlichen an, welche Sequenznummer der Empfänger als nächstes erwartet. Das heißt, für diese Segmente mit der 4:55 Sequenznummer von 150 bis 153 würde der Webserver dann ACKs mit 151 bis 154 zurückschicken. Was dazu führt, dass die Gegenseite weiß, dass Ihr Paket angekommen ist. Aber manchmal kommt das Paket 5:09 natürlich nicht an. Das heißt, der Webserver würde auch kein ACK zurückschicken, wie in unserem Fall, wo das Segment mit der Sequenznummer 153 verloren gegangen ist. Also würde der PC von Lutka bei 5:19 diesem Segment das ACK nach einer gewissen Zeit wiederholen und dann hoffen, dass das ACK ankommt. Das bedeutet, ihr könnt somit in der Regel sicher sein, sofern die Verbindung besteht, 5:28 dass Daten von A nach B ankommen und der Erhalt am Ende auch bestätigt wird. Und natürlich sind diese Pakete, die der Webserver sendet, 5:35 auch mit eigenen Sequenznummern vom Webserver selber ausgestattet. Und unsere Bits und Bytes, die kommen jetzt in der richtigen Reihenfolge, also wieder zusammengesetzt, beim Empfänger an, 5:44 also in dem Fall beim Webserver. Und diese ganzen Segmente, die enthalten jeweils einen einzelnen TCP-Header. Und der enthält neben Sequenznummer etc. auch den sogenannten Quell- und 5:55 den Zielport. Und die sind wichtig, weil diese zusammengesetzten Datenströme, die wir jetzt haben, auch an die Anwendung übergeben werden müssen, beziehungsweise an die richtige Anwendung. 6:04 Und wenn ihr jetzt mal auf euren PC schaut, da habt ihr wahrscheinlich auch verschiedene Anwendungen geöffnet, wie ein Browser oder ein E-Mailprogramm, etc. Und es können natürlich 6:11 verschiedene Segmente für verschiedene Programme ankommen. Und jedes dieser Programme kriegt dann einen sogenannten Port zugewiesen. Und genauso ist das hier auch beim Server, 6:20 der verschiedene Dienste bereitstellt. Und jeder dieser Dienste, also dieser Netzwerkdienste, erhält einen Port, über den dieser Netzwerkdienst dann selber erreichbar ist. Und dieser Zielport, 6:31 der wird dann ausgelesen, und dann werden die Daten an die richtige Anwendung übergeben. Und wenn wir das jetzt auf unser Beispiel übertragen, da bietet unser Server noch 6:38 mehrere Netzwerkdienste an, fungiert ja einmal als E-Mailserver und bietet auch noch eine Datenbank an. Und natürlich müssen unsere Daten dann an den konkreten Netzwerkdienst weitergeleitet 6:49 werden. Und genau das ist hier der Fall. Hier wird der Zielport ausgelesen, und dann wird das Ganze an die konkrete Anwendung übergeben. Zur Begriffsklärung an dieser Stelle nochmal: Wenn wir 6:58 die IP in Kombination mit einem Port ansteuern, dann sprechen wir übrigens von einem Socket. Alles hat irgendwann mal ein Ende, auch so eine Verbindung. Und die kann von beiden Seiten zu 7:08 jedem Zeitpunkt beendet werden. Und nehmen wir jetzt mal an, Lutka's PC hat keine Lust mehr und sagt: "Ich möchte diese Verbindung jetzt beenden." Dann sendet er ein sogenanntes FIN-Paket 7:17 an den Server mit einer Sequenznummer. Und die Sequenznummer lautet in diesem Fall 500. Und der Server, der empfängt dieses FIN-Paket und bestätigt den Erhalt, sendet ein 7:27 Paket zurück. Und dieses Paket, in dem Fall die darauffolgende beziehungsweise die erwartete Sequenznummer, also in diesem Fall 501. Und dann sendet der Webserver noch ein eigenes FIN-Paket 7:38 mit seiner eigenen Sequenznummer, also in diesem Fall 800. Und Lutka's PC empfängt dieses Paket dann vom Webserver und bestätigt den Halt und sendet noch mal ein ACK-Paket zurück mit der 7:49 Sequenznummer 801. Und damit ist die Verbindung zwischen den beiden dann wirklich beendet. So, damit sind wir auch durch. Hier links findet ihr das Video zu 7:57 UDP, und hier rechts habe ich mein Video verlinkt, wie RAID-Systeme funktionieren. Schaut euch eins der beiden auf jeden Fall als nächstes an, und ich freue mich natürlich jedes Mal über ein Like oder 8:06 ein Abo. Also, wenn euch das Ganze gefallen hat, wenn euch das Ganze einen Mehrwert geboten hat, dann würde ich mich sehr über euren Support freuen. Alles Gute und bis zum nächsten Mal!