Установление TCP-соединения = Как измерить время на основе Ping RRT? - PullRequest
6 голосов
/ 21 мая 2010

Я был бы признателен за помощь, понимая, сколько времени требуется для установления TCP-соединения, когда у меня есть Ping RoundTripTip:

Согласно Википедии, TCP-соединение будет установлено в три этапа:

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

Мои вопросы:

  1. Правильно ли, что третья передача (ACK-SENT) еще не будет нести никакой полезной нагрузки (мои данные), но используется только для установления соединения. (Это приводит к заключению, что четвертый пакет будет быть первым пакетом, который будет содержать любую полезную нагрузку ....)

  2. Правильно ли предположить, что когда мой Ping RoundTripTime равен 20 миллисекундам, что в приведенном выше примере установлению TCP-соединения потребуется по меньшей мере 30 миллисекунд, прежде чем любые данные могут быть переданы между клиентом и сервером

Большое спасибо

Tom

Ответы [ 2 ]

4 голосов
/ 21 мая 2010

Эти вещи в основном правильные, хотя №2 предполагает, что время прохождения сигнала симметрично.

0 голосов
/ 12 ноября 2012

Чтобы измерить это, называется «Время до синхронизации / ACK» (которое НЕ является временем для установления соединения - соединение находится только наполовину открыто, когда в этом состоянии вам необходим третий пакет, подтверждающий установление, чтобы рассмотреть его установлено), вам обычно нужны профессиональные инструменты, которые включают собственный стек TCP, позволяющий проводить такие измерения. Наиболее часто используемая из них называется Spirent Avalanche , но у вас также есть IxLoad Ixia или BreakingPoint Systems (BPS теперь приобретен Ixia, кстати).

Обратите внимание, что да, в третьем пакете не будет никаких данных, и это также верно для первых двух. Они помечены только как Syn и Syn + Ack (это флаги TCP) и не содержат данных приложения. Этот первоначальный обмен, называемый Трехсторонним рукопожатием, поэтому вызывает некоторые издержки, поэтому TCP обычно не используется в приложениях реального времени (голос, живое видео и т. Д.).

Также, как указано, вы не можете предполагать, что Latency = RTT / 2. На самом деле очень сложно измерить задержку в одном направлении выше уровня 3 (IP) - и вы уже находитесь на уровне 4 (TCP) здесь. Этот блог подробно описывает проблему этого: http://synsynack.wordpress.com/2012/04/09/realistic-latency-measurement-in-the-application-layers/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...