SYN находится только в начале.
ACK находится на последующих сегментах в любом направлении. ACK также определяет размер окна. Например, если размер окна равен 100, отправитель может отправить 100 сегментов, прежде чем он ожидает получить ACK. Например, если отправитель отправляет 100 сегментов, но сегмент 50 теряется, то получатель получит 1-49 и 51-100. Получатель затем ACK для 50 (следующий сегмент, который он ожидает) и установит размер окна на 1. Отправитель повторно отправит 1 сегмент с порядковым номером 50. Затем получатель будет ACK для 101 и снова установит размер окна на большее число.
Оба фактически являются полями в заголовке TCP и могут быть отправлены с данными, хотя SYN и первый ACK обычно не содержат данных.
Так что ни один из описанных вами сценариев не совсем верен. Первый на самом деле ближе к реальности, но все пакеты данных после SYN действительно должны включать ACK, а также поле номера подтверждения, которое идентифицирует номер следующего ожидаемого пакета.
Конец сеанса также включает в себя рукопожатия с пакетами с флагом FIN и связанными с ними ACK.
Обмениваемые порядковые номера используются для идентификации потерянных пакетов и включения механизма повторной попытки, а также для повторной сборки всего потока пакетов в правильном порядке.
Кроме того, если это первый случай, есть ли какие-либо преимущества UDP по сравнению с TCP, если вы просто сохраняете соединение открытым в течение длительного периода времени?
С UDP вы не можете просто поддерживать соединение открытым в течение длительного периода времени. Нет подключения.
Эта последовательность флагов SYN / ACK / FIN - это то, что устанавливает соединение.
В UDP отсутствуют SYN или ACK, поэтому связь является односторонней, доставка не гарантируется, а порядок не сохраняется. Но у него меньше накладных расходов, поэтому он полезен, когда скорость важнее надежности, например, при потоковой передаче мультимедиа.
Это еще немного упрощено, но это лучшее, что я могу сделать на данный момент.
Подробнее об этом можно прочитать в статье в Википедии о TCP и, конечно же, в RFC.
person
Don Roby
schedule
30.08.2010