Почему реализация tcp использует порядковый номер байта, а не номер сегмента для управления потоком? - PullRequest
1 голос
/ 15 марта 2020

Для управления потоком TCP использует Sequence number и acknowledgement number, которые являются начальным байтовым номером в сегменте.

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

пример: сегменты создаются как

Сегмент 1: от 1 до 1000

Сегмент 2: от seq 1001 до seq 2000

Сегмент 3: от seq 2001 до seq 3000

, если пакет, содержащий сегмент 2 (seq 1001 до 2000), отброшен, принимающая сторона либо не получает seq от 1000 до 2000. Нет способа получить часть сегмента. Таким образом, получатель отправляет ack за 1001.

При реализации TCP, почему создатели не использовали номер сегмента. Как и в приведенном выше примере, отправитель может отправить sequence number как segment 1,2 и 3, а получатель может использовать acknowledgment number как segment 1,2 и 3. Если есть получатель отбрасывания, который может отправить подтверждение для следующего ожидаемого сегмента (в нашем примере это сегмент 2)

Это могло бы сэкономить место в каждом заголовке TCP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...