Назад | Перейти на главную страницу

Установление TCP-соединения Продолжительность трехстороннего рукопожатия => Отношение ко времени проверки связи?

в соответствии с: http://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Tcp-handshake.svg/250px-Tcp-handshake.svg.png

1.) Существует трехстороннее установление связи TCP. Учитывая, что у меня время пинга составляет 100 миллисекунд, могу ли я использовать время пинга для вычисления (в среднем), сколько времени потребуется для установления TCP-соединения?

2.) Учитывая, что у меня время пинга составляет 100 миллисекунд, правильно ли, что для этого потребуется не менее 150 миллисекунд? Или это будет 100 миллисекунд + одна микросекунда (микросекунда предназначена для отправки третьего ACK)? ИЛИ может ли ACK уже содержать данные?

3.) Я не понимаю (на графике выше), когда Клиент знает, что его третий ACK прошел успешно, и теперь он может начать отправлять обычные данные. Я полностью понимаю SYN (1), затем SYN ACK (2), а затем ACK (3), но как клиент узнает, что третий ACK был отправлен на сервер, и клиент может начать отправлять дополнительную информацию? Или, как предполагалось выше, третий ACK уже может содержать данные?

Большое спасибо! Йенс

Вы можете использовать время ping для отслеживания базового соединения и задержки соединения, но я бы не стал связывать ping со скоростью TCP-соединения, потому что он использует другой протокол (ICMP). В частности, некоторые вышестоящие провайдеры будут отдавать пакетам ICMP более высокий приоритет, чем TCP, чтобы обеспечить благоприятное время проверки связи.

Ответьте на ваш первый вопрос.

Да, время пинга может дать вам представление о времени, затраченном на установление TCP-соединения.

Второй вопрос. Ты прав. При задержке в 100 мсек время соединения составит около 300 мс. Вот математика для этого

  1. Клиент (SYN) -> Сервер = 50 мс
  2. Сервер (SYN + ACK) ---> клиент = 50 мс
  3. Клиент (ACK + данные) ---> Сервер = 50 мс

В третьем вопросе. Обычно ACK, отправленный клиентом, также включает в себя данные. TCP имеет значение тайм-аута, связанное с ним. Если в течение этого времени клиент не получит ACK от сервера, он повторно передаст данные. Второй случай - когда клиент находится в процессе передачи. Предположим, что клиент отправил пакеты с 1 по 10, но получил ACK только для пакетов с 1 по 7, тогда клиент начнет повторную передачу, начиная с 8-го пакета.

Второй вопрос. Следует ответить по первому вопросу

Посмотри на эта страница. В конце трехстороннего рукопожатия и клиент, и сервер получили подтверждение соединения. Обмен данными может начаться.