Подтверждение Получения Сегментов

Рубрика: Сетевые протоколы

Одна из функций TCP заключается в проверке того, что каждый сегмент достигает своего места назначения. Службы TCP на хосте назначения подтверждают данные, которые они получили, исходному приложению.

Подтверждение Получения Сегментов TCP

Порядковый номер последовательности в заголовке сегмента и номер подтверждения используются вместе, чтобы подтвердить получение байтов данных, содержащихся в сегментах. Порядковый номер последовательности является относительным числом байтов, которые были переданы в этом сеансе плюс 1 (что равно номеру первого байта данных в текущем сегменте). TCP использует номер подтверждения в сегментах, отосланных назад к источнику, чтобы указать на следующий байт в этом сеансе, который получатель ожидает получить. Это называют подтверждением с ожидаемым значением.

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

Помните, что каждое соединение является фактически двумя односторонними сеансами. Порядковыми номерами и числами подтверждения обмениваются в обоих направлениях.

В примере на рисунке узел слева отправляет данные узлу справа. Он отправляет сегмент, содержащий 10 байтов данных для этого сеанса и порядковый номер в заголовке, равный 1.

Получающий хост справа получает сегмент на Уровне 4 и определяет, что порядковый номер 1 и что у имеется 10 байтов данных. Узел тогда отсылает сегмент назад к хосту слева, чтобы подтвердить получение этих данных. В этом сегменте узел устанавливает номер подтверждения 11, чтобы указать, что следующий байт данных, который он ожидает получить в этом сеансе, является байтом номер 11. Отметьте, значение Ack. на узле источника остается 1, чтобы указать, что сегмент является частью продолжающегося диалога, и что поле Номера Подтверждения задействовано.

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

Смотря на этот пример, можно отметить, что если бы передающий узел должен был ожидать подтверждения получения каждых 10 байтов, сеть понесла бы много издержек. Чтобы уменьшить издержки от этих подтверждений, несколько сегментов данных могут быть отправлены прежде и подтверждены единственным сообщением TCP в противоположном направлении. Это подтверждение содержит число подтверждения, основанное на общем количестве байтов, полученных в сеансе.

Например, начиная с порядкового номера последовательности 2000, если бы 10 сегментов (по 1000 байтов каждый) были приняты, число подтверждения 12000 было бы возвращено к источнику.

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

Далее: Повторная передача TCP

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)