2010-05-21 4 views
5

Ich würde für Hilfe dankbar sein, zu verstehen, wie lange es eine TCP-Verbindung aufzubauen dauert, wenn ich die Ping RoundTripTip haben:TCP-Connection Establishment = Wie wird die Zeit basierend auf Ping RRT gemessen?

Laut Wikipedia wird eine TCP-Verbindung in drei Schritten hergestellt werden:

1.SYN-SENT (=>CLIENT TO SERVER) 
2.SYN/ACK-RECEIVED (=>SERVER TO CLIENT) 
3.ACK-SENT (=>CLIENT TO SERVER) 

Meine Fragen:

  1. ist es richtig, dass die dritte Übertragung (ACK-SENT) wird noch keine Nutzlast tragen (meine Daten), sondern nur für die Verbindung establishement verwendet wird (Dies führt zu dem Schluss, dass. das vierte Paket wird das erste Paket sein, das irgendeine Nutzlast hält ....)

  2. Ist es richtig anzunehmen, dass, wenn mein Ping RoundTripTime 20 Millisekunden ist, das in dem oben gegebenen Beispiel der TCP Connection Establishment würde mindestens 30 Millisekunden, bevor Daten zwischen Client und Server übertragen werden können?

Vielen Dank

Tom

+0

Wenn Sie Ping-Zeit in Richtung Host messen können, warum messen Sie nicht auch die Verbindung? Alles, was Sie tun müssen, ist Zeit den Verbindungsaufruf in Ihrem Code im Grunde. –

Antwort

4

Diese Dinge grundsätzlich korrekt sind, obwohl # 2 geht davon aus, dass die Umlaufzeit symmetrisch ist.

+1

+1. Routing im Internet ist im Allgemeinen selten symmetrisch. Innerhalb eines Unternehmens ist es eine andere Geschichte. –

0

Um dies zu messen, die "Zeit bis Syn/ACK" genannt (was NICHT die Zeit ist, eine Verbindung herzustellen - die Verbindung ist nur halb offen, wenn in diesem Zustand, benötigen Sie das 3. Paket bestätigen die Einrichtung zu prüfen es etabliert), benötigen Sie in der Regel professionelle Tools, die ihren eigenen TCP-Stack enthalten, die diese Art der Messung ermöglicht. Die am häufigsten verwendete ist die Spirent Avalanche, aber Sie haben auch Ixia's IxLoad oder BreakingPoint Systems Box (BPS wurde jetzt von Ixia BTW erworben).

Beachten Sie, dass das dritte Paket keine Daten enthält, und das gilt auch für die ersten beiden. Sie sind nur Syn und Syn + Ack markiert (das sind TCP-Flags) und enthalten keine Anwendungsdaten. Dieser anfängliche Austausch, der als Drei-Wege-Handshake bezeichnet wird, verursacht daher einen gewissen Overhead, weshalb TCP in Echtzeitanwendungen (Sprache, Live-Video usw.) typischerweise nicht verwendet wird.

Auch wie gesagt, können Sie nicht davon ausgehen, dass Latenz = RTT/2. Es ist in der Tat sehr schwierig, die Einweglatenz über Schicht 3 (IP) zu messen - und Sie befinden sich bereits auf Schicht 4 (TCP). Dieser Blog-Eintrag behandelt die Herausforderung: http://synsynack.wordpress.com/2012/04/09/realistic-latency-measurement-in-the-application-layers/

Verwandte Themen