
Для того чтобы отправить кому-то информацию через Интернет, вам нужен правильный адрес — точно так же, как при отправке обычного письма по почте. Однако в данном случае это IP-адрес. Подобно тому, как письмо получает марку, чтобы убедиться, что оно дошло до нужного адресата, пакеты данных получают IP-адрес. Разница между IP-адресом и почтовым адресом заключается в том, что они не связаны с конкретным местоположением как таковым: вместо этого они автоматически или вручную присваиваются сетевым устройствам во время установки соединения. «Протокол Интернета» играет важную роль в этом процессе.
Интернет-протокол (сокращенно IP) является основным протоколом в семействе интернет-протоколов и поэтому имеет фундаментальное значение при обмене сообщениями в компьютерных сетях. Этот протокол без соединений, опубликованный в 1974 году Институтом инженеров по электротехнике и электронике (IEEE) и указанный в качестве стандарта в RFC 791, предназначен в первую очередь для обеспечения успешной передачи пакетов от отправителя к адресату. Для этого Интернет-протокол определяет формат, который определяет, какое описание имеют эти пакеты данных.
Протокол Интернета: Определение и история.
Интернет-протокол (IP) — это протокол, не требующий подключения, который является составной частью набора протоколов Интернета (совокупность около 500 сетевых протоколов) и отвечает за адресацию и фрагментацию пакетов данных в цифровых сетях. Вместе с транспортным уровнем TCP (Transmission Control Protocol) IP составляет основу Интернета. Чтобы иметь возможность отправить пакет от отправителя к адресату, интернет-протокол создает структуру пакета, которая обобщает отправленную информацию. Таким образом, протокол определяет, как описывается информация об источнике и пункте назначения данных, и отделяет эту информацию от информативных данных в заголовке IP. Такой формат пакета также известен как IP-дейтаграмма.
В 1974 году Институт инженеров по электротехнике и электронике (IEEE) опубликовал научную работу американских компьютерщиков Роберта Кана и Винта Серфа, которые описали модель протокола для взаимного пакетного сетевого соединения на основе предшественника интернета ARPANET. Помимо протокола управления передачей TCP, основным компонентом этой модели был протокол IP, который (за исключением специального уровня абстракции) позволял осуществлять связь между различными физическими сетями. После этого все больше и больше исследовательских сетей объединялись на основе комбинации протоколов «TCP/IP», которая в 1981 году была окончательно определена как стандарт в RFC 971.
IPv4 и IPv6: что скрывается за разными номерами версий?
Сегодня те, кто интересуется характеристиками конкретного IP-адреса, например, такого, который позволит адресовать компьютеры в локальной сети, несомненно, столкнутся с двумя вариантами IPv4 и IPv6. Однако, несмотря на то, что в прошлом протокол IP претерпел значительные изменения, он ни в коем случае не является четвертым или шестым поколением. IPv4 фактически является первой официальной версией Интернет-протокола, в то время как номер версии относится к тому факту, что используется четвертая версия протокола TCP. IPv6 является прямым преемником IPv4 — разработка IPv5 была преждевременно приостановлена по экономическим причинам.
Несмотря на то, что после IPv4 и IPv6 не было выпущено новых версий, протокол Интернета был пересмотрен с момента его первого упоминания в 1974 году (до этого он был лишь частью TCP и не существовал самостоятельно). Основное внимание было уделено оптимизации установки соединения и адресации. Например, длина бита в адресах хостов была увеличена с 16 до 32 бит, что позволило расширить адресное пространство примерно до четырех миллиардов возможных прокси. Перспективный протокол IPv6 имеет 128-битные адресные поля и позволяет использовать около 340 секстиллионов (число с 37 нулями) различных адресов, удовлетворяя тем самым долгосрочную потребность в интернет-адресах.
Как строится IP-заголовок дейтаграммы?
Как уже говорилось ранее, Интернет-протокол гарантирует, что каждый пакет данных предваряется важными структурными характеристиками в заголовке и назначается соответствующему транспортному протоколу (обычно TCP). Область данных заголовка была кардинально пересмотрена для версии 6, поэтому необходимо указать между заголовками IPv4 и IPv6.
Построение заголовков IPv4

Каждый IP-заголовок всегда начинается с 4-битного указания номера версии интернет-протокола — IPv4 или IPv6. Затем идут еще 4 бита, которые содержат информацию о длине IP-заголовка (длина IP-заголовка), поскольку она не всегда остается постоянной. Общая длина заголовка всегда вычисляется из этого значения, умноженного на 32 бита. Таким образом, наименьшая возможная длина заголовка составляет 160 байт (эквивалентно 20 байтам), когда не добавляются никакие опции. Максимальное значение — от 15 до 480 бит (эквивалентно 60 байтам). Биты с 8 по 15 (тип обслуживания) содержат инструкции по обработке и определению приоритетов дейтаграммы. Здесь хост может указать важность таких пунктов, как, например, надежность, пропускная способность и задержка при передаче данных.
Общая длина определяет общий размер пакета данных — другими словами, она добавляет размер полезных данных к длине заголовка. Поскольку длина поля составляет 16 бит, максимальный предел — 65 635 байт. В RFC 791 указано, что каждый хост должен быть способен обрабатывать не менее 576 байт. Датаграмма IP может быть фрагментирована на пути от хоста к маршрутизаторам или другим устройствам по желанию, но фрагменты не должны быть меньше упомянутых 576 байт. Остальные поля заголовка IPv4 имеют следующие значения:
- Идентификация: Все фрагменты дейтаграммы имеют одинаковый идентификационный номер, который они получают от отправителя. Сопоставляя это 16-битное поле, целевой хост может отнести отдельные фрагменты к конкретной дейтаграмме.
- Флаги: Каждый IP-заголовок содержит 3 бита флагов, которые содержат информацию и рекомендации по фрагментации. Первый бит зарезервирован и всегда имеет значение 0. Второй бит, называемый «Don’t Fragment», сообщает, может ли пакет быть фрагментирован (0) или нет (1). Последний бит «More Fragments» указывает, следуют ли за ним дальнейшие фрагменты (1) или пакет завершен или будет завершен текущим фрагментом (0).
- Выравнивание фрагментов: Это поле информирует целевой хост о том, где находится отдельный фрагмент, чтобы можно было легко собрать всю дейтаграмму заново. Длина 13 бит означает, что дейтаграмма может быть разбита на 8192 фрагмента.
- Время жизни (Time to Live, TTL): Чтобы гарантировать, что пакет в сети не может бесконечно мигрировать от узла к узлу, он отправляется с максимальным временем жизни (Time to Live). Стандарт RFC предусматривает единицу измерения секунд для этого 8-битного поля, а максимальное время жизни составляет 255 секунд. TTL уменьшается как минимум на 1 для каждого прошедшего узла сети. При достижении значения 0 пакет данных автоматически отбрасывается.
- Протокол: Поле протокола (8 бит) присваивает пакету данных соответствующий транспортный протокол, например, значение 6 для протокола TCP или значение 17 для протокола UDP. Официальный список всех возможных протоколов управляется и поддерживается IANA (Internet Assigned Numbers Authority) с 2002 года.
- Заголовок/Контрольная сумма: 16-битное поле «Контрольная сумма» содержит контрольную сумму для заголовка. Она должна быть пересчитана на каждом узле сети из-за уменьшающегося TTL на промежуток времени. Точность пользовательской информации остается непроверенной из соображений эффективности.
- Адрес источника и адрес назначения: Каждые 32 бита (4 байта) зарезервированы под назначенный IP-адрес отправляющего и целевого узлов. Эти IP-адреса обычно записываются в виде 4 десятичных чисел, разделенных точками. Самый младший адрес — 0.0.0.0, а самый старший — 255.255.255.255.
- Опции: Поле опций расширяет протокол IP дополнительной информацией, которая не предусмотрена в стандартной схеме. Поскольку это всего лишь необязательные дополнения, поле имеет переменную длину, которая ограничена максимальной длиной заголовка. Примеры возможных опций включают: «Security» (указывает, насколько секретна датаграмма), «RecordRoute» (указывает все узлы сети, которые прошли, их IP-адрес, чтобы проследить маршрут пакета), и «Time Stamp» (добавляет время, в которое был пройден конкретный узел).
Построение заголовков IPv6

В отличие от заголовка предшественника, заголовок протокола IPv6 имеет фиксированный размер 320 бит (40 байт). Менее часто требуемая информация может быть присоединена отдельно между стандартным заголовком и пользовательскими данными. Эти заголовки расширения можно сравнить с полем опций протокола IPv4, и их можно адаптировать в любое время без необходимости изменения фактического заголовка. Среди прочего, вы можете определить маршруты пакетов, указать информацию о фрагментации или инициировать шифрованную связь через IPSec. Для оптимизации производительности контрольная сумма заголовка не существует.
Как и в IPv4, фактический заголовок IP начинается с 4-битного номера версии интернет-протокола. Следующее поле под названием «Класс трафика» эквивалентно записи «Тип обслуживания» в более старом варианте протокола. К этим 8 битам применяются те же правила, что и в предыдущей версии: они информируют целевой узел о качественной обработке дейтаграммы. Новой особенностью IPv6 является метка FlowLabel (20 бит), которая позволяет идентифицировать потоки данных из непрерывных пакетов данных. Это позволяет резервировать пропускную способность и оптимизировать маршрутизацию.
Следующий список объясняет дополнительную информацию заголовка для усовершенствованного протокола IP:
- Размер пользовательских данных: IPv6 передает значение размера передаваемых пользовательских данных, включая заголовки расширения (всего 16 бит). В предыдущей версии это значение нужно было вычислять отдельно из общей длины минус длина строки заголовка.
- Следующий заголовок: 8-битное поле «Next Header» является аналогом спецификации протокола в IPv4 и поэтому также приняло на себя его функцию — назначение желаемого транспортного протокола.
- Hop-Limit: Hop limit (8 бит) определяет максимальное количество промежуточных станций, через которые может пройти пакет, прежде чем он будет отброшен. Как и TTL в IPv4, это значение уменьшается по крайней мере на 1 с каждым узлом.
- Адрес источника и назначения: Большинство заголовков IPv6 содержат адреса отправителя и получателя. Как уже упоминалось ранее, их длина составляет 128 бит (вчетверо больше, чем у адресов IPv4). Существуют также значительные различия в стандартной нотации. Более новая версия Интернет-протокола использует шестнадцатеричные числа и делит их на 8 блоков по 16 бит каждый. Для их разделения вместо простых точек используются двойные точки. Например, полный адрес IPv6 выглядит следующим образом
2001:0db8:85a3:08d3:1319:8a2e:0370:7344.
.
Как работает адресация Интернет-протокола?
Для того чтобы в заголовке дейтаграммы были указаны начальный и конечный адреса, они должны быть сначала назначены абонентам сети. Обычно они назначаются между внутренними и внешними, или публичными, IP-адресами. Для первых зарезервированы три диапазона адресов, которые используются для связи в локальных сетях:
- 10.0.0.0 bis 10.255.255.255
- 172.16.0.0 bis 172.31.255.255
- 192.168.0.0 bis 192.168.255.255
Префикс «fc00::/7» предусмотрен для сетей IPv6. Адреса в этих сетях не маршрутизируются в интернете и поэтому могут свободно выбираться и использоваться в частных или корпоративных сетях. Адреса успешно назначаются либо вручную, либо автоматически, как только устройство подключается к сети, если активирована функция автоматического назначения адресов и используется DHCP-сервер. С помощью маски подсети этот тип локальной сети можно также выборочно сегментировать на другие области.
Внешние IP-адреса при подключении к Интернету автоматически маршрутизируются соответствующим интернет-провайдером. Все устройства, подключенные к Интернету через общий маршрутизатор, получают доступ к одному и тому же внешнему IP. Как правило, провайдеры назначают новый интернет-адрес каждые 24 часа из диапазона адресов, который был назначен им IANA. Это относится и к практически неисчерпаемому арсеналу адресов IPv6, которые лишь частично освобождены для обычного использования. Более того, он не просто делится на частные и публичные адреса, но может отличаться гораздо более универсальными возможностями классификации в так называемых «диапазонах адресов»:
- Host Scope: Адрес loopback 0:0:0:0:0:0:0:0:0:0:0: может использоваться хостом для отправки дейтаграмм IPv6 самому себе.
- Link Local Scope: Для обеспечения связи IPv6 необходимо, чтобы каждый узел имел свой собственный адрес, даже если он действителен только в локальной сети. Этот локальный адрес ссылки обозначается префиксом «fe80::/10» и используется, например, для связи со стандартным шлюзом (маршрутизатором) с целью генерации публичного IP-адреса.
- Уникальный локальный диапазон: Это вышеупомянутый диапазон адресов «fc00::/7», который зарезервирован исключительно для конфигурации локальных сетей.
- Локальный диапазон сайта: Локальный диапазон сайта — это уже устаревший префикс «fec0::/10», который также был определен для локальных сетей. Однако как только стали соединяться различные сети или создаваться VPN-соединения между сетями, которые были пронумерованы адресами site-local, стандарт стал считаться утратившим силу.
- Глобальная область применения: Любой узел, который хочет подключиться к Интернету, как минимум, нуждается в собственном публичном адресе. Он получается путем автоматической конфигурации, либо с помощью SLAAC (конфигурация адресов без статического изменения) или DHCPv6 (конфигурация адресов, ориентированная на состояние).
- Сфера действия многоадресной рассылки: Сетевые узлы, маршрутизаторы, серверы и другие сетевые службы могут быть объединены в многоадресные группы с помощью IPv6. Каждая из этих групп имеет свой собственный адрес, что позволяет одному пакету достигать всех участвующих узлов. Префикс «ff00::/8» указывает на то, что за ним следует многоадресная рассылка.
Как протокол IP регулирует фрагментацию
Всякий раз, когда пакет данных должен быть отправлен через TCP/IP, автоматически проверяется его общий размер. Если размер превышает максимальную единицу передачи соответствующего сетевого интерфейса, информация фрагментируется, т.е. разделяется на более мелкие блоки данных. Эту задачу берет на себя отправляющий хост (IPv6) или промежуточный маршрутизатор (IPv4). По умолчанию пакет составляется получателем, который обращается к информации о фрагментации, хранящейся в заголовке IP или в заголовке расширения. В исключительных случаях сборку может взять на себя брандмауэр, если он настроен соответствующим образом.
Поскольку IPv6, как правило, больше не обеспечивает фрагментацию и не допускает фрагментацию маршрутизатором, IP-пакет перед отправкой уже должен иметь подходящий размер. Если маршрутизатор достигает дейтаграмм IPv6, размер которых превышает максимальную единицу передачи, он отбрасывает их и сообщает отправителю сообщение ICMPv6 типа 2 «Packet Too Big». Теперь приложение, отправляющее данные, может либо создать меньшие, не фрагментированные пакеты, либо инициировать фрагментацию. Впоследствии к IP-пакету добавляется соответствующий заголовок расширения, чтобы целевой узел мог повторно собрать отдельные фрагменты после приема.