stevg Geschrieben 9. November 2003 Teilen Geschrieben 9. November 2003 hallo. ich habe hier gerade etwas über "Windowing" and "Acknowledgment" im TCP/IP Transport Layer gelesen, aber irgendwie wiederspricht sich da etwas: erst wurde folgende aussage gemacht: Data packets must be delivered to the recipient in the same order in which they were transmitted to have a reliable, connection-oriented data transfer. hier wiederspricht sich der autor einbisschen: Because time is available after the sender finishes transmitting the data packet and before the sender finishes processing any received acknowledgment, this interval is used for transmitting more data. und hier haut das garnicht mehr hin: If packet 5 does not arrive at the destination, the receiver acknowledges with a request to resend packet 5. The sender resends packet 5 and then receives an acknowledgment to continue with the transmission of packet 7 erst schreib er das die packete nacheinander gesendet und empfangen werden müssen - sprich immer die richtige reihenfolge einhalten müssen - und dann schreibt er dass wenn packet 5 nicht bestehtigt wurde dieses noch mal gesendet wird obwohl packet 6 schon gesendet wurde damit die reinfolge nicht mehr eingehalten wird. kann mir mir jemand sagen was ich davon halten soll ? (hoffe es ist klar was ich meine) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stevg Geschrieben 9. November 2003 Autor Teilen Geschrieben 9. November 2003 oder werden packet 5 , 6 an verschieden ports gesendet ? das würde ja heisen das zwei unterschiedliche sequenzen bestehen und der vorgänger von von 6 wäre nicht 5 sondern 4 und nachfolger von 5 wäre nicht 6 sondern 7. ist das sie lösung des problems ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 9. November 2003 Teilen Geschrieben 9. November 2003 Hallo, Die Daten werden natürlich nicht an verschiedene Ports gesendet, sondern beziehen sich auf eine einzelne Punkt zu Punkt Kommunikation. Da nur das Paket #5 verloren gegangen ist, besteht kein Grund Paket #6 neu zu übermitteln (da dieses bereits empfangen wurde). Es reicht also, ab Paket #7 Daten zu übertragen. Das sechste Paket wurde bereits vor dem Empfang des Resend-Requests auf Sender-Seite zum Empfänger übertragen. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stevg Geschrieben 9. November 2003 Autor Teilen Geschrieben 9. November 2003 Original geschrieben von nic_power Hallo, Die Daten werden natürlich nicht an verschiedene Ports gesendet, sondern beziehen sich auf eine einzelne Punkt zu Punkt Kommunikation. wieso natürlich ? oder hat es (das 'natürlich') keine bedeutung ? und das: Data packets must be delivered to the recipient in the same order in which they were transmitted ... diese bedingung ist doch nicht erfüllt wenn es sich um eine einzelne Punkt zu Punkt Kommunikation - oder doch ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 10. November 2003 Teilen Geschrieben 10. November 2003 Hallo, eine TCP-Verbindung bezieht sich _immer_ auf zwei Kommunikationspartner (Anwendungen), die über einen festen Port miteinander kommunizieren. Wenn Deine Anwendung auf Port 23 erwartet, dann müssen diese Daten auch an diesen Port gesendet werden. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stevg Geschrieben 10. November 2003 Autor Teilen Geschrieben 10. November 2003 mh ... das war mir soweit klar. am besten wir lassen's jetzt dabei. trotzdem danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 11. November 2003 Teilen Geschrieben 11. November 2003 Hallo, nochmal kurz zur Erläuterung. Du musst zwischen der TCP-Implementierung und der Sichtweise der Anwendung unterscheiden. TCP sichert zu, dass Daten in der Reihenfolge bei der Anwendung eintreffen, in der sie abgesendet wurden (d.h. read() liefert die Daten in der korrekten Reihenfolge zurück). Dazu wird auf TCP-Ebene eine Flusskontrolle implementiert, die unter anderem die Mechanismen Sliding-Window, Retransmission, Segmente usw. verwendet. Vereinfacht ausgedrückt funktioniert das Ganze wie folgt: Gehen wir mal davon aus, dass die Segmente 512 Byte gross sind. D.h. Der Sender schickt die Segmente 1, 2,3 und 4 auf den Weg. Auf Empfängerseite werden diese als Daten bei einen read() auf Anwendungsseite an die Anwendung ausgeliefert. Nun empfängt der Sender das Segment mit der Nummer 6. Für ihn bedeutet das, dass das Segment mit der Sequenz-Nummer 5 verloren gegangen ist (eigentlich hätte ja erst Nummer 5 eintreffen müssen). Segment 6 wird zwischengespeichert, für 5 wird eine Retransmission angefordert. Wurde das 5 Segment erfolgreich empfangen, so können im nächsten read() 1024 Bytes an die Anwendung geliefert werden (nämlich die Segmente 5 und 6), der Sender kann mit Segment 7 weiter machen. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
stevg Geschrieben 15. November 2003 Autor Teilen Geschrieben 15. November 2003 achso - die daten müssen also nur beim applictaion-layer in der richtigen reihen folge ankommen ? danke. (korigier mich wenn ich flasch liege !) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.