Какое значение содержащееся в заголовке ipv4 уменьшается каждым маршрутизатором получающим пакет
IPv4 - это аббревиатура от Internet Protocol version 4 (Интернет Протокол версии 4) – представляет собой основной тип адресов, используемый на сетевом уровне модели OSI, для осуществления передачи пакетов между сетями. IP-адреса состоят из четырех байт, к примеру 192.168.100.111.
Присвоение IP-адресов хостам осуществляется:
- вручную, настраивается системным администратором во время настройки вычислительной сети;
- автоматически, с использование специальных протоколов (в частности, с помощью протокола DHCP - Dynamic Host Configuration Protocol, протокол динамической настройки хостов).
Протокол IPv4 разработан в сентябре 1981 года.
Протокол IPv4 работает на межсетевом (сетевом) уровне стека протокола TCP/IP. Основной задачей протокола является осуществление передачи блоков данных (дейтаграмм) от хоста-отправителя, до хоста-назначения, где отправителями и получателями выступают вычислительные машины, однозначно идентифицируемые адресами фиксированной длины (IP-адресами). Также интернет протокол IP осуществляет, в случае необходимости, фрагментацию и сбору отправляемых дейтаграмм для передачи данных через другие сети с меньшим размером пакетов.
Протокол IP отправляет и обрабатывает каждую дейтаграмму как независимую порцию данных, то есть не имея никаких других связей с другими дейтаграммами в глобальной сети интернет.
После отправки дейтаграммы протоколом IP в сеть, дальнейшие действия с этой дейтаграммой никак не контролируются отправителем. Получается, что если дейтаграмма, по каким-либо причинам, не может быть передана дальше по сети, она уничтожается. Хотя узел, уничтоживший дейтаграмму, имеет возможность сообщить о причине сбоя отправителю, по обратному адресу (в частности с помощью протокола ICMP). Гарантию доставки данных возложены на протоколы вышестоящего уровня (транспортный уровень), которые наделены для этого специальными механизмами (протокол TCP).
Как известно, на сетевом уровне модели OSI работают маршрутизаторы. Поэтому, одной из самых основных задач протокола IP – это осуществление маршрутизации дейтаграмм, другими словами, определение оптимального пути следования дейтаграмм (с помощью алгоритмов маршрутизации) от узла-отправителя сети к любому другому узлу сети на основании IP адреса.
Алгоритм работы протокола ip
Алгоритм работы протокола ip на каком-либо узле сети принимающего дейтаграмму из сети выглядит следующим образом:
Формат заголовка IP
Структура IP пакетов версии 4 представлена на рисунке
- Версия — для IPv4 значение поля должно быть равно 4.
- IHL — (Internet Header Length) длина заголовка IP-пакета в 32-битных словах (dword). Именно это поле указывает на начало блока данных в пакете. Минимальное корректное значение для этого поля равно 5.
- Тип обслуживания (Type of Service, акроним TOS) — байт, содержащий набор критериев, определяющих тип обслуживания IP-пакетов, представлен на рисунке.
Описание байта обслуживания побитно:
Перехваченный IPv4 пакет с помощью сниффера Wireshark:
Фрагментация IP пакетов
На пути пакета от отправителя к получателю могут встречаться локальные и глобальные сети разных типов с разными допустимыми размерами полей данных кадров канального уровня (Maximum Transfer Unit – MTU). Так, сети Ethernet могут передавать кадры, несущие до 1500 байт данных, для сетей X.25 характерен размер поля данных кадра в 128 байт, сети FDDI могут передавать кадры размером в 4500 байт, в других сетях действуют свои ограничения. Протокол IP умеет передавать дейтаграммы, длина которых больше MTU промежуточной сети, за счет фрагментирования – разбиения “большого пакета” на некоторое количество частей (фрагментов), размер каждой из которых удовлетворяет промежуточную сеть. После того, как все фрагменты будут переданы через промежуточную сеть, они будут собраны на узле-получателе модулем протокола IP обратно в “большой пакет”. Отметим, что сборку пакета из фрагментов осуществляет только получатель, а не какой-либо из промежуточных маршрутизаторов. Маршрутизаторы могут только фрагментировать пакеты, но не собирать их. Это связано с тем, что разные фрагменты одного пакета не обязательно будут проходить через одни и те же маршрутизаторы.
Для того, чтобы не перепутать фрагменты разных пакетов, используется поле Идентификации, значение которого должно быть одинаковым для всех фрагментов одного пакета и не повторяться для разных пакетов, пока у обоих пакетов не истекло время жизни. При делении данных пакета, размер всех фрагментов, кроме последнего, должен быть кратен 8 байтам. Это позволяет отвести меньше места в заголовке под поле Смещение фрагмента.
Второй бит поля Флаги (More fragments), если равен единице, указывает на то, что данный фрагмент – не последний в пакете. Если пакет отправляется без фрагментации, флаг “More fragments” устанавливается в 0, а поле Смещение фрагмента – заполняется нулевыми битами.
Если первый бит поля Флаги (Don’t fragment) равен единице, то фрагментация пакета запрещена. Если этот пакет должен быть передан через сеть с недостаточным MTU, то маршрутизатор вынужден будет его отбросить (и сообщить об этом отправителю посредством протокола ICMP). Этот флаг используется в случаях, когда отправителю известно, что у получателя нет достаточно ресурсов по восстановлению пакетов из фрагментов.
Классы IP адресов
Все IP-адреса можно разделить на две логические части — номера сети и номера узла сети (номер хоста). Чтобы определить какая именно часть IP-адреса принадлежит к номеру сети, а какая — к номеру хоста, определяется значениями первых бит адреса. Также, первые биты IP-адреса используются для того, чтобы определить к какому классу относится тот или другой IP-адрес.
На рисунке показана структура IP-адреса разных классов.
Если адрес начинается с 0, то сеть относят к классу А и номер сети занимает один байт, остальные 3 байта интерпретируются как номер узла в сети. Сети класса А имеют номера в диапазоне от 1 до 126. (Номер 0 не используется, а номер 127 зарезервирован для специальных целей, о чем будет сказано ниже.) Сетей класса А немного, зато количество узлов в них может достигать 2 24 , то есть 16 777 216 узлов.
Если первые два бита адреса равны 10, то сеть относится к классу В. В сетях класса В под номер сети и под номер узла отводится по 16 бит, то есть по 2 байта. Таким образом, сеть класса В является сетью средних размеров с максимальным числом узлов 2 16 , что составляет 65 536 узлов.
Если адрес начинается с последовательности 110, то это сеть класса С. В этом случае под номер сети отводится 24 бита, а под номер узла — 8 бит. Сети этого класса наиболее распространены, число узлов в них ограничено 2 8 , то есть 256 узлами.
Если адрес начинается с последовательности 1110, то он является адресом класса Dи обозначает особый, групповой адрес — multicast. Если в пакете в качестве адреса назначения указан адрес класса D, то такой пакет должны получить все узлы, которым присвоен данный адрес.
Если адрес начинается с последовательности 11110, то это значит, что данный адрес относится к классу Е. Адреса этого класса зарезервированы для будущих применений.
В таблице приведены диапазоны номеров сетей и максимальное число узлов, соответствующих каждому классу сетей.
Большие сети получают адреса класса А, средние — класса В, а маленькие — класса С.
Использование масок в IP адресации
Для того, чтобы получить тот или иной диапазон IP-адресов предприятиям предлагалось заполнить регистрационную форму, в которой перечислялось текущее число ЭВМ и планируемое увеличение количества вычислительных машин и в итоге предприятию выдавался класс IP – адресов: A, B, C, в зависимости от указанных данных в регистрационной форме.
Данный механизм выдачи диапазонов IP-адресов работал штатно, это было связано с тем, что поначалу в организациях было небольшое количество ЭВМ и соответственно небольшие вычислительные сети. Но в связи с дальнейшим бурным ростом интернета и сетевых технологий описанный подход к распределению IP-адресов стал выдавать сбои, в основном связанные с сетями класса «B». Действительно, организациям, в которых число компьютеров не превышало нескольких сотен (скажем, 500), приходилось регистрировать для себя целую сеть класса «В» (так как класс «С» только для 254 компьютеров, а класс «В» - 65534). Из-за чего доступных сетей класса «В» стало, просто на просто, не хватать, но при этом большие диапазоны IP-адресов пропадали зря.
А что если использовать какой-либо другой признак, с помощью которого можно было бы более гибко устанавливать границу между номером сети и номером узла? В качестве такого признака сейчас получили широкое распространение маски.
Маска — это число, которое используется в паре с IP-адресом; двоичная запись маски содержит единицы в тех разрядах, которые должны в IP-адресе интерпретироваться как номер сети. Поскольку номер сети является цельной частью адреса, единицы в маске также должны представлять непрерывную последовательность.
Для стандартных классов сетей маски имеют следующие значения:
- класс А - 11111111. 00000000. 00000000. 00000000 (255.0.0.0);
- класс В - 11111111. 11111111. 00000000. 00000000 (255.255.0.0);
- класс С - 11111111. 11111111.11111111. 00000000 (255.255.255.0).
Снабжая каждый IP-адрес маской, можно отказаться от понятий классов адресов и сделать более гибкой систему адресации. Например, если рассмотренный выше адрес 185.23.44.206 ассоциировать с маской 255.255.255.0, то номером сети будет 185.23.44.0, а не 185.23.0.0, как это определено системой классов.
Расчет номера сети и номера узла с помощью маски:
В масках количество единиц в последовательности, определяющей границу номера сети, не обязательно должно быть кратным 8, чтобы повторять деление адреса на байты. Пусть, например, для IP-адреса 129.64.134.5 указана маска 255.255.128.0, то есть в двоичном виде:
- IP-адрес 129.64.134.5 - 10000001. 01000000.10000110. 00000101
- Маска 255.255.128.0 - 11111111.11111111.10000000. 00000000
Если игнорировать маску, то в соответствии с системой классов адрес 129.64.134.5 относится к классу В, а значит, номером сети являются первые 2 байта — 129.64.0.0, а номером узла — 0.0.134.5.
Если же использовать для определения границы номера сети маску, то 17 последовательных единиц в маске, «наложенные» (логическое умножение) на IP-адрес, определяют в качестве номера сети в двоичном выражении число:
или в десятичной форме записи — номер сети 129.64.128.0, а номер узла 0.0.6.5.
Существует также короткий вариант записи маски, называемый префиксом или короткой маской. В частности сеть 80.255.147.32 с маской 255.255.255.252, можно записать в виде 80.255.147.32/30, где «/30» указывает на количество двоичных единиц в маске, то есть тридцать бинарных единиц (отсчет ведется слева направо).
Для наглядности в таблице отображается соответствие префикса с маской:
Механизм масок широко распространен в IP-маршрутизации, причем маски могут использоваться для самых разных целей. С их помощью администратор может структурировать свою сеть, не требуя от поставщика услуг дополнительных номеров сетей. На основе этого же механизма поставщики услуг могут объединять адресные пространства нескольких сетей путем введения так называемых «префиксов» с целью уменьшения объема таблиц маршрутизации и повышения за счет этого производительности маршрутизаторов. Помимо этого записывать маску в виде префикса значительно короче.
Особые IP адреса
В протоколе IP существует несколько соглашений об особой интерпретации IP-адресов:
В протоколе IP нет понятия широковещательности в том смысле, в котором оно используется в протоколах канального уровня локальных сетей, когда данные должны быть доставлены абсолютно всем узлам. Как ограниченный широковещательный IP-адрес, так и широковещательный IP-адрес имеют пределы распространения в интерсети — они ограничены либо сетью, к которой принадлежит узел-источник пакета, либо сетью, номер которой указан в адресе назначения. Поэтому деление сети с помощью маршрутизаторов на части локализует широковещательный шторм пределами одной из составляющих общую сеть частей просто потому, что нет способа адресовать пакет одновременно всем узлам всех сетей составной сети.
IP-адреса используемые в локальных сетях
Все используемые в Интернете адреса, должны регистрироваться, что гарантирует их уникальность в масштабе всей планеты. Такие адреса называются реальными или публичными IP-адресами.
Для локальных сетей, не подключенных к Интернету, регистрация IP-адресов, естественно, не требуется, так как, в принципе, здесь можно использовать любые возможные адреса. Однако, чтобы не допускать возможность конфликтов при последующем подключении такой сети к интернету, рекомендуется применять в локальных сетях только следующие диапазоны так называемых частных IP-адресов (в интернете эти адреса не существуют и использовать их там нет возможности), представленных в таблице.
Dependences: IP, IPv4, Routing
TTL (Time To Live) — поле в заголовке IPv4 пакета. Оно задает «время жизни» пакета. Каждый маршрутизатор должен уменьшать значение поля TTL при прохождении пакета на единицу. Это приведет к изменению заголовка пакета, следовательно, маршрутизатор должен пересчитать контрольную сумму IP-заголовка.
Изначально поле TTL должно было дополнительно уменьшаться на единицу каждую секунду, пока пакет обрабатывается маршрутизатором. Но в последствии от ежесекундного уменьшения отказались и не всегда упоминают этот факт (факт присутствия в протоколе данного правила). Причина отказа проста — большинство маршрутизаторов, как правило, обрабатывают поток пакетов настолько быстро, что они не задерживаются на секунду.
Когда значение поля TTL достигает 0, маршрутизатор должен отбросить такой пакет. Следовательно имеет место правило: маршрутизатор не пропускает пакеты с нулевым значением поля TTL. В этом действии кроется основное предназначение этого поля — избежание петель маршрутизации. В случае ошибочной маршрутизации, пакет не будет ходить бесконечно по сети, а отбросится через некоторое время.
Пересмотрев предназначение поля TTL , в протоколе IPv6 вместо него было введено новое поле Hop Limit. Hop Limit уже означает не время жизни пакета, а максимальное количество хопов, которое может пройти пакет, перед уничтожением.
На принципе работы маршрутизаторов с полем TTL основывается утилита traceroute. Ее задача — отобразить все хопы по пути следования пакета от источника к назначению. Это достигается следующим образом: утилита начинает отправлять UDP -сегменты на несуществующий порт хоста назначения, в которых значение поля TTL в IP -пакете начинается с 1 и с каждым разом увеличивается на единицу. С каждым разом последующий маршрутизатор откидывает пакет, отправляя уведомление отправителю. Утилита traceroute получает уведомление, откуда берет адрес отправителя (адрес маршрутизатора). Когда же сегмент достигает назначения, то хост отправляет уведомление, что порт недоступен.
Некоторые системы настроены таким образом, что они не отправляют ICMP трафик. В таком случае мы видим time out в выводе утилиты traceroute. Это происходит из-за того, что не приходит уведомление об уничтожении (отбросе) пакета.
Задание 1: Рассмотреть вывод утилиты traceroute в двух случаях: когда параметром передается существующий адрес и когда несуществующий. Почему, в случае несуществующего хоста, traceroute выдает информацию про маршрутизаторы (ведь назначения не существует)? Какими основными принципами маршрутизации это объясняется?
Задание 2: В TCP/IP стеке старой ОС BSD была ошибка, из-за которой система пропускала пакеты со значением TTL=0. В случае, когда на одном из промежуточных маршрутизаторов поставить данную ОС, как изменится вывод утилиты traceroute?
Разные операционные системы могут отправлять пакеты с разным начальным значением поля TTL. Например, Linux берет по умолчанию значение 64, а Windows — 128. Таким образом можно бегло отличить кто является источником трафика (если конечно в сети только ОС с разным значением TTL по умолчанию).
Задание 3: Как определить Internet-провайдеру, что непосредственный клиент раздает свой канал другим машинам своей сети посредством NAT?
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.
Начнем изучение полей IP-заголовка. При рассмотрении каждого поля будет описано его предназначение, представлены сведения о его нормальных и необычных значениях; о чем можно узнать по информации этого поля, и каким образом осуществляются атаки при манипуляциях со значениями этого поля.
Номер версии протокола IP
Единственными действительными версиями протокола IP являются версии 4 и 6. Наиболее распространенная версия в настоящее время - версия IPv4. IPv6 постепенно внедряется на магистральных линиях Internet.
Значение поля версии протокола IP проверяется хостом-получателем и, если номер недействителен, дейтаграмма отбрасывается без какого-либо уведомления отправителя (согласно RFC 1121). Поэтому создание дейтаграмм с недействительным номером версии IP не имеет никакого смысла, разве что позволяет проверить соблюдение получателем требований RFC.
(The 250 protocols scanned but not shown below are in state: closed)
Protocol State Name
Программа nmap использует отсутствие уведомления как подтверждение использования протокола. Как мы убедились, такой подход имеет определенные недостатки.
Эта ситуация напоминает мне пример из реальной жизни, когда в лечебном учреждении нужно сдать анализ крови. Поскольку и у врачей, и у медсестер очень много работы, то после анализа они обычно говорят, что сообщат вам, если что-то будет не в порядке. Таким образом, отсутствие уведомления является подтверждением того, что вы абсолютно здоровы.
Пусть так, но если быть хоть немного пессимистом, то можно представить неоднозначность этой ситуации. Все что угодно может произойти с вашим анализом крови, он может просто потеряться, вам могут забыть сообщить о его результатах и т.д. В общем, не стоит думать, что все прекрасно, только потому, что вам не перезвонили.
Подобные проблемы могут касаться и доставки пакета. Он может быть потерян по дороге или заблокирован на одном из многочисленных промежуточных пунктов маршрута. В программе nmap учтены некоторые из возможных проблем, но в целом отсутствие уведомления не всегда гарантирует соблюдение условия.
С момента своего первоначального появления в составе IP-заголовка байт “Тип обслуживания” (Type of Service - ToS) претерпел несколько изменений. Одним из них стало предусмотренное в документе RFC 2481 и более новом RFC 3168 использование двух младших битов этого байта для хранения явного уведомления о перегрузке (Explicit Congestion Notification - ECN). Это связано с использованием некоторыми маршрутизаторами метода случайного раннего обнаружения (Random Early Detection - RED) или активного управления очередями с вероятностью потери пакетов.
При высокой нагрузке маршрутизатор может отбрасывать некоторые пакеты. Метод RED предназначен для уменьшения негативного эффекта потери пакетов с помощью вычисления вероятности перегрузки в очереди к интерфейсу маршрутизатора и маркирования пакетов, которые могут быть отброшены при возникновении этой перегрузки.
Рис. 8.3. Байт поля “Тип обслуживания”, содержащий биты ECN
В стеках TCP/IP некоторых операционных систем флаг DF устанавливается по умолчанию для определенных типов пакетов, и программа пшар использует это свойство для определения операционной системы удаленного хоста. Кроме того, нарушитель может установить флаг DF для проведения атаки со вставкой. В этом случае система обнаружения вторжений должна быть установлена в сети с большей MTU, чем сеть, в которой установлен хост-получатель. Атакуемому хосту отправляется набор пакетов, среди которых в одном или нескольких установлен флаг DF. Система обнаружения вторжений получает этот пакет, учитывает его содержимое и отбрасывает его. Таким образом, атакуемый хост не получит этот “лишний” для атаки пакет (или пакеты).
Установленный флаг MF (More Fragments - следующий фрагмент) указывает, что за этим фрагментом следует еще один или несколько фрагментов. Этот флаг устанавливается во всех фрагментах, кроме последнего. Хост-получатель распознает фрагментированный трафик по наличию этого флага или по значению поля смещения фрагмента IP-заголовка (отличного от нуля).
Сканирование сети с помощью отдельных фрагментов
hping2 -S -р 139 -х win98
06:50:41.636506 win98 > verbo: icmp: ip reassembly time exceeded
hping2 -S -p 21 -x linux
11:56:04.064978 verbo.2450 > linux.ftp: S 119842 3 806:1198423 806(0) win 512 ^(frag 3 9067 : 2 0@0 + )
11:56:34.056813 linux > verbo: icmp: ip reassembly time exceeded [tos OxcO]
Второй пакет, отправленный утилитой hping2, используется для проверки хоста под управлением Linux (версия ядра 2.2), на котором запущена служба FTP. Этот хост ожидает около 30 с, чтобы получить оставшиеся фрагменты на свой порт 21.
В двух 32-битовых полях IP-заголовка содержатся IP-адреса отправителя и получателя. Значение IP-адреса отправителя содержится в 12-15-ом байтах IP-заголовка, а значение IP-адреса получателя - в 16- 19-ом байтах.
В пакетах исходящего трафика должны быть указаны IP-адреса отправителя, одного из хостов адресного пространства, выделенного для данной локальной сети. Если в пакете, исходящем из локальной сети, содержится неизвестный IP-адрес отправителя, то либо IP-адрес был подменен, либо неверно выполнена настройка хостов этой сети. В любом случае такой исходящий трафик должен быть заблокирован. Это предотвратит использование хостов вашей сети в распределенных атаках отказа в обслуживании, так как подчиненные хосты (зомби-хосты) обычно используют подмененные IP-адреса. Также будут заблокированы исходящие попытки скрытого сканирования чужих сетей с использованием подмены IP-адреса. Кроме того, из вашей сети не должны отправляться пакеты с IP-адресами отправителя 127.0.0.1 (адрес петли обратной связи локального хоста) или IP-адресами, зарезервированными для использования в локальных сетях.
И в завершение следует блокировать и входящий, и исходящий трафик с широковещательными адресами получателя. Такие адреса обычно используются для быстрого сканирования сетей или при проведении атаки Smurf.
Значение идентификатора хранится в 4-м и 5-м байтах IP-заголовка. Для каждой новой отправляемой хостом дейтаграммы должен генерироваться уникальный идентификатор. Это значение обычно увеличивается на 1, хотя в некоторых случаях на 256 для каждой новой дейтаграммы.
Это уникальное значение требуется при фрагментации дейтаграммы. Всем фрагментам одной дейтаграммы присваивается одинаковый идентификатор. Поэтому часто такое поле называют идентификатором фрагмента. С помощью значения идентификатора хост-получатель сможет повторно собрать фрагменты одной дейтаграммы.
Возможные значения идентификатора лежат в диапазоне от 1 до 65535, так как это 16-битовое поле (значение 0, как правило, не используется). Когда достигается максимальное значение 65535, значение обнуляется и отсчет опять начинается с 1. Очевидно, что в пакетах из различных источников последовательности идентификаторов должны различаться. Поэтому, если регистрируется подозрительный трафик и, несмотря на то, что указаны различные IP-адреса отправителя, все равно сохраняется последовательное увеличение значений идентификаторов, то, скорее всего, осуществляется подмена IP-адресов отправителя.
Как и любое другое значение поля IP-заголовка, значение идентификатора может быть подменено хакером. Например, если злоумышленник использует программу, которая отправляет все пакеты с одинаковым идентификатором, то вы не сможете получить по значению этого поля какую-либо информацию о хосте нарушителя. Для отображения значений поля идентификатора и поля TTL в программе TCPdump предназначен параметр командной строки - w.
Как можно проверить, что пакет пришел именно от указанного отправителя? Можно узнать значение поля TTL принятого пакета, посмотреть на начальное значение этого поля (см. табл. 8.1) и, отняв от второго значения первое, получить ко личество переходов на пути пакета к сети получателя. Затем можно воспользоваться программой Traceroute и проверить количество переходов на обратном маршруте к хосту с подозрительным IP-адресом. Полученное значение может отличаться от количества переходов (hop count) при доставке подозрительного пакета по причине динамического характера маршрутизации. Но обычно эти значения не слишком различаются, если не было каких-либо серьезных проблем с маршрутизаторами или перегрузки в сети во время передачи одного из двух пакетов.
Таблица 8.1. Начальные значения поля ТТЬ для различных операционных систем
IPv4 является протоколом без установления соединения для использования в сетях с коммутацией пакетов. Он работает на модели доставки "лучшее из возможного", он не гарантирует доставку, а также обеспечения надлежащей последовательности или избежания дублирования доставки. Эти аспекты, в том числе целостности данных, рассматриваются верхним слоем транспортного протокола, например, протокола управления передачей (TCP).
Содержание
Адресация
IPv4 использует 32-разрядные (четыре байта) адреса, которые ограничивают адресное пространство до 4294967296 (2 32 ) адресов. Это ограничение стимулировало развитие IPv6 в 1990-е годы, который был в коммерческом развертывании с 2006 года.
Из-за спроса растущего Интернета, малое адресное пространство, наконец, иссякло 3 февраля 2011 года. IPv4 резервирует специальные блоки адресов для частных сетей (
18 миллионов адресов) и групповых адресов (
270 миллионов адресов).
Представления адреса
Форма записи | Пример | Преобразование из десятичной нотации с точками |
---|---|---|
Десятичная с точками | 192.0.2.235 | — |
Шестнадцатеричная с точками | 0xC0.0x00.0x02.0xEB | Каждый октет преобразуется в шестнадцатеричную форму |
Восьмеричная с точками | 0300.0000.0002.0353 | Каждый октет преобразуется в восьмеричную форму |
Шестнадцатеричная | 0xC00002EB | Конкатенация октетов из шестнадцатеричной нотации с точками |
Десятичная | 3221226219 | 32-битное число в десятичной форме |
Восьмеричная | 030000001353 | 32-битное число в восьмеричной форме |
IPv4-адреса могут быть представлены в любой записи, выражающей 32-битное целое значение. Они чаще всего написаны в десятично-точечном формате, который состоит из четырех октетов адреса, выраженных в индивидуальном порядке из десятичных чисел и разделенных периодами. Стандартные обозначения CIDR (бесклассовая адресация) сочетает в себе адрес с префиксом маршрутизации в компактном формате, в котором за адресом следует символ косой черты (/) и подсчета последовательных единичных битов в префиксе маршрутизации (маска подсети).
Например, IP-адрес 192.0.2.235 представляет 32-битное десятичное число 3221226219, которое в шестнадцатеричном формате является 0xC00002EB. Это также может быть выражено в десятичном формате с точками, как 0xC0.0x00.0x02.0xEB, или в восьмеричных значениях байта как 0300.0000.0002.0353.
Распределение
Первоначально, IP-адрес был разделен на две части: идентификатор сети был самым значительным (высшего порядка) октетом адреса, а идентификатор хоста являлся остальной частью адреса. Поэтому последний также назывался полем остатка (rest field). Это позволило создать более 256 сетей. Скоро это сочли недостаточным. Чтобы преодолеть это ограничение, октет высокого порядка был пересмотрен, чтобы создать набор классов сетей, в системе, которая позже стала известна как классовая адресация. Система определила пять классов, класс A, B, C, D и E. Классы A, B и C имеют разную битовую длину для новой сетевой идентификации. Остальная часть адреса использовалась, как и ранее, для идентификации хоста внутри сети, а это означает, что у каждого класса сети была разная емкость для адресации хостов. Класс D был выделен для многоадресной адресации, а класс Е был зарезервирован для будущих применений. Начиная примерно с 1985 года, были разработаны методы для подразделения IP-сетей. Одним из способов, который доказал, что является гибким, является использование маски подсети переменной длины (VLSM). На основе стандарта IETF RFC 1517, опубликованном в 1993 году, эта система классов была официально заменена Бесклассовой адресацией (CIDR), которая выражает число битов (от наиболее значимых), как, например, /24, а схема на основе классов была дублирована классовой, в отличие от этого. CIDR была разработана, чтобы позволить переразделение любого адресного пространства, так что меньшие или большие блоки адресов могут быть выделены для пользователей. Иерархическая структура, созданная CIDR, управляется организацией Internet Assigned Numbers Authority (IANA) и региональными интернет-реестрами (RIRs). Каждый RIR поддерживает базу данных WHOIS с публичной возможностью поиска, которая содержит информацию о назначениях IP-адреса
Адреса специального назначения
Целевая группа Internet Engineering (IETF) и Internet Assigned Numbers Authority (IANA) поставили ограничение на общее использование различных зарезервированных IP-адресов для специальных целей. Некоторые из них используются для обслуживания таблиц маршрутизации, для многоадресного трафика, эксплуатации в режимах отказа, или для обеспечения адресного пространства для общественных, частных сетей неограниченного пользования.
Диапозон | Описание | Отношение |
---|---|---|
0.0.0.0/8 | Текущая сеть (действует только в качестве адреса источника) | RFC 6890 |
10.0.0.0/8 | Частная сеть | RFC 1918 |
100.64.0.0/10 | Общее адресное пространство | RFC 6598 |
127.0.0.0/8 | Обратная петля(Loopback) | RFC 6890 |
169.254.0.0/16 | Локальный адрес канала | RFC 3927 |
172.16.0.0/12 | Частная сеть | RFC 1918 |
192.0.0.0/24 | Протокол назначений IETF | RFC 6890 |
192.0.2.0/24 | TEST-NET-1, документация и образцы | RFC 5737 |
192.88.99.0/24 | IPv6-to-IPv4 эстафета(или 6to4-механизм) | RFC 3068 |
192.168.0.0/16 | Частная сеть | RFC 1918 |
198.18.0.0/15 | Network benchmark tests | RFC 2544 |
198.51.100.0/24 | TEST-NET-2, документация и образцы | RFC 5737 |
203.0.113.0/24 | TEST-NET-3, документация и образцы | RFC 5737 |
224.0.0.0/4 | Групповая адресация (IP multicast) (бывшая сеть класса D) | RFC 5771 |
240.0.0.0/4 | Зарезервированные (бывшая сеть класса E) | RFC 1700 |
255.255.255.255 | Теле-радиовещание | RFC 919 |
Частные сети
Из примерно четырех миллиардов разрешенных адресов IPv4, три диапазона адреса зарезервированы для использования в частных сетях. Эти диапазоны не маршрутизируемы за пределами частных сетей, а также частные машины не могут напрямую связываться с сетями общего пользования. Они могут, однако, сделать это через трансляции сетевых адресов.
Ниже приведены три диапазона, зарезервированых для частных сетей (RFC 1918):
Имя | Адресный диапазон | Число адресов | Классовое описание | Наибольший CIDR блок |
---|---|---|---|---|
24-битный блок | 10.0.0.0–10.255.255.255 | 16 777 216 | Класс А | 10.0.0.0/8 |
20-битный блок | 172.16.0.0–172.31.255.255 | 1 048 576 | Смежный диапазон из 16 блоков класса B | 172.16.0.0/12 |
16-битный блок | 192.168.0.0–192.168.255.255 | 65 536 | Смежный диапазон из 256 блоков класса C | 192.168.0.0/16 |
Виртуальные частные сети
Опционально, инкапсулированные пакеты могут быть зашифрованы для защиты данных во время прохождения через сеть общего пользования.
Локально-канальная адресация (Link-local addressing)
RFC 6890 определяет специальный блок адресов 169.254.0.0/16 для локальной адресации. Эти адреса действительны только на ссылках (например, локальное соединение или сегмент сети точка-точка), подключенных к хосту. Эти адреса не маршрутизируемы. Как частные адреса, эти адреса не могут быть источником или пунктом назначения пакетов, проходящих через Интернет. Эти адреса используются в основном для автоконфигурирования адреса (Zeroconf), когда хост не может получить IP-адрес от DHCP сервера или других внутренних методов конфигурирования.
Когда блок адресов был зарезервирован, не существовало никаких стандартов для автонастройки адреса. Microsoft создала реализацию под названием Automatic Private IP Addressing (APIPA), которая была развернута на миллионах машин и стала стандартом де-факто. Много лет спустя, в мае 2005 года IETF определила официальный стандарт RFC 3927 под названием Dynamic Configuration of IPv4 Link-Local Addresses.
Loopback [1]
Сеть класса А 127.0.0.0 (бесклассовая сеть 127.0.0.0/8) резервируется для обратной петли(loopback). IP-пакеты, у которых источник адреса принадлежит к этой сети, никогда не должны появляться за пределами хоста. Принцип работы этой сети расширяется при том, что из интерфейса обратной петли:
- IP-пакеты, чьи адреса источника и назначения принадлежат к сети (или подсети) одного и того же интерфейса обратной петли, возвращаются к этому интерфейсу;
- IP-пакеты, чьи адреса источника и назначения принадлежат сетям (или подсетям) различных интерфейсов одного и того же хоста, один из которых - интерфейс loopback, регулярно пересылаются.
Адреса, оканчивающиеся на 0 или 255
Сети с маской подсети, по крайней мере, 24 бита, т.е. сетей класса C классовой адресации, и сети с CIDR окончаниями / 24 к / 32 (255.255.255.0-255.255.255.255) могут не иметь адрес, заканчивающийся на 0 или 255.
Классовая адресация назначила только три возможные маски подсети: Класс A, 255.0.0.0 или / 8; Класс B, 255.255.0.0 или / 16; и класса C, 255.255.255.0 или / 24. Например, в подсети 192.168.5.0/255.255.255.0 (192.168.5.0/24) идентификатор 192.168.5.0 обычно используется для обозначения всей подсети. Во избежание недоразумений в представлении, зарезервирован адрес, заканчивающийся в октете 0.
Широковещательный адрес является адресом, который позволяет отправлять информацию на все интерфейсы в данной подсети, а не конкретной машине. Как правило, широковещательный адрес ищется путем получения битового дополнения маски подсети и выполнения операции побитовое ИЛИ с идентификатором сети. Другими словами, широковещательный адрес — последний адрес в диапазоне адресов подсети. Например, широковещательный адрес для сети 192.168.5.0 является 192.168.5.255. Для сетей размером / 24 или больше, широковещательный адрес всегда заканчивается 255.
Тем не менее, это не означает, что каждый адрес, оканчивающийся на 0 или 255, не может быть использован в качестве адреса хоста. Например, в / 16 подсети 192.168.0.0/255.255.0.0, что эквивалентно диапазону адресов 192.168.0.0-192.168.255.255, широковещательный адрес — 192.168.255.255. Можно использовать следующие адреса для хостов, даже если они заканчиваются 255: 192.168.1.255, 192.168.2.255 и т.д. Кроме того, 192.168.0.0 является идентификатором сети и не должен быть отнесен к интерфейсу. Адреса 192.168 .1.0, 192.168.2.0 и т.д., могут быть назначены, несмотря на окончание с 0.
В прошлом, конфликт между сетевыми адресами и широковещательными адресами возник потому, что некоторые программы использовали нестандартные широковещательных адреса с нулями вместо них.
В сетях меньших, чем / 24, широковещательные адреса не обязательно заканчиваются 255. Например, CIDR подсеть 203.0.113.16/28 имеет широковещательный адрес 203.0.113.31.
Преобразование адреса
Перевод между адресами и доменными именами осуществляется с помощью системы доменных имен (DNS), иерархической, распределенной системе присвоения имен, которая позволяет передачу из пространств имен на другие DNS-серверы.
Исчерпание адресного пространства
С 1980-х годов, было очевидно, что пул свободных адресов IPv4 был истощается со скоростью, которая не предполагалась изначально в первоначальном проектировании системы сетевого адреса. Угроза истощения была мотивацией для восстановительных технологий, таких как: сети классовой адресации, методы бесклассовой адресации (CIDR), и преобразование сетевых адресов (NAT). В конечном счете, был создан IPv6, который имеет гораздо больше доступных адресов.
Некоторые рыночные силы ускорили истощение IPv4 адресов:
- быстро растущее число Интернет-пользователей
- ADSL модемы, кабельные модемы
- мобильные устройства — ноутбуки, мобильные телефоны
Некоторые технологии смягчили истощение адресов IPv4:
- Трансляция сетевых адресов (NAT - Network address translation) — это технология, которая позволяет частной сети использовать один публичный IP-адрес. Она разрешает частные адреса для частной сети.
- Использование частных сетей
- Dynamic Host Configuration Protocol (DHCP)
- Виртуальный хостинг веб-сайтов на основе имени
- Более строгий контроль со стороны региональных интернет-реестров по распределению адресов по местным Интернет регистрам
- Перенумерация сети для возвращения крупных блоков адресного пространства, выделенного в первые дни Интернета
Основной пул адресов Интернета, утвержденный IANA, был исчерпан 3 февраля 2011 года, когда последние 5 блоков были выделены 5 региональным интернет-реестрам. Asia-Pacific Network Information Centre (APNIC) был первым региональным интернет-реестром, исчерпавшим свой региональный пул 15 апреля 2011, кроме небольшого количества адресного пространства, зарезервированного для перехода к IPv6, которые будут выделены в рамках гораздо более жесткой политики.
Принятое и стандартное долгосрочное решение заключается в использовании Internet Protocol Version 6. Размер адреса был увеличен в IPv6 до 128 бит, что обеспечивает существенное увеличение объема адресного пространства, что также позволяет улучшить агрегацию маршрута через Интернет и предлагает большие распределения подсетей с минимум 2 64 хост-адресов для конечных пользователей. Однако хосты IPv4-only не могут напрямую общаться с хостами IPv6-only, поэтому IPv6 в одиночку не обеспечивает немедленное решение проблемы исчерпания IPv4. Переход на IPv6 в стадии разработки, но завершение, как ожидается, займет значительное время.
Структура пакетов
Пакет IP состоит из раздела заголовка и секции данных.
Заголовок
Заголовок пакета IPv4 состоит из 14 полей, из которых 13 являются обязательными. 14-е поле не является обязательным (красный фон в таблице) и называются опциями. Поля используют порядок байтов от старшего к младшему, старшие биты идут первыми. Первый бит имеет номер 0. Таким образом, например, поле с версией находится в четырёх старших битах первого байта. При передаче многооктетных значений старший октет передается первым.
- 0: Зарезервирован, должен быть равен 0.В качестве первоапрельской шутки предложен означать злонамеренность пакета (evil bit)
- 1: Не фрагментировать
- 2: У пакета ещё есть фрагменты
- Замечание: Размер заголовка более 5 слов указывает на присутствие опций и необходимость их обработки.
- Замечание: Поля «копировать», «класс опции» и «номер опции» иногда называют одним восьмибитным полем «тип опции».
Данные
Часть данных пакета не включена в пакет контрольной суммы. Его содержание интерпретируется на основе значения поля заголовка протокола.
Читайте также: