Система Orphus

Сетевой уровень. IP адресация. Классификация адресов. Маска сети. Заголовок IPv4. Изменение MAC и IP-адресов при перемещении кадра/пакета от источника к назначению. Тестирование сетевого уровня.

Он классифицируется как протокол третьего уровня по сетевой модели OSI. IP не гарантирует надёжной доставки пакета до адресата. В частности, пакеты могут прийти не в том порядке, в котором были отправлены, продублироваться (приходят две копии одного пакета), оказаться повреждёнными (обычно повреждённые пакеты уничтожаются) или не прийти вовсе.

IPv4 использует 32-битные (четырёхбайтные) адреса, ограничивающие адресное пространство 4 294 967 296 (232) возможными уникальными адресами.

Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. (или 128.10.2.30 — традиционная десятичная форма представления адреса)

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

0.0.0.0/8 - Адреса источников пакетов «этой» («своей») сети, предназначены для локального использования на хосте при создании сокетов IP. Адрес 0.0.0.0/32 используется для указания адреса источника самого хоста.

10.0.0.0/8 - Для использования в частных сетях.

127.0.0.0/8 - Подсеть для коммуникаций внутри хоста (см.: localhost).

169.254.0.0/16 - Канальные (link-local) адреса, подсеть используется для автоматического конфигурирования адресов IP в случае отсутствия сервера DHCP.

172.16.0.0/12 - Для использования в частных сетях.

192.0.2.0/24 – Для примеров в документации

192.168.0.0/16 – для использования в частных сетях

198.51.0.100/24 – для примеров в документации

198.18.0.0/15 – для стендов тестирования производительности

203.0.113.0/24 – для примеров в документации

240.0.0.0/4 – зарезервировано для использования в будущем

255.255.255.255 – ограниченный широковещательный адрес

Есть также зарезервированные адреса, которые маршрутизируются глобально.

192.88.99.0/24 - «Любой» адрес (anycast). Адрес 192.88.99.1/32 используется для туннелирования IPv6 через IPv4.

224.0.0.0/4 - Используется для многоадресной рассылки.

Версия 

Первым полем пакета является версия протокола размером в четыре бита. Для IPv4 это 4.

 

Размер заголовка 

Следующие четыре бита содержат размер заголовка пакета в 32-битных словах. Поскольку число опций не постоянно, указание размера важно для отделения заголовка от данных. Минимальное значения равно 5 (5×32=160 бит, 20 байт), максимальное — 15 (60 байт).

 

Differentiated Services Code Point (DSCP)

Изначально называлось «тип обслуживания» (Type of Service, ToS), в настоящее время определяется RFC 2474 как «Differentiated Services». Используется для разделения трафика на классы обслуживания, например для установки чувствительному к задержкам трафику, такому как VoIP большего приоритета.

 

Указатель перегрузки (Explicit Congestion Notification, ECN) 

Предупреждение о перегрузке сети без потери пакетов. Является необязательной функцией и используется только если оба хоста её поддерживают.

 

Размер пакета 

16-битный полный размер пакета в байтах, включая заголовок и данные. Минимальный размер равен 20 байтам (заголовок без данных), максимальный — 65535 байт. Хосты должны поддерживать передачу пакетов размером до 576 байт, но современные реализации обычно поддерживают гораздо больший размер. Пакеты большего размера, чем поддерживает канал связи, фрагментируются.

 

 

Идентификатор 

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

 

 

 

Флаги 

Поле размером три бита содержащее флаги контроля над фрагментацией. Биты, от старшего к младшему, означают:

§  0: Зарезервирован, должен быть равен 0.

§  1: Не фрагментировать

§  2: У пакета ещё есть фрагменты

Если установлен флаг «не фрагментировать», то в случае необходимости фрагментации такой пакет будет уничтожен. Может использоваться для передачи данных хостам, не имеющим достаточных ресурсов для обработки фрагментированных пакетов.

Флаг «есть фрагменты» должен быть установлен в 1 у всех фрагментов пакета, кроме последнего. У нефрагментированных устанавливается в 0 — такой пакет считается собственным последним фрагментом.

 

Смещение фрагмента 

Поле размером в 13 бит, указывает смещение текущего фрагмента от начала передачи фрагментированного пакета в блоках по 8 байт. Позволяет (213−1)×8=65528 байт смещения, что превышает максимальный размер пакета. Первый фрагмент в последовательности имеет нулевое смещение.

 

«Время жизни» (Time to Live, TTL) пакета

Позволяет предотвратить закольцовывание пакетов в сети путем уничтожения пакетов, превысивших время жизни. Указывается в секундах, интервалы менее секунды округляются до одной секунды. На практике каждый маршрутизатор уменьшает время жизни пакетов на единицу (что справедливо при существующих типичных задержках в сети). Пакеты, время жизни которых стало равно нулю уничтожаются, а отправившему посылается сообщение ICMP Time Exceeded. На отправке пакетов с разным временем жизни основана трассировка их пути прохождения (traceroute).

 

Протокол 

Указывает, данные какого протокола содержит пакет (например, TCP или ICMP). Присвоенные номера протоколов можно найти на сайте IANA.

 

Контрольная сумма заголовка 

16-битная контрольная сумма, используемая для проверки целостности заголовка. Каждый хост или маршрутизатор сравнивает контрольную сумму заголовка со значением этого поля и отбрасывает пакет, если они не совпадают. Целостность данных IP не проверяет — она проверяется протоколами более высоких уровней (такими, как TCP или UDP), которые тоже используют контрольные суммы.

Поскольку TTL уменьшается на каждом шаге прохождения пакета, сумма тоже должна вычисляться на каждом шаге. Метод пересчета контрольной суммы определён в RFC 1071.[13]

 

Адрес источника 

32-битный адрес отправителя пакета. Может не совпадать с настоящим адресом отправителя из-за трансляции адресов(NAT).

 

 

Адрес назначения 

32-битный адрес получателя пакета.

 

Опции 

За адресом назначения может следовать поле дополнительных опций, но оно используется редко. Размер заголовка в этом случае должен быть достаточным чтобы вместить все опции (с учетом дополнения до целого числа 32-битных слов).

Если список опций не является концом заголовка, он должен оканчиваться опцией 0x00. Опции имеют следующий формат:

 

Данные

До 65535 байт

 

Класс

Первые биты

Число байт для номера сети

Число байт для номера узла

Число сетей

Число узлов

A

0

1

3

128(-2)

16777216(-2)

B

10

2

2

16384

65536(-2)

C

110

3

1

2097152

256(-2)

D

1110

Групповой

адрес

 

 

E

11110

Зарезервировано

 

 

 

 

Класс

Первый биты

Наименьший номер сети

Наибольший номер сети

A

0

1.0.0.0

126.0.0.0

B

10

128.0.0.0

191.255.0.0

C

110

192.0.0.0

223.255.255.0

D

1110

224.0.0.0

239.255.255.255

E

11110

240.0.0.0

247.255.255.255

 

В терминологии сетей TCP/IP маской подсети или маской сети называется битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Имеет вид 11..10..0

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

Тестирование сетевого уровня:

Протокол ICMP.

Протокол ICMP описан в RFC 792 (с дополнениями в RFC 950) и является стандартом Интернета (входит в стандарт STD 5 вместе с IP). Хотя формально ICMP использует IP (ICMP-пакеты инкапсулируются в IP пакеты), он является неотъемлемой частью IP и обязателен при реализации стека TCP/IP. Текущая версия ICMP для IPv4 называется ICMPv4. В IPv6 существует аналогичный протокол ICMPv6.

ICMP-сообщение строится из IP-пакетов, сгенерировавших ICMP-ответ. IP инкапсулирует соответствующее ICMP-сообщение с новым заголовком IP (чтобы отправить ICMP-сообщение обратно отправителю) и передает полученные пакеты дальше.

Например, каждая машина (такая, как маршрутизатор), которая перенаправляет IP-пакеты, уменьшает Time to live (TTL) поля заголовка IP на единицу, если TTL достигает 0, ICMP-сообщение о превышении TTL отправляется на источник пакета.

Каждое ICMP-сообщение инкапсулируется непосредственно в пределах одного IP-пакета, и, таким образом, как и UDP, ICMP является ненадежным (надежным является TCP).

ICMP основан на протоколе IP. Его цели отличны от целей транспортных протоколов, таких как TCP и UDP: он, как правило, не используется для передачи и приема данных между конечными системами. ICMP не используется непосредственно в приложениях пользователей сети (исключение составляют инструменты Ping и Traceroute).

Правила генерации ICMP-пакетов

1.    При потере ICMP-пакета никогда не генерируется новый.

2.    ICMP-пакеты никогда не генерируются в ответ на IP-пакеты с широковещательным или групповым адресом, чтобы не вызывать перегрузку в сети (так называемый «широковещательный шторм»).

3.    При повреждении фрагментированного IP-пакета ICMP-сообщение отправляется только после получения первого повреждённого фрагмента, поскольку отправитель всё равно повторит передачу всего IP-пакета целиком.

 

 

 


Система Orphus

Комментарии