Заголовок, добавляемый протоколом IP к данным, полученным от протокола транспортного уровня, обычно имеет длину 20 байт.
Version | IHL | Type of Service | Total Lenght | |
Identification | Flags | Fragment Offset | ||
Time to Live | Protocol | Header Checksum | ||
Source IP Address | ||||
Destantion IP Address | ||||
Options | ||||
Data |
Поля дейтаграммы выполняют следующие функции.
• Version (4 бита) — версия протокола IP, использованная для создания дейтаграммы.
• Internet Header Length (IHL) (4 бита) — длина заголовка дейтаграммы, выраженная в 32-битовых (4-байтовых) словах.
• Type of Service (I байт) — код приоритета дейтаграммы. Это поле позволяет присвоить дейтаграмме приоритет, который будет учитываться маршрутизаторами при ее пересылке по интерсети.
• Total Length (2 байта) — длина дейтаграммы в байтах с учетом данных и всех полей заголовка.
• Identification (2 байта) — уникальный идентификатор дейтаграммы. Целевая система использует эту величину при сборке дейтаграмм, которые были фрагментированы в процессе передачи.
• Flags (3 бита) — флаги, управляющие процессом фрагментации дейтаграммы.
• Fragment Offset (13 битов) — значение, определяющие положение фрагмента во фрагментированной дейтаграмме.
• Time to Live (1 байт) — количество сетей, которые дейтаграмме разрешается пройти на пути к целевой системе. Каждый маршрутизатор, пересылающий дейтаграмму, уменьшает значение в этом поле на 1. Когда значение становится равным 0, дейтаграмма прекращает существование.
• Protocol (1 байт) — код протокола, сгенерировавшего информацию в поле данных.
• Header Checksum (2 байта) — контрольная сумма для полей заголовка IP, используемая для обнаружения ошибок.
• Source IP Address (4 байта) — IP-адрес системы, создавшей дейтаграмму.
• Destination IP Address (4 байта) — IP-адрес системы, в которую направляется дейтаграмма.
• Options (переменной длины) — необязательное поле для одного или нескольких из 16 IP-параметров. Размер и содержимое этого поля определяются количеством и типом параметров.
• Data (переменной длины) — информация, сгенерированная протоколом, код которого указан в поле Protocol. Размер этого поля зависит от протокола канального уровня, используемого сетью, в которую система передает дейтаграмму.
Уникальность IP по сравнению с другими протоколами сетевого уровня состоит в том, что он обладает собственной системой адресов для идентификации компьютеров в интерсети почти любого размера (в других протоколах сетевого уровня, например, в NetBEUI или IPX, для идентификации компьютеров в ЛВС используются имена или аппаратные адреса). Адрес IP имеет длину 32 бита и состоит из идентификатора сети и идентификатора хоста. Хостом (host) в TCP/IP называется сетевой адаптер компьютера или другого устройства. Обычно говорят об IP-адресе компьютера, но в действительности адрес принадлежит сетевому адаптеру (чаще всего сетевой плате). Если на компьютере (например, маршрутизаторе) установлено два адаптера или адаптер и модем для удаленного соединения с сетью, у него будет два IP-адреса — по одному для каждого интерфейса, IP-адреса, записанные системой в поля Source IP Address и Destination IP Address заголовка IP, идентифицируют систему, создавшую пакет, и систему, которой он предназначен. Если пакет не покинет пределов ЛВС, целевой IP-адрес указывает на ту же систему, что и целевой адрес в заголовке протокола канального уровня. Если пакет адресован системе в другой сети, целевые адреса протоколов сетевого и канального уровней различаются. IP — сквозной протокол, т. е. он полностью отвечает за доставку данных целевой системе, не ограничиваясь их перемещением по локальной сети, как протокол канального уровня.
Протоколы канального уровня с IP-адресами не работают, поэтому для передачи дейтаграммы IP должен сообщить протоколу канального уровня аппаратный адрес системы в локальной сети. Для этого IP прибегает к помощи другого протокола из набора TCP/IP — протокола разрешения адреса ARP (Address Resolution Protocol). ARP рассылает широковещательное сообщение с IP-адресом системы в локальной сети. Система, которой принадлежит этот IP-адрес, отвечает на него, подставляя в ответное сообщение свой аппаратный адрес.
Если целевая система дейтаграммы находится в локальной сети, в сообщении ARP содержится ее IP-адрес. Если целевая система находится в другой сети, IP-адрес в сообщении ARP принадлежит маршрутизатору. Получив ответ на сообщение ARP, протокол IP в системе источнике передает дейтаграмму протоколу канального уровня, сопроводив ее аппаратным адресом, необходимым для построения кадра.
Маршрутизация — самая важная и сложная функция протокола IP. Когда TCP/IP-система передает данные компьютеру в другой сети, пакетам предстоит пройти через маршрутизаторы, которыми эти сети соединяются. Отправитель и получатель данных называются оконечными, а маршрутизаторы — промежуточными системами. Проходя через промежуточную систему, пакеты поднимаются по стеку протоколов только до сетевого уровня. Там IP принимает решение, куда пакет отправить дальше. Если маршрутизатор входит в сеть, в которую включена целевая система, он передает пакет туда, и путешествие пакета на этом закончено. Если целевая система находится в другой сети, маршрутизатор передает пакет другому маршрутизатору, и пакет оказывается на шаг ближе к цели. В сложных интерсетях на пути к месту назначения пакет может проходить через десятки маршрутизаторов.
Поскольку в промежуточной системе пакет достигает только сетевого уровня, дейтаграмма не открывается и не используется. Маршрутизатор удаляет кадр канального уровня и заменяет его собственным кадром, но ≪конверт≫ дейтаграммы остается запечатанным, пока она не достигнет места назначения. И все-таки каждая промежуточная система вносит в заголовок IP незначительные изменения. Самое важное из них касается поля Time to Live (TTL), определяющего ≪время жизни≫ пакета. Компьютер, сгенерировавший пакет, записывает в него заданное значение. Каждый машрутизатор, обрабатывающий пакет, уменьшает это значение на 1. Когда величина TTL достигает нуля, очередной маршрутизатор дальше пакет не передает. Это позволяет избежать зацикливания пакетов в сети в случае каких-либо сбоев.
Маршрутизатор, в котором величина TTL достигла нуля, с помощью протокола ICMP генерирует сообщение об ошибке Time to Live Exceeded in Transit и посылает его системе-источнику пакета. Так отправитель узнает, что пакет не достиг места назначения. В большую часть реализаций TCP/IP включается программа Traceroute, которая с помощью поля TTL составляет список маршрутизаторов на пути к определенной целевой системе. Посылая по заданному адресу серию пакетов с последовательно увеличивающимися значениями TTL, Traceroute заставляет встретившиеся маршрутизаторы по очереди генерировать сообщения об ошибке. Из этих сообщений Traceroute извлекает адреса маршрутизаторов и отображает полный путь к целевой системе.
Маршрутизатор способен соединять сети с различными сетевыми средами и протоколами канального уровня, но, чтобы направить пакеты из одной сети в другую, ему часто приходится переупаковывать дейтаграмму в другой кадр канального уровня. Иногда это выливается в удаление старого кадра и создание нового. В других случаях протоколы канального уровня различаются настолько сильно, что процесс переупаковки усложняется, как, например, при соединении сети Token Ring с сетью Ethernet. Дело в том, что в сети Token Ring дейтаграмма может иметь длину до 4500 байтов, а в сети Ethernet — не более 1500 байтов. Для решения этой проблемы маршрутизатор разделяет дейтаграмму, пришедшую из сети Token Ring, на несколько фрагментов. Каждый из них обладает собственным заголовком IP и пересылается в отдельном кадре канального уровня.
Создавая систему NetWare, компания Novell разработала собственный набор протоколов, называемый обычно IPX (Internetwork Packet Exchange) пo имени протокола сетевого уровня. Протоколы IPX никогда не публиковались в виде открытых стандартов, подобных TCP/ IP или Ethernet, и по сей день остаются собственностью Novell. Протокол IPX не ориентирован на соединение. Он похож на IP в том смысле, что функционирует на сетевом уровне эталонной модели OSI и переносит по сети данные, сгенерированные другими протоколами. Тем не менее сам IPX и другие протоколы из этого стека предназначены для применения в ЛВС, тогда как протоколы TCP/IP спроектированы для сетей, которые в наши дни стали Интернетом. Это означает, что в IPX нет собственной системы адресации, подобной IP-адресации. Другие же функции протокола IP, например, маршрутизация и идентификация протокола, сгенерировавшего данные, в IPX также поддерживаются
Самый популярный внутренний протокол маршрутизации из набора TCP/IP — RIP (Routing Information Protocol) — применяется в сетях по всему миру. Изначально он разрабатывался для UNIX-систем, но со временем был перенесен на многие другие платформы. Действие RIP основано главным образом на сообщениях двух типов — запросах и ответах, которые передаются в пакетах UDP. При запуске RIP-маршрутизатор генерирует RIP-запрос и передает его как широковещательное сообщение на все свои сетевые интерфейсы. Получив это сообщение, все маршрутизаторы в сетях, поддерживающих RIP, посылают ответное сообщение с информацией из своих таблиц маршрутизации.