
число 3001. Количество байт от 3400 до 3500 подтверждаться не будет, пока не поступят
недостающие сегменты с номерами от 3001 до 3399. TCP источника перестанет получать
квитанции на отправленные данные, и по истечении определённого времени вернётся к
последнему полученному подтверждению и повторно передаст данные с нужными
номерами.
Типичной является следующая реализация механизма повторных передач. TCP хоста-
отправителя сохраняет в памяти копии отправляемых сегментов и запускает таймер. При
получении квитанции, соответствующие сегменты из памяти удаляются. Если же по
срабатыванию таймера не получена квитанция на какой-либо сегмент, он передаётся
повторно.
Современные реализации TCP могут также использовать выборочные подтверждения
(Selective Acknowledgements). Тогда, нашем примере, отправителю не пришлось бы заново
передавать сегменты с номерами 3400–3500, достаточно было бы передать отсутствующие –
3001–3399. Однако, необходимо, чтобы эту функцию поддерживали и отправитель и
получатель, о возможности выборочных подтверждений они сообщают друг другу с
помощью специальной опции, находящейся в заголовке сегмента.
Управление потоком
Ещё одна функция TCP – предоставление механизмов для управления потоком
данных. Поток помогает контролировать достоверность передачи, устанавливая
эффективную скорость передачи данных между приложениями. Источник информируется
получателем о том, что определенное количество данных в сегментах получено, после чего
он может продолжить отправку данных.
Как вы помните, в процессе установки соединения процессы TCP на отправителе и
получателе обговаривают некоторые параметры, среди которых – размер окна передачи,
устанавливающий количество байт, которые могут быть переданы без ожидания квитанций.
Однако, этот же параметр может быть использован для нахождения оптимальной скорости
обмена данными между станциями с оглядкой на сложившиеся в данный момент условия.