📑 Протокол сетевого уровня — IP
Протокол IP — основной протокол стека протоколов TCP/IP и основной протокол сетевого уровня. Именно он отвечает за передачу информации по сети и между отдельными сетями (подсетями). В его основе заложен дейтаграммный метод, который не гарантирует доставку пакета.
Функции протокола IP определены в стандарте RFC-791 следующим образом:
“Протокол IP обеспечивает передачу блоков данных, называемых дейтаграммами, от отправителя к получателям, где отправители и получатели являются компьютерами, идентифицируемыми адресами фиксированной длины (IP-адресами). Протокол IP обеспечивает при необходимости также фрагментацию и сборку дейтаграмм для передачи данных через сети с малым размером пакетов”.
Протокол IP является ненадежным протоколом без установления соединения. Это означает, что протокол IP не подтверждает доставку данных, не контролирует целостность полученных данных и не производит операцию квитирования (handshaking) – обмена служебными сообщениями, подтверждающими установку соединения с узлом назначения и его готовность к приему данных.
Протокол IP обрабатывает каждую дейтаграмму как независимую единицу, не имеющую связи ни с какими другими дейтаграммами в Интернет.
После того, как дейтаграмма отправляется в сеть, ее дальнейшая судьба никак не контролируется отправителем (на уровне протокола IP). Если дейтаграмма не может быть доставлена, она уничтожается. Узел, уничтоживший дейтаграмму, может оправить по обратному адресу ICMP-сообщение о причине сбоя.
Гарантию правильной передачи данных предоставляют протоколы вышестоящего уровня (например, протокол TCP или сервисы прикладного уровня), которые имеют для этого необходимые механизмы.
Одна из основных задач, решаемых протоколом IP, – маршрутизация дейтаграмм, т.е. определение пути следования дейтаграммы от одного узла сети к другому на основании адреса получателя.
Общий сценарий работы модуля IP на каком-либо узле сети, принимающего дейтаграмму из сети, не зависимо от конкретной реализации, то-есть операционной системы, таков:
- с одного из интерфейсов уровня доступа к среде передачи (например, с Ethernet-интерфейса) в модуль реализующий протокол IP поступает дейтаграмма;
- модуль IP анализирует заголовок дейтаграммы;
- если пунктом назначения дейтаграммы является данный компьютер:
- если дейтаграмма является фрагментом большей дейтаграммы, ожидаются остальные фрагменты, после чего из них собирается исходная большая дейтаграмма;
- из дейтаграммы извлекаются данные и направляются на обработку одному из протоколов вышележащего уровня (какому именно – указывается в заголовке дейтаграммы);
- если ретрансляция разрешена, то-есть узел выполняет маршрутизирующие функции, то определяются следующий узел сети, на который должна быть переправлена дейтаграмма для доставки ее по назначению, и интерфейс нижнего уровня, после чего дейтаграмма передается на нижний уровень этому интерфейсу для отправки; при необходимости может быть произведена фрагментация дейтаграммы;
- если же дейтаграмма ошибочна или по каким-либо причинам не может быть доставлена, она уничтожается; при этом, как правило, отправителю дейтаграммы отсылается ICMP-сообщение об ошибке.
При получении данных от вышестоящего уровня для отправки их по сети IP-модуль формирует дейтаграмму с этими данными, в заголовок которой заносятся адреса отправителя и получателя (также полученные от транспортного уровня) и другая информация; после чего выполняются следующие шаги:
- если дейтаграмма предназначена этому же узлу, из нее извлекаются данные и направляются на обработку одному из протоколов транспортного уровня (какому именно – указывается в заголовке дейтаграммы);
- если дейтаграмма не направлена ни на один из IP-адресов данного узла, то определяются следующий узел сети, на который должна быть переправлена дейтаграмма для доставки ее по назначению, и интерфейс нижнего уровня, после чего дейтаграмма передается на нижний уровень этому интерфейсу для отправки; при необходимости может быть произведена фрагментация дейтаграммы;
- если же дейтаграмма ошибочна или по каким-либо причинам не может быть доставлена, она уничтожается.
Формат заголовка дейтаграммы IP (v4):
Октет 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 Версия IHL Тип обслуживания Длина пакета 4 Идентификатор Флаги Смещение фрагмента 8 Время жизни (TTL) Протокол Контрольная сумма заголовка 12 IP-адрес отправителя 16 IP-адрес получателя 20 Параметры (от 0 до 10-и 32-х битных слов) Данные - Версия — для IPv4 значение поля должно быть равно 4.
- IHL — (Internet Header Length) длина заголовка IP-пакета в 32-битных словах (dword). Именно это поле указывает на начало блока данных (англ. payload — полезный груз) в пакете. Минимальное корректное значение для этого поля равно 5.
- Тип обслу́живания (Type of Service, акроним TOS) — байт, содержащий набор критериев, определяющих тип обслуживания IP-пакетов. Поле в заголовке пакета IPv4, которое с годами приобретало различные цели, и описывалось почти в пяти RFC. В настоящее время TOS поле имеет 6 bit поля DiffServ Code Point (DSCP) и 2-bit поля Explicit Congestion Notification.Тип обслуживания позволяет приоритизировать IP-трафик на сетевых маршрутизаторах, с целью обеспечения высокого качества передачи данныхБайт побитно (0 – старший, 7 – младший):
- 0-2 — приоритет (precedence) данного IP-сегмента
- 3 — требование ко времени задержки (delay) передачи IP-сегмента (0 — нормальная, 1 — низкая задержка)
- 4 — требование к пропускной способности (throughput) маршрута, по которому должен отправляться IP-сегмент (0 — низкая, 1 — высокая пропускная способность)
- 5 — требование к надежности (reliability) передачи IP-сегмента (0 — нормальная, 1 — высокая надежность)
- 6-7 — ECN — явное сообщение о задержке (управление IP-потоком).
- Протокол обмена управляющими сообщениями ICMP
- DSL — высокоскоростная цифровая линия до пользователя (Digital Subscriber Line)
- Протокол транспортного уровня — UDP
- Основные сведения о DNS. Зоны и серверы DNS.
- Общие принципы функционирования NAT
- Протокол сетевого уровня — IP
- Сетевой уровень модели OSI. Общие понятия.
- Основные понятия DHCP
- Виртуальная локальная сеть — VLAN (Virtual Local Area Network)
- Устройства канального уровня модели OSI (L2)
- Канальный уровень модели OSI. Общие понятия.
- Физический уровень модели OSI
- Что такое QoS?
- Файлы и записи зон DNS
- Открытые DNS сервера
- Основные сведения о DNS. Введение.
- Коды ответа сервера по протоколу HTTP
- Модели OSI и TCP/IP
- Протоколы ARP и RARP
- Основные понятия WWW
- Что такое CSS?
- WebDAV
8.3. Сетевые протоколы. Формат пакета протокола ip
На пути кадра к устройству назначения его заголовок и трейлер изменяются при прохождении через каждое устройство 3-го уровня составной сети, например, через маршрутизатор. Это происходит вследствие того, что в кадре используется локальная адресация 2-го уровня, а пакеты адресуются с использованием логического адреса 3-го уровня и в пакете задается конечный адрес узла назначения.
Кадры 2-го уровня Ethernet предназначены для работы с МАС-адресами внутри широковещательного домена, не зависимо от используемого типа соединения. Правильность принятых данных проверяется с использованием циклического кода CRC. Полученный результат сравнивается с извлеченной из кадра контрольной суммой кода CRC. Если расчетный результат и контрольная сумма не совпадают, то кадр отбрасывается. При положительном результате сравнения из кадра извлекается пакет, который проверяется, предназначен ли пакет данному маршрутизатору или его надо передать другому устройству составной сети.
Если пакет необходимо маршрутизировать, IP-адрес сети назначения сравнивается с таблицей маршрутизации. При нахождении соответствующей записи в таблице пакет будет переслан на интерфейс, определенный в строке таблицы маршрутизации. Когда пакет коммутируется на выходной интерфейс, формируется новый кадр с новым заголовком и новым значением CRC в трейлере. Кадр затем передается в новый домен на пути к адресату назначения.
Существует два типа систем доставки информации:
- без предварительного соединения отправителя и получателя сообщения (connectionless), по которым передаются дейтаграммы;
- с предварительным соединением отправителя и получателя (connection—oriented).
- Первое 4-х разрядное поле (Vers) задает номер версии протокола. В настоящее время действует версия 4 – IPv4, согласно которой длина адреса источника (Source IP address) и адреса назначения (Destination IP address) равна 32 разрядам (4 байтам). В распечатках поля заголовка обычно представляются в десятичной и шестнадцатеричной системе. Например, действующая в настоящее время версия 4 выглядит следующим образом: Version = 4 (0x4). В поле заголовка номер версии будет задан в двоичной системе – 0100.
- Длина заголовка – количество 32-разрядных слов в заголовке, задается вторым полем HLEN. Например, код в этом поле – 0101 и запись Header Length = 20 (0x14) означает, что заголовок содержит 5 слов по 32 разряда или 20 байт.
- Поле типа сервиса (Type of Service – ToS) длиной 8 бит включает четыре идентификатора: трехразрядный идентификатор PR и одноразрядные D, T, R. Идентификаторы определяют требования к метрике при прокладке маршрута. Идентификатор PR определяет тип пакета (нормальный, управляющий и др.) и в соответствие с этим задает приоритет. Установка 1 в разряде D означает требование минимизации задержки при передаче пакета; единица в разряде Т означает требование максимальной пропускной способности; установка 1 в разряде R означает требование максимальной надежности.
- Поле Total Length задает общую длину пакета, включая заголовок и поле данных. 16 разрядов поля позволяют задавать максимальную длину 64 Кбайт. Поскольку максимальная длина кадра в большинстве технологий локальных сетей меньше 64 Кбайт, например, в Ethernet она составляет 1500 байт, то большие пакеты разбивают на фрагменты. При фрагментации пакета используется информация 5, 6 и 7 полей, все фрагменты должны иметь: одинаковый идентификационный номер пакета; номер, определяющий порядок следования фрагмента при сборке пакета; дополнительную информацию.
- Пятое поле заголовка содержит идентификационный номер пакета.
- Трехразрядное поле Flags содержит два одноразрядных флага фрагментации. Установка 1 в разряде DF запрещает маршрутизатору производить фрагментацию данного пакета. Единичка в разряде MF указывает, что данный пакет не является последним.
- 13-разрядное поле Fragment Offset помогает собрать фрагменты в единый пакет. Оно задает смещение в байтах поля данных этого пакета от начала общего поля данных исходного не фрагментированного пакета.
- Из заданного значения Time to Live – время жизни (255 – максимум) при прохождении каждого маршрутизатора или каждую секунду вычитается 1. Таким образом, число узлов, через которые может пройти пакет, ограничено.
- Поле Protocol указывает протокол верхнего уровня (TCP, UDP, OSPF и др.), которому будет передан принятый пакет после завершения IP процесса.
- Поле контрольной суммы заголовка Header Checksum. Поскольку при прохождении маршрутизатора значения некоторых полей заголовка изменяются, например время жизни, то расчет контрольной суммы производится в каждом маршрутизаторе заново.
- Source IP address – адрес источника информации, длина 4 байта (32 разряда).
- Destination IP address – адрес приемника информации, длина 4 байта (32 разряда).
- Поле IP option позволяет поддерживать различные опции, например, опцию защиты информации. Поскольку это поле может иметь разную длину, то оно дополняется до нулями до 32 разрядов.
- Поле данных Data имеет длину более 64 разрядов.