Иллюстрированный самоучитель по Microsoft Internet Explorer 6

MTU

Первым делом, конечно, необходимо разобраться в MTU, о котором наслышаны уже почти все, кто когда-либо сталкивался с Интернетом. MTUMaximum Transmission Unit.

В реестре он задается таким образом:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Class \NetTrans\000x "MaxMTU"="1500"

Это максимальный размер пакета данных, который может быть передан за один физический кадр по протоколу TCP/IP. Дело в том, что данные от компьютера к компьютеру в Интернете идут не сплошным потоком, а этими самыми кадрами.

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

К сожалению, это невозможно. Еще одна проблема состоит в том, что при установке соединения два компьютера должны согласовать размер пакетов, но еще и по пути следования их размеры могут меняться, т. к. кадр на пути к месту назначения преодолевает целый ряд промежуточных серверов и маршрутизаторов, настройки MTU которых могут быть совершенно различными. Следовательно, чем больше пакет, тем больше вероятность того, что он по пути следования будет разбит и заполнен "мусором".

Так, если ваш провайдер имеет установки MTU=576, а у вас в Windows задано MTU=1500, то каждый ваш пакет будет им разбиваться на три по 576 байт: 576+576+576=1728 – т. е. 228 байт балласта будут добавляться к каждому вашему пакету. Но даже если провайдер тоже поставил у себя MTU=1500, то при связи с удаленным сервером вполне может попасться маршрутизатор с меньшим значением MTU, и пакеты опять-таки будут фрагментироваться, замедляя передачу данных.

В Microsoft Windows есть функция автоматического определения MTU. Она включена по умолчанию и несколько спасает ситуацию. Но есть и минус: процедура вычисления MTU для каждого соединения требует немало времени, что чуть тормозит работу при прокачке небольших файлов и веб-серфинге. Да и в случае несогласования ваших параметров c параметрами интернет-провайдера эта функция вряд ли вам поможет. Конечно, существуют некие более или менее общепринятые стандарты для данного параметра: так, например, для Ethernet MTU равен 1500 байт, для SLIP – 1006, для РРРоЕ – 1492, для РРР (т. е. модемной связи с Интернетом) – 576.

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

На самом деле каждый пакет состоит еще из нескольких сегментов. Это заголовки и фактические данные. Та часть, где содержатся только фактические данные, называется MSS или Maximum Segment Size, что является еше одним параметром протокола TCP/IP, определяющим самый большой сегмент, теперь уже данных, передаваемых в единицу времени. В действительности MTU состоит из MSS и заголовков TCP/IP.

В реестре MSS задается так:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\VxD\MSTCP "DefaultMSS"="Ваше число"

Заголовок также имеет стандартный размер – 40 байт. 20 байт под IP и 20 байт под TCP. Следовательно, размер MSS составляет разность MTU и заголовка, т. е. 40 байт. Вот почему в определении оптимального размера MTU есть некоторые тонкости.

Для примера, стоит изучить передачу данных при разном размере MTU по широкополосной линии Т1 (пропускная способность – 1544000 бит/с), используя следующую формулу:

[(MSS + заголовок) * 8 бит / байт] / [1 544 000 бит / с] = задержка на один хоп

(т. е. на каждый компьютер в Сети по пути нашего пакета).

Используя в этой формуле разные величины MTU, мы можем вычислить задержку одного пакета. Если MTU=1500, тогда:

задержка = (1460 + 40) * 8 / 1 544 000 = 7.772 мс.

Если же MTU=576, то:

задержка = (536 + 40) * 8 / 1 544 000 = 2.984 мс.

Предположим, что по пути пакета встречается 10 серверов, тогда при MTU=1500 получим задержку 77.72 мс, а при MTU=576-29.84 мс – разница весьма заметна.

Поэтому, очевидно, что пакеты меньшего размера будут передаваться быстрее из-за небольшой пропускной способности линии. Однако не все так просто. Используя ту же формулу, давайте посчитаем, за какой промежуток времени будет передан файл размером 1 Мбайт по той же широкополосной линии Т1. Один мегабайт равен 1024 Кбайт или 1 048 576 байт. Если MTU = 1500, то, как мы выяснили, задержка на один хоп составит 7.772 мс.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.