Заголовок IP

Каждый IP-пакет имеет заголовок, представленный на рис. 5.4. Поля IP-заголовка обычно заполняются операциониой системой хоста-отправителя. Хотя IР-мар- шрутизатор передает пакет, основываясь на адресе получателя, заголовок содержит дополнительные поля, которые важны для успешного взаимодействия между отправителем и получателем:

•          Номер версии (4 бита). 4-битный помер версии обычно имеет значение 4, что соответствует версии IPv4. Знание номера версии дает возможность маршрутизаторам и хосту-получателю корректно интерпретировать содержимое заголовка. Другие версии протокола, например, IPv6, могут иметь иной формат заголовка.

•          Длина заголовка (4 бита). 4-битное поле длины заголовка указывает на число 4-байтовых слов в заголовке. Основная часть IP-заголовка состоит из 20 байтов (пять 4-байтовых слов), но при использовании опций IP возможно использование более длинных заголовков. Длина IP-заголовка всегда кратпа 32 битам.

•          Тип сервиса (8 битов). 8 биг тина сервиса (TOS — Type Of Service) изначально включались в IP-заголовок, чтобы воздействовать на маршрут передачи пакета по сети. Например, маршруты могут иметь различные характеристики эффективности, такие как малое время задержки, высокая пропускная способность или высокая надежность. Пакет голосового IP-сообщения должен передаваться но маршруту с малой задержкой, поскольку аудиоприложення чувствительны к времени ожидания. В противоположность этому пакет большого файла следует пересылать по маршруту, имеющему высокую пропускную способность, поскольку время передачи файла зависит от нроиускной способности. Однако большинство маршрутизаторов не осуществляли выбор маршрута на базе TOS, поэтому эти биты редко использовались. Повышение в 90-х годах интереса к поддержке приложений, требующих прогнозируемой нронуск- пой способности, заставило виовь вернуться к использованию битов TOS с целью воздействовать на способ использования буферов и каналов для различных классов трафика.

Рис. 5.4. Формат IР-пакста

•      Общая длина (16 битов). 16-битное поле общей длины указывает на общее число байтов в пакете. IP-пакет может содержать до 65536 (216) байтов. Однако большинство технологий канального уровня не могут обрабатывать такие большие пакеты и используют пакеты меньшей длины, которые харакгеризу- ютсямаксимальной длиной пакета (MTU — Maximum Transmission Unit). Например, многие локальные сети используют Ethernet, где MTU составляет 1500 байтов. Ограничение на MTU может реализовываться двумя способами. При нервом подходе хост-отправитель избегает посылать IP-пакеты, Длина которых превышает MTU в сетях на пути к хосту-получателю. Но приложение обычно не может заранее знать значения MTU. При втором подходе большой IP-пакет делится отправителем или маршрутизатором на два или более фрагмента. Фрагментация IP-пакетов поддерживается следующими тремя полями в IP-заголовке: 16-битпый идентификатор, 3-битные флаги и 13-биг- ное смещение.

•      Идентификация (16 битов). 16-битное поле идентификатора содержит уникальное значение для каждого отправляемого IP-пакета. Перед гем, как передать пакет, IP-маршрутизатор проверяет, что размер пакета не превышает значение MTU канала. Слишком большой пакет может быть фрагмеитировап отправителем или промежуточным маршрутизатором. Каждый фрагмент пакета имеет один и тот же идентификатор. Это дает возможность адресату распознать, что эти фрагменты принадлежат одному пакету. В месте назначения фрагменты вновь объединяются вместе и протоколу верхнего уровня, например, TCP или UDP, передается один IР-пакет.

•      IP-флаги (3 бита). Два из трех 1-битных флагов относятся к процессу фрагментации; оставшийся бит зарезервирован для дальнейшего использования. Бит «дополнительные фрагменты» устанавливается в 1 для всех фрагментов пакета, кроме последнего. Это гарантирует, что адресат сможет определить, все ли фрагменты получены. Фрагментация может быть запрещена путем установки бита «пе использовать фрагменты». При получении пакета излишне большой длины с установленным битом «не использовать фрагменты» маршрутизатор отвергает пакет и уведомляет отправителя. Уведомление отправляется с использованием протокола Internet Control Message Protocol (ICMP) [Pos81]. Этот протокол применяется для передачи сообщений об ошибках и выборе маршрута.

•      Смещение фрагмента (13 битов). 13-битное поле смещение фрагмента содержит смещение (в 8-байтных блоках) этого фрагмента от начала оригинального IP-пакета. Применение 8-байтных блоков дает возможность использовать 13-битное поле для указания смещения внутри IP-пакета, имеющего длину до 216 (8×213) байтов, которое является максимальной допустимой длиной, описываемой 16-битным полем длины пакета. Для каждого фрагмента 16-битное поле длины пакета в IP-заголовке устанавливается в соответствии с числом байтов в этом фрагменте. Вместе смещение и Длина позволяют получателю определить, какой диапазон в байтах покрывается этим фрагментом. После прибытия всех фрагментов получатель может собрать пакет.

•      Время жизни (8 битов). 8-битное поле времени жизни (TTL — Time-To-Live) ограничивает число переходов на пути следования накета. Отправитель устанавливает для поля TTL начальное значение. Затем каждый маршрутизатор на пути уменьшает значение в поле на единицу или на то число секупд, которое пакет провел в маршрутизаторе. Когда значение TTL достигает 0, пакет уничтожается, а отправителю посылается сообщение об ошибке по протоколу ICMP. Эта процедура призвана решать проблему живучести при IP-маршрутизации. В ряде случаев ненравилыю настроенный маршрутизатор или отказавший канал связи могут вызвать зацикливание. Как результат, некоторые пакеты могут постоянно перемещаться между последовательностью маршрутизаторов, не продвигаясь к месту назначения. Пакеты, застрявшие в таком цикле, потребляют ресурсы сети и маршрутизатора. Пакет, в конце концов, может достигнуть места назначения уже после того, как приложения завершили взаимодействие. Поступление такого пакета может ввести в заблуждение получателя. Уничтожение пакетов с истекшим временем жизни (TTL) позволяет избежать этой проблемы.

•      Протокол (8 битов). 8-битпое поле протокола идентифицирует высокоуровневый протокол, ответственный за отправку IP-пакета. Зарезервированными являются следующие значения: 1 для ICMP, 6 для TCP и 17 для UDP. Информация о протоколе имеет важное значение для интерпретации получателем пакета данных, следующих за IP-заголовком. За IP-заголовком Обычно идет другой заголовок, относящийся к высокоуровневому протоколу. Это можно сравнить с упаковкой письма в конверт, который в свою очередь помещается в другой конверт. Первый заголовок используется для того, чтобы достичь нужного компьютера-адресата, а второй заголовок используется для направления IP-пакета соответствующему приложению, работающему на компьютере-получателе. Каждый протокол высокого уровня имеет свой формат заголовка.

•      Контрольная сумма заголовка (16 битов). 16-битпая контрольная сумма дает возможность обнаружить повреждение какого-либо бита в заголовке по мере прохождения пакета через сеть. Так, шумы в липиях связи могут повредить один или несколько битов в заголовке, превратив 0 в 1 или 1 в 0. Повреждение адреса места назначения может привести к доставке пакета не тому хосту. Перед передачей пакета отправитель вычисляет 16-битпую сумму битов в IP-заголовке и включает результат в поле контрольной суммы заголовка. IP-пакег с пекорректпой контрольной суммой отвергается хостом-получателем. Маршрутизаторы на пути обновляют контрольную сумму заголовка при пересылке IP-пакета, чтобы учесть любые изменения в заголовке, например, уменьшение значения ноля TTL. Важно заметить, что контрольная сумма применяется только к IP-заголовку, а не к содержимому пакета. IP не обнаруживает повреждения данных. Проверка целостности данных может быть выполнена протоколом более высокого уровня, таким как UDP или TCP, с помощью отделыюй контрольной суммы.

•      IP-адрес источника (32 бита). IP-заголовок включает в себя 32-битный адрес, который идентифицирует отправителя пакета. Включение адреса отправителя в IP-заголовок дает возможность получателю идентифицировать отправителя. Например, приложение-получатель может захотеть отправить ответное сообщение. Кроме того, маршрутизаторы на пути передачи пакета должны знать адрес отправителя, чтобы иметь возможность отправлять сообщения об ошибках с помощью протокола ICMP (например, при истечении времени жизни пакета). Помимо этого многие маршрутизаторы могут быть настроены так, чтобы отвергать трафик нежелательных отправителей. Это предусматривает фильтрацию пакетов на основе поля адреса отправителя.

•          IP-адрес получателя (32 бита). 32-битпый адрес получателя необходим для идентификации получателя пакета. При получении пакета маршрутизатор использует IP-адрес получателя для определения «следующего сегмента» на пути к получателю.

•          Опции IP (переменная длина). Последнее ноле IP-заголовка содержит список переменной длины для необязательной информации, общая длина опций крат- на 32 битам. Опции IP могут использоваться для дополнительного управления маршрутизацией, в целях безопасности или для добавления маршрутизаторами в пакет отметки времени. Например, опция «исходная маршрутизация» позволяет отправителю задавать маршрут для пакета. Маршрут задается как список IP-адресов маршрутизаторов на пути передачи. Оиция «исходная маршрутизация» начинается с 3 байтов, которые содержат код опции, длину опции и указатель на следующий адрес в списке, после чего следует список IP-адресов маршрутизаторов. Поскольку большинство маршрутизаторов оптимизированы для работы с 20-байтиыми заголовками фиксированного формата, что является типичным случаем, пакеты с опциями IP обычно обрабатываются гораздо медленнее. На практике большинство опций используются редко, а многие хосты и маршрутизаторы не поддерживают все имеющиеся опции.

Отправитель IP-иакета управляет содержимым заголовка. На протяжении многих лет заголовки использовались для целей, не соответствовавших начальному предназначению протокола:

•          Спуфинг адресов источника. IP-адрес источника обычно соответствует IP-адресу хоста-отправителя. Однако отправитель может преднамеренно помещать в поле адреса источника произвольное значение. Такая подмена адреса источника, или спуфинг (spoofing), обычно делается, когда отправитель хочет атаковать хост-получатель или сеть. Использование некорректного IP-адреса источника затрудпяет установление ипициатора атаки. Хотя отправитель не получит каких-либо ответных сообщений от получателя, он сможет загрузить хост и сеть получателя нежелательным трафиком. Э го называется атакой отказа от обслуживания (DoS — Denial ofSe?vice).

•          Определение MTU на пути следования. Бит «пе фрагментировать» в IР-заго- ловке играет важную роль в определении максимального размера пакета, разрешенного для передачи маршрутизаторами на его пути в сети [MD90]. Фрагментация пакета может быть пежелателыюй по нескольким причинам [KM87]. Выполнение фрагментации и последующая сборка загружает маршрутизатор и комиыотер получателя, соответственно. Кроме того, потеря одного фрагмента (например, вследствие переполнения буфера следующего на пути маршрутизатора) приводит к потере всего IP-накета, поскольку в IP отсутствует механизм для повторной передачи утерянного фрагмента. При отказе от фрагментации Компьютеру-отправителю необходимо знать размер MTU на пути следования к получателю. ICMP-сообщения для пакетов с размером, превышающим допустимый, предоставляет для отправителя возможность получить MTU на пути к получателю. Отправитель может поэкспериментировать с отправкой пакетов различного размера с установленным битом «пе фрагментировать», чтобы посмотреть, будет ли какой-либо из маршрутизаторов на пути иакета генерировать сообщение об ошибке. На практике различия в значениях MTU для различных технологий канального уровня не представляет сколько-пибудь существенной проблемы. Коммуникационное программное обеспечение большинства компьютеров используют значением MTU по умолчанию (576 или 1500 байтов) чтобы избежать фрагментации пакетов внутри сети.

• Идентификация переходов на пути к получателю. Как и бит «пе фрагменти- ровать», ноле времени жизни TTL дает отправителю способ получить информацию о маршруте к месту назначения. Чтобы узнать адрес первого маршрутизатора на пути следования, отправитель может передать пакет со значением TTL, равным 1. После этого первый маршрутизатор отиравиг сообщение об ошибке с помощью протокола ICMP, включающее информацию, идентифицирующую маршрутизатор. Повторение процесса с увеличенными значениями TTL дает возможность отправителю идентифицировать последующие маршрутизаторы на пути. Этот процесс положен в основу популярной утилиты traceroute [Jac], которая используется для диагностирования и устранения проблем с маршрутизацией. Однако traceroute не всегда дает точный маршрут от начала и до конца. Поскольку IP не гарантирует, что последующие пакеты будут проходить по одному и тому же маршруту, пакеты с различными значениями TTL могут идентифицировать маршрутизаторы на различных маршрутах. Аналогично, IP не гарантирует, что пакеты, отправляемые компьютером А компьютеру В будут ироходить rio тому же пути, но которому следует обратный трафик от В к А. Следовательно, traceroute предоставляет информацию только о пути от А к В, но не об обратном пути от В к А. Для того чтобы узнать обратный путь от В к А, необходимо выполнить traceroute с комиыотера В.

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

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100