Протокол TCP: Хост временно недоступен - PullRequest
0 голосов
/ 19 сентября 2010

Скажем, наш клиент отправляет пакеты с постоянной скоростью.Теперь, если сервер временно отключается, возможны две ситуации

(мы используем протокол TCP)

1) Пакет не будет доставлен на сервер.Следовательно, другие пакеты в линии должны ждать ответа сервера.И связь может осуществляться оттуда.

2) Пакет не будет доставлен и будет повторен, но другие пакеты не будут затронуты этим пакетом.

Скажем, пакеты A, B и C должны быть переданы.Когда я отправляю пакет A, сервер временно отключается, тогда пакеты B и C будут отправлены в то время, в которое они изначально были запланированы, или они будут отправлены после получения сервером A.

Ответы [ 2 ]

2 голосов
/ 19 сентября 2010

TCP является потоковым протоколом.Это означает, что если на одном TCP-соединении вы отправляете A, а затем B, то получатель никогда не увидит B, пока не увидит A.

Если вы отправите A и B более отдельные TCP-соединения, тогда B может прибыть до A.

1 голос
/ 19 сентября 2010

Когда вы говорите «временно понижается», что вы имеете в виду?Я вижу два разных сценария.

Сценарий 1. Соединение между сервером и клиентом прервано.

Пакет A отправляется в пути.К сожалению, поскольку он прокладывает свой путь через кабели, один кабель обрывается и А теряется.Между тем, в зависимости от точного состояния оконного алгоритма TCP, пакеты B и C могут отправляться или не отправляться (поскольку это будет зависеть от размера окна, размера A / B7C и количества отправленных пока неподтвержденных байтов),Я полагаю, это говорит о том, что ваши «1» и «2» могут быть правильными?

Если B и / или C были отправлены, A не будет подтверждено, пока оно не будет отправлено повторно.Если они были отправлены после прибытия A, сервер получит подтверждение до конца последнего полученного в последовательности кадра (то есть C, если это так).

Сценарий 2: Сервер отключаетсяdown

Если это произойдет, все состояние TCP будет потеряно, и после перезагрузки сервера потребуется восстановить соединения.

...