[ Что нового ? | Заметки | Статьи | Ссылки | Настройка pppd ]     [ win | koi ]
22.01.1999, © Igor Sysoev, igor@nitek.ru

 

Сжатие заголовков TCP/IP-пакетов

 

Способ сжатия заголовков TCP/IP-пакетов был предложен Van-Jacobson в RFC 1144 и 1332. Суть его состоит в следующем. В каждом TCP/IP-пакете IP и TCP-заголовки составляют в сумме 40 байт, и половина из них в пределах одного TCP/IP-соединения меняется достаточно редко. При низкоскоростном соединении число одновременных TCP/IP-соединений не велико и обычно не превышает двух десятков. Поэтому для каждого TCP/IP-соединения можно выделить слот, который будет содержать всю информацию о состоянии соединения. Это позволяет заменить 20 неизменных байт одним байтом, равным номеру слота. При использовании такой схемы ещё 2 поля по 2 байта каждое становятся избыточными и их можно убрать без потери функциональности. Оставшиеся поля обычно меняются незначительно и для кодирования их изменения требуется меньше байт, чем для кодирования значений этих полей. Кроме того, эти поля обычно меняются не одновременно. Все это в результате позволяет уменьшить размеры заголовка более половины пакетов до размеров от 3 до 16 байт. Единственное поле, передаваемое всегда в неизменном виде, - это 2 байта контрольной суммы, находящейся в заголовке TCP.

pppd поддерживает до 16 слотов и до недавних пор этого было вполне достаточно, но сейчас скорости модемных соединений существенно выросли и этого уже не хватает. Например, у меня при соединении по протоколу v.90 и скоростью соединения 49333/28800 существует, как правило, около десяти соединений, а в пике их число достигает двадцати.

counter