Протокол TCP: хост временно недоступен

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

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

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

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

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


person w2lame    schedule 19.09.2010    source источник
comment
Какой у Вас вопрос? (Я думаю, вам нужно прочитать об окнах TCP.)   -  person crazyscot    schedule 19.09.2010


Ответы (2)


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

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

person caf    schedule 19.09.2010

Когда вы говорите "временно отключается", что вы имеете в виду? Я вижу два разных сценария.

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

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

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

Сценарий 2: сервер выходит из строя

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

person Vatine    schedule 19.09.2010
comment
Я говорю о Сценарии 1. @ Я думаю, это говорит о том, что и ваши 1, и 2 могут быть правы? - person w2lame; 19.09.2010
comment
это вот моя проблема .. оба кажутся 2 брыт .. но у меня 2 кончить с 1 дем .. или объяснить, в каком случае .. что должно быть правильно ... - person w2lame; 19.09.2010
comment
@ abhishekgupta92: Что произойдет, зависит от того, что вы имеете в виду под "отказом сервера". Если это просто промежуточная сеть, может произойти либо ваш 1, либо ваш 2, в зависимости от целого ряда переменных. - person Vatine; 20.09.2010
comment
Что ж, тогда это будет либо ваш 1, либо ваш 2, в зависимости от размера окна TCP и того, что было подтверждено последним. - person Vatine; 20.09.2010