Некоторые маршрутизаторы полностью игнорируют поле типа обслуживания, в то время как другие могут использовать его при выборе трафика, который следует предохранить на случай недостатка оперативной памяти. Можно надеяться, что в будущем поле типа обслуживания будет играть гораздо большую роль. Рекомендуемые в документе Assigned Numbers значения представлены в таблице 6.3.
Таблица 6.3 Рекомендуемые значения поля типа обслуживания
Протокол | Значение TOS | Описание |
---|---|---|
Telnet и другие протоколы для регистрации | 1000 | Минимизировать задержку |
Управляющий сеанс FTP | 1000 | Минимизировать задержку |
Сеанс FTP по пересылке данных | 0100 | Максимизировать производительность |
TFTP | 1000 | Минимизировать задержку |
Фаза команд SMTP | 1000 | Минимизировать задержку |
Фаза данных SMTP | 0100 | Максимизировать производительность |
Запрос DNS к UDP | 1000 | Минимизировать задержку |
Запрос DNS к TCP | 0000 | Без специального управления |
Преобразование зон в DNS | 0100 | Максимизировать производительность |
NNTP | 0001 | Минимизировать денежную стоимость |
Ошибки ICMP | 0000 | Без специального управления |
Запросы ICMP | 0000 | Обычно 0000, но иногда посылаются с другим значением |
Ответы ICMP | То же, что и у запроса, для которого формируется ответ | |
Любые IGP | 0010 | Максимизировать надежность |
EGP | 0000 | Без специального управления |
SNMP | 0010 | Максимизировать надежность |
BOOTP | 0000 | Без специального управления |
6.13.5 Поле времени жизни
Когда в интернет-системе IP происходит изменение топологии, например обрыв связи или инициализация нового маршрутизатора, некоторые датаграммы могут сбиться со своего маршрута за тот короткий период времени, пока не будет выбран новый маршрутизатор.
Более серьезные проблемы возникают из-за ошибок при ручном вводе информации о маршрутизации. Такие ошибки могут привести к потере датаграммы или зацикливанию ее по круговому маршруту на длительное время.
Поле времени жизни (Time-To-Live — TTL) ограничивает время присутствия датаграммы в интернете. TTL устанавливается хостом-отправителем и уменьшается каждым маршрутизатором, через который проходит датаграмма. Если датаграмма не достигает пункта назначения, а ее поле TTL становиться нулевым, она отбрасывается.
Хотя формально время жизни оценивается в секундах, реально TTL реализуется как простой счетчик попаданий, значение которого уменьшается (обычно на единицу) в каждом маршрутизаторе. Можно указывать большее уменьшение счетчика для датаграмм, которые перемещаются по очень медленным соединениям или требуют длительного времени для пересылки.
Рекомендуемое значение по умолчанию для TTL — примерно в 2 раза больше, чем максимально возможный путь в сети. Длина такого максимального пути часто называется диаметром (diameter) интернета.
6.13.6 Заголовок контрольной суммы
Контрольная сумма (checksum) находится в 16-разрядном поле и вычисляется по значению остальных полей заголовка IP как сумма всех дополнений до единицы 16-разрядных слов заголовка. До вычисления поле контрольной суммы содержит 0. Контрольная сумма должна пересчитываться при перемещении датаграммы по сети, поскольку в датаграмме изменяется поле TTL. Могут изменяться и другие значения из заголовка вследствие фрагментации или записи информации в дополнительные поля.
6.14 Фрагментация
Поля идентификации (Identification), флагов (Flags) и смещения фрагмента (Fragment Offset) позволяют фрагментировать и восстанавливать (собирать) датаграмму. Когда IP нужно переслать датаграмму большего размера, чем MTU следующего участка, то:
1. Сначала проверяется содержимое поля флагов. Если значение "Не фрагментировать" установлено в 1, ничего делать не нужно — датаграмма отбрасывается и перестает существовать.
2. Если флаг "Не фрагментировать" установлен в 0, то поле данных разделяется на отдельные части в соответствии с MTU следующего участка. Полученные части выравниваются по 8-октетной границе.
3. Каждой части присваивается заголовок IP, подобный заголовку исходной датаграммы, в частности копируются значения полей источника, назначения, протокола и идентификации. Однако следующие поля устанавливаются индивидуально для каждой из частей:
a. Длина датаграммы будет отражать текущую длину полученной датаграммы.
b. Флаг More из поля флагов устанавливается в 1 для всех частей, кроме последней.
c. Поле смещения фрагмента будет указывать позицию полученной части относительно начала исходной датаграммы. Начальная позиция принимается за 0. Смещение фрагмента равно реальному смещению, разделенному на 8.
d. Для каждого фрагмента вычисляется собственная контрольная сумма.
Теперь настало время более подробно рассмотреть поля при фрагментации датаграммы.
6.14.1 Поле идентификации