Подтвердить что ты не робот

Каковы правила повторной передачи для TCP?

Статья в Википедии о TCP указывает, что IP-пакеты, транспортирующие сегменты TCP, могут иногда теряться и что TCP "запрашивает повторную передачу потерянных данных",.

Каковы правила для запроса повторной передачи потерянных данных? На какой временной частоте выполняются запросы повторной передачи? Есть ли верхняя граница числа? Есть ли у клиента возможность указывать серверу, чтобы он забыл обо всем сегменте TCP, для которого часть отсутствовала, когда IP-пакет пропал?

4b9b3361

Ответ 1

Какие именно правила для запроса повторной передачи потерянных данных?

Приемник не запрашивает повторную передачу. Отправитель ожидает ACK для байтового диапазона, отправленного клиенту, а когда он не получен, повторно передает пакеты через определенный интервал. Это ARQ (автоматический повторный запрос). Существует несколько способов реализации.

Stop-and-wait ARQ
Go-Back-N ARQ
Selective Repeat ARQ

подробно описаны в RFC 3366.

На какой временной частоте выполняются запросы повторной передачи?

Повторные передачи - время и количество попыток не применяются стандартом. Он реализуется по-разному различными операционными системами, но методология исправлена. (Возможно, один из способов отпечатать ОС)?

Тайм-ауты измеряются в терминах времени RTT (время разворота). Но это не требуется очень часто из-за быстрой ретрансляции, которая срабатывает при получении 3 дубликатов ACK.

Есть ли верхняя граница числа?

Да, есть. После определенного количества попыток хост считается "вниз", и отправитель отказывается и срывает TCP-соединение.

Есть ли у клиента возможность указать серверу, чтобы он забыл обо всем сегменте TCP, для которого часть пропала, когда пакет IP пропал?

Все дело в надежной связи. Если вы хотите, чтобы клиент забыл о какой-то части, вы бы не использовали TCP в первую очередь. (Возможно, UDP?)

Ответ 2

Нет времени для повторной передачи. Простые реализации оценивают RTT (время в оба конца), и если ACK для отправки данных не был получен в 2 раза в это время, они повторно отправляются.

Затем они удваивают время ожидания и повторно отправляют, если снова нет ответа. Полоскание. Повторить.

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

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

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