В протоколе TCP конкретный процесс взаимодействия А и В друг с другом

 TCP — это протокол , ориентированный на соединение . Сторонам связи необходимо установить соединение, прежде чем они смогут передавать данные . В протоколе TCP процесс связи между A и B выглядит следующим образом:

1. Установить соединение (трехстороннее рукопожатие)

A отправляет SYN -пакет B , запрашивая установление соединения с B, после получения SYN-пакета B отправляет SYN+ACK -пакет в качестве ответа , и, наконец, A возвращает ACK B в качестве ответа , указывая, что A получил B Данные отправлены, на данный момент соединение установлено

2. Взаимодействие

После того, как соединение установлено, А может отправить данные В. А делит данные для отправки на несколько сегментов данных . Каждый сегмент данных имеет порядковый номер , указывающий позицию первого байта сегмента данных во всем потоке байтов . В После получения данных, отправленных A, он отправит ACK в качестве ответа.В этом пакете ACK есть порядковый номер подтверждения , который является порядковым номером последнего байта, отправленного A + 1, что указывает на то, что он ожидает получить порядковый номер следующего байта.

Повысить эффективность

Чтобы еще больше повысить эффективность, у нас будет механизм скользящего окна , отложенный ответ и дополнительный ответ , Скользящее окно может отправлять пакет данных без ожидания , использовать то же время для ожидания этой группы ACK и отправлять данные непосредственно без ожидания Максимальное значение называется размером окна . Чем больше окно, тем выше эффективность передачи. Размер окна определяется в зависимости от возможностей обработки приемника и возможностей обработки промежуточного узла . Задержанный ответ позволяет приемник должен сначала обработать некоторые данные. Затем вернуть ACK, что может увеличить окно , а ответ с задержкой также может вернуть меньше ACK, что сэкономит некоторые ресурсы . Ответ совмещения может объединить данные, которые изначально были отправлены в нескольких пакетах , в один ( при условии, что время отправки одинаковое), что экономит некоторые ресурсы и повышает эффективность передачи.

Избегайте перегрузки сети и задержек

Конечно, чтобы избежать перегрузки сети и задержки в сети, размер окна будет ограничен.В настоящее время существуют такие механизмы, как управление потоком и контроль перегрузки.Управление потоком учитывает возможности обработки получателя и сообщает отправитель оставшееся место в размере буфера получателя , чтобы отправитель мог настроить размер окна.Контроль перегрузки учитывает вычислительную мощность оборудования промежуточного узла сети и получает разумную пропускную способность промежуточного узла путем экспериментов , а отправитель затем настраивает размер окна соответственно

Обработка потери пакетов во время связи

Если пакет потерян во время процесса связи, будет механизм повторной передачи по тайм-ауту . После потери пакета отправитель не получит ACK от получателя. В это время отправитель будет ждать в течение периода времени (2MSL). ) Если это время превышается, пакет данных будет повторно отправлен только сейчас . При интенсивной передаче данных с использованием скользящего окна повторная передача с тайм-аутом станет быстрой повторной передачей . Когда получатель получает три последовательных числа подтверждения от отправителя , он повторно отправит данные, запрошенные номером подтверждения.

Обработка исключений во время связи

Если происходит сбой процесса , например, происходит сбой процесса A, он немедленно отправляет FIN на B, чтобы отключить соединение . В это время будут запущены четыре волны , но четыре волны могут быть не завершены . Поскольку соединение был отключен , A не может получить FIN от B, а ACK возвращает ACK для B. Он может только ждать, пока время ожидания отключится , а затем закрыться после сбоя. волновые операции.Если хост выключен/сетевой кабель сломан, откройте , в это время не может запускать четыре волны, можно только дождаться закрытия тайм-аута

3. Отключиться (четыре раза помахать)

Когда A отправит все данные, он отправит пакет данных FIN в качестве метки окончания. После того, как B получит пакет данных FIN, он отправит пакет данных ACK в качестве ответа , указывающий, что он получил FIN от A, а затем B также отправит данные FIN. После получения FIN , A отправляет ACK в качестве ответа , указывая, что FIN от B был получен и соединение закрыто.

Guess you like

Origin blog.csdn.net/qq_62712350/article/details/130039945