Алгоритм Нагла

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

Алгоритм Нагла - алгоритм передачи данных в сетях TCP/IP, который уменьшает количество отправляемых пакетов, если время между отправкой пакета и получением подтверждения приёма достаточно велико.

Был предложен в RFC 896.

Описание[править | править код]

Любой пакет, кроме передаваемых через сеть данных, содержит служебную информацию, которая занимает минимум несколько десятков байт. Так, если передается 1 байт, то к нему цепляется заголовок IP размером в 20 байт и заголовок TCP тоже в 20 байт. В результате, если идёт обмен крохотными пакетами (тиниграммами), то по сети передается почти одна служебная информация, возникает много ненужного трафика. Это не проблема, если пропускная способность сети велика. Но при передаче через медленные каналы и на большие расстояния лучше избежать засорения сети. Здесь нам и поможет алгоритм Нагла. Смысл его в следующем: маленькие сегменты TCP не посылаются, пока не было получено подтверждение о приёме последнего отправленного сегмента. До этого момента данные накапливаются и затем отправляются одним сегментом. Чем быстрее придёт подтверждение, тем быстрее будет послана следующая порция данных. Поэтому в медленных глобальных сетях, где ответ идёт долго, пакеты будут посылаться реже и, следовательно, в трафике меньше окажется доля служебной информации.

Во всех операционных системах алгоритм Нагла обычно включен, но, как правило, средства API позволят отключить его конкретной программе при установке соединения.

Ссылки[править | править код]