TCP Segmente zusammenfügen
Hallo miteinander
Meine Frage betrifft den Fall dass z.B. ein grosses Bild per HTTP von einem Server angefragt wird. Aufgrund der MTU wird der TCP Stack des Server die Pakete so aufteilen dass sie über die Leitung gehen.
Beim Client wird dank TCP dem aufrufenden Programm (hier Browser) die TCP Segmente in richtiger Reihenfolge präsentieren. Nun die Frage:
Wie weiss der Client (hier Browser) wie er die einzelnen Datenfragmente welche er vom OSI Stack hochgeliefert bekommt zu behandeln hat, sodass die "Grenzen" stimmen. Die Clientapplikation wird für den GET Request einen Socket eröffnet haben und dort werden die Daten dann abgeliefert. Aber wie weiss er nun: Jetzt sind alle Daten da um ein sinnvolles Muster zu ergeben. Hier also die grosse Datei welche in kleinen Stücken versendet wurde.
Wenn mir da jemand helfen könnte wäre ich dankbar.
Vielen Dank
Meine Frage betrifft den Fall dass z.B. ein grosses Bild per HTTP von einem Server angefragt wird. Aufgrund der MTU wird der TCP Stack des Server die Pakete so aufteilen dass sie über die Leitung gehen.
Beim Client wird dank TCP dem aufrufenden Programm (hier Browser) die TCP Segmente in richtiger Reihenfolge präsentieren. Nun die Frage:
Wie weiss der Client (hier Browser) wie er die einzelnen Datenfragmente welche er vom OSI Stack hochgeliefert bekommt zu behandeln hat, sodass die "Grenzen" stimmen. Die Clientapplikation wird für den GET Request einen Socket eröffnet haben und dort werden die Daten dann abgeliefert. Aber wie weiss er nun: Jetzt sind alle Daten da um ein sinnvolles Muster zu ergeben. Hier also die grosse Datei welche in kleinen Stücken versendet wurde.
Wenn mir da jemand helfen könnte wäre ich dankbar.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 280128
Url: https://administrator.de/contentid/280128
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo,
für das zusammensetzen ist die Klient-Applikation wie zum Beispiel der Browser
selber zuständig, also das dort ein Bild angezeigt wird.
Weg von der Seite die Du aufrufst bis zu Dir und somit kann ein Paket was später los geschickt
wurde dennoch als erstes bei Dir eintreffen und von daher werden diese Pakete Nummeriert
und dann weiß das TCP/IP Protokoll welches Paket nicht oder eben schon vorhanden ist.
Eventuell gehen Pakete unterwegs auch verloren weil eine Verbindung zusammenbricht
und müssen neu angefordert werden dazu muss man natürlich auch wissen welche
Paketnummer man noch einmal anfordern muss.
das TCP/IP Protokoll zuständig.
Gruß
Dobby
für das zusammensetzen ist die Klient-Applikation wie zum Beispiel der Browser
selber zuständig, also das dort ein Bild angezeigt wird.
Beim Client wird dank TCP dem aufrufenden Programm (hier Browser) die TCP
Segmente in richtiger Reihenfolge präsentieren. Nun die Frage:
Von wegen in Reihenfolge präsentiert! Die Datenpakete nehmen einen völlig autonomenSegmente in richtiger Reihenfolge präsentieren. Nun die Frage:
Weg von der Seite die Du aufrufst bis zu Dir und somit kann ein Paket was später los geschickt
wurde dennoch als erstes bei Dir eintreffen und von daher werden diese Pakete Nummeriert
und dann weiß das TCP/IP Protokoll welches Paket nicht oder eben schon vorhanden ist.
Eventuell gehen Pakete unterwegs auch verloren weil eine Verbindung zusammenbricht
und müssen neu angefordert werden dazu muss man natürlich auch wissen welche
Paketnummer man noch einmal anfordern muss.
Meine Frage betrifft den Fall dass z.B. ein grosses Bild per HTTP von einem Server angefragt wird.
Aufgrund der MTU wird der TCP Stack des Server die Pakete so aufteilen dass sie über die Leitung
gehen.
Der Stack ist vor Ort im OS oder einer Applikation implementiert und für den Transport ist dannAufgrund der MTU wird der TCP Stack des Server die Pakete so aufteilen dass sie über die Leitung
gehen.
das TCP/IP Protokoll zuständig.
Gruß
Dobby
behalten und ggf. die Reihenfolge ändern bis es stimmt.
Man kann sich das auch so vorstellen, dass nicht einfach etwas "abgeholt" wird, sondern manveranlasst das einem die Pakete zugeschickt werden und dann kann man sich das noch in etwa
so vorstellen als wenn der Sender der Pakete einem sagt;
"Ich schicke jetzt das Paket 1005 von 55612 Paketen los"
und wenn das zu lange dauert, wartet derjenige, der das ganze angefordert hat nicht
so lange wie möglich, sondern nur eine vorgegebene Zeitspanne und wenn das Paket
dann nicht eingetroffen ist wird es einfach noch einmal angefordert. Bis man dann
55612 von 55612 Paketen empfangen hat.
Gruß
Dobby
Moin,
das ist ganz einfach. TCP benuzt eien Sequenznummer, die angibt, an welcher stelle des Streams sich das gerade veschickte Paket befindet. Damit kann der Empfänger ohne weiteres die Reihenfolge eines TCP-Streams wieder richtig sortieren.
Genaueres kannst Du im RFC oder z.B. bei Netzmafia nachlesen. Google ist da auch geeignet, Dir Lesematerial zuzuführen.
lks
PS: "Überlappende" TCP-Pakete boten mal gute Möglichkeiten eine Zielkiste zu übernehmen. Abr die meisten TCP/IP-Stacks haben das inzwischen korrigiert.
das ist ganz einfach. TCP benuzt eien Sequenznummer, die angibt, an welcher stelle des Streams sich das gerade veschickte Paket befindet. Damit kann der Empfänger ohne weiteres die Reihenfolge eines TCP-Streams wieder richtig sortieren.
Genaueres kannst Du im RFC oder z.B. bei Netzmafia nachlesen. Google ist da auch geeignet, Dir Lesematerial zuzuführen.
lks
PS: "Überlappende" TCP-Pakete boten mal gute Möglichkeiten eine Zielkiste zu übernehmen. Abr die meisten TCP/IP-Stacks haben das inzwischen korrigiert.
Hallo,
für de Sequenznummer gibt es eine gute Erklärung der Uni Bielefeld...
Sequence Number, Acknowledgement Number:
Die Sequenznummer und die Bestätigungsnummer sind jeweils 32-Bit-Zahlen. Die Nummern geben die Stellung der Daten des Segments innerhalb des in der Verbindung ausgetauschten Datenstroms an. Die Sequenznummer gilt in Senderichtung, die Bestätigungsnummer für Empfangsquittungen. Jeder der beiden TCP-Verbindungspartner generiert beim Verbindungsaufbau eine Sequenznummer, die sich während des Zeitraums der Verbindung nicht wiederholen darf. Dies ist allerdings durch den großen Zahlenraum von 232 wohl ausreichend gesichert. Diese Nummern werden beim Verbindungsaufbau ausgetauscht und gegenseitig quittiert. Bei der Datenübertragung wird die Sequenznummer vom Absender jeweils um die Anzahl der bereits gesendeten Bytes erhöht. Mit der Quittungsnummer gibt der Empfänger an, bis zu welchem Byte er die Daten bereits korrekt empfangen hat. Die Nummer gibt allerdings nicht an, welches Byte zuletzt korrekt empfangen wurde, sondern welches Byte als nächstes zu erwarten ist.
Quelle
Und eine etwas generellere Erklärung findest du hier
Hier das ganze zum Thema TCP
brammer
für de Sequenznummer gibt es eine gute Erklärung der Uni Bielefeld...
Sequence Number, Acknowledgement Number:
Die Sequenznummer und die Bestätigungsnummer sind jeweils 32-Bit-Zahlen. Die Nummern geben die Stellung der Daten des Segments innerhalb des in der Verbindung ausgetauschten Datenstroms an. Die Sequenznummer gilt in Senderichtung, die Bestätigungsnummer für Empfangsquittungen. Jeder der beiden TCP-Verbindungspartner generiert beim Verbindungsaufbau eine Sequenznummer, die sich während des Zeitraums der Verbindung nicht wiederholen darf. Dies ist allerdings durch den großen Zahlenraum von 232 wohl ausreichend gesichert. Diese Nummern werden beim Verbindungsaufbau ausgetauscht und gegenseitig quittiert. Bei der Datenübertragung wird die Sequenznummer vom Absender jeweils um die Anzahl der bereits gesendeten Bytes erhöht. Mit der Quittungsnummer gibt der Empfänger an, bis zu welchem Byte er die Daten bereits korrekt empfangen hat. Die Nummer gibt allerdings nicht an, welches Byte zuletzt korrekt empfangen wurde, sondern welches Byte als nächstes zu erwarten ist.
Quelle
Und eine etwas generellere Erklärung findest du hier
Hier das ganze zum Thema TCP
brammer
Hallo,
da kann ich @Lochkartenstanzer nur Recht geben....
Wer seinen Thread abschließt mit dem Satz
möchte informationen zu seinem Problem haben.
Deine Fragestellung basiert auf deiner Interpretation eines TCP Paketes durch das OSI Modell.
Die Sequenznummer, die dir anscheinend nicht voll umfänglich verständlich war, war ja letztendlich die Lösung.
Wenn du deine Frage präzise beantwortet haben möchtest dann stelle die Frage bitte entsprechend präzise.
Im übrigen finde ich es prersönlich immer sinnvoll auch mal über den Tellerrand zu schauen, um damit evtl. einen besseren Überblick über das hinterfragte Problem zu bekommen
Wenn du das nicht möchtest solltest du deine Fragen auf die Antworten "ja" oder "nein" ausrichten.
@Frank hat das im About der Webseite sehr passend zusammengefasst...
brammer
da kann ich @Lochkartenstanzer nur Recht geben....
Wer seinen Thread abschließt mit dem Satz
Wenn mir da jemand helfen könnte wäre ich dankbar.
möchte informationen zu seinem Problem haben.
Deine Fragestellung basiert auf deiner Interpretation eines TCP Paketes durch das OSI Modell.
Die Sequenznummer, die dir anscheinend nicht voll umfänglich verständlich war, war ja letztendlich die Lösung.
Wenn du deine Frage präzise beantwortet haben möchtest dann stelle die Frage bitte entsprechend präzise.
Im übrigen finde ich es prersönlich immer sinnvoll auch mal über den Tellerrand zu schauen, um damit evtl. einen besseren Überblick über das hinterfragte Problem zu bekommen
Wenn du das nicht möchtest solltest du deine Fragen auf die Antworten "ja" oder "nein" ausrichten.
@Frank hat das im About der Webseite sehr passend zusammengefasst...
Helfe gemeinschaftlich anderen Menschen mit Deinem Wissen und Deiner Erfahrung weiter! Erweitere Deinen Horizont, treffe andere Administratoren > in unseren Inhalten und tausche Dich über das interne Nachrichtensystem mit ihnen aus. Schreibe eigene Anleitungen, Tipps oder erstelle hilfreiche
Erfahrungsberichte über Produkte, die Du schon kennst. Um auf möglichst viele Beiträge, Probleme oder Fragen antworten zu können, brauchen wir
Dich!
https://administrator.de/aboutus/Erfahrungsberichte über Produkte, die Du schon kennst. Um auf möglichst viele Beiträge, Probleme oder Fragen antworten zu können, brauchen wir
Dich!
brammer