Важной задачей является выбор величины этого тайм-аута T a ожидания подтверждения. При малой величине T a увеличивается число повторных передач. При большой величине T a возникают длительные простои ожидания «несуществующей» квитанции.
В протоколе TCP тайм-аут T a выбирается с помощью достаточно сложного адаптивного алгоритма. Суть его следующая.
· При каждой передаче засекается время до прихода квитанции (время оборота).
· Получаемые значения усредняются с весовым коэффициентом, возрастающим от предыдущего замера к следующему. Таким образом стараются усилить влияние последних замеров времени оборота.
· В качестве T a выбирается среднее время оборота, умноженное на некоторый коэффициент. Практика показывает, что значение этого коэффициента должно превышать 2.
· При большом разбросе времени оборота в алгоритме выбора тайм-аута учитывается также и дисперсия этой величины.
Приостановка передачи.
При полном заполнении входного буфера перегруженный узел-приемник указывает в своей квитанции нулевое окно. Даже после этого его партнер по соединению может направить на этот порт сообщение. Для этого оно должно сопровождаться пометкой «срочно» (в поле заголовка — «указатель срочности»). При поступлении такого срочного пакета порт обязан принять его даже путем вытеснения из буфера уже находящихся там данных.
|
|
После приема квитанции с нулевым окном узел-отправитель время от времени делает контрольные попытки продолжить обмен данными. Если порт-приемник уже готов принимать информацию, то в ответ на контрольный запрос он посылает квитанцию с указанием ненулевого размера окна.
Перегрузка сети может произойти и на промежуточных узлах-маршрутизаторах. В таких случаях они могут инициировать уменьшение размера окна посылкой управляющих сообщений ряду конечных узлов. Это позволяет им дифференцированно управлять интенсивностью потока данных в различных частях сети.
Протокол TCP описан в документе RFC 793.