Пакет (сетевые технологии)
В компьютерных сетях пакет — это определённым образом оформленный блок данных, передаваемый по сети в пакетном режиме. Компьютерные линии связи, которые не поддерживают пакетный режим, как, например, традиционная телекоммуникационная связь точка-точка, передают данные просто в виде последовательности байтов, символов или битов поодиночке. Если данные сформированы в пакеты, битрейт коммуникационной среды можно более эффективно распределить между пользователями, чем в сети с коммутацией каналов. При использовании сетей с коммутацией пакетов можно надёжно гарантировать пороговый битрейт, ниже которого он опускаться не будет.
Содержание
Разметка пакета
Пакет состоит из двух типов данных: управляющей информации и данных пользователя (называемых также полезной нагрузкой). Управляющая информация содержит данные, необходимые для доставки данных пользователя: адреса отправителя и получателя, коды обнаружения ошибок (типа контрольных сумм) и информацию об очерёдности. Как правило, управляющая информация содержится в заголовке и хвосте пакета, а между ними размещаются пользовательские данные.
Различные коммуникационные протоколы используют разные соглашения для разделения элементов и для форматирования данных. В протоколе «двоичной синхронной передачи» пакет отформатирован в 8-битных байтах, а для разделения элементов используются специальные символы. В других протоколах, таких как Ethernet, зафиксировано начало заголовка и элементов данных, их расположение относительно начала пакета. Некоторые протоколы форматируют информацию на уровне битов, а не байтов.
Хорошей аналогией является рассмотрение пакета как письма: заголовок является конвертом, а область данных — это то, что человек вкладывает внутрь конверта. Разница, однако, состоит в том, что некоторые сети могут в случае необходимости разбивать больше пакеты на более мелкие (заметим, что эти меньшие элементы данных также форматируются как пакеты).
При проектировании сети с применением пакетов можно достичь двух важных результатов: обнаружение ошибок и многохостовая адресация.
Обнаружение ошибок
Более эффективным и надёжным методом обнаружения ошибок является расчёт контрольной суммы или циклического избыточного кода над содержимым пакета, чем проверка каждого символа с помощью бита чётности.
Хвостовая часть пакета часто содержит данные проверки ошибок, возникших во время передачи пакета по сети.
Адрес хоста
Современные сети обычно соединяют между собой три или более хоста. В таких случаях заголовок пакета обычно содержит информацию, в которой записан фактический адрес хоста. В сложных сетях, построеннных из нескольких узлов коммутации и маршрутизации, такие как ARPANET или современный интернет, ряд пакетов, отправленных с одного компьютера на другой, может следовать разными маршрутами. Эта технология называется пакетной коммутацией.
Сравнение пакетов и дейтаграмм
Вообще говоря, термин пакет распространяется на любое сообщение, форматированное как пакет, тогда как термин дейтаграмма обычно используется для пакетов «ненадёжных» служб. [1] «Надёжной» является служба, которая уведомляет пользователя, если доставка не удалась, тогда как «ненадёжная» такого уведомления пользователя не делает. Например, IP не обеспечивает надёжный сервис, а TCP и IP вместе его обеспечивают, тогда как UDP с IP надёжный сервис не обеспечивают. Все эти протоколы используют пакеты, но UDP-пакеты, как правило, называют дейтаграммами. [1]
Когда сеть ARPANET впервые выступила с коммутацией пакетов, она обеспечивала надёжную процедуру доставки пакетов к серверам через свой интерфейс 1822. Сервер сети организует данные в пакет нужного формата, вставляет туда адрес компьютера назначения и посылает сообщение через интерфейс процессору передачи сообщений. Как только сообщение доставлено к серверу назначения, на посылающий сервер доставляется подтверждение. Если сеть не может доставить сообщение, на посылающий сервер будет послано извещение об ошибке.
Разработчики CYCLADES и ALOHAnet продемонстрировали, что можно построить эффективную компьютерную сеть, не обеспечивая надёжную передачу пакетов. Этот опыт позже был использован конструкторами Ethernet.
Если сеть не гарантирует доставку пакетов, то сервер становится ответственным за обеспечение надёжности и повторную передачу потерянных пакетов. Последующий опыт показал, что ARPANET сама по себе не может надёжно определить все неудачные доставки пакетов, и это подтолкнуло возложить во всех случаях ответственность за обнаружение ошибок на хост-отправитель. Это привело к появлению принципа сквозной связи, который является одной из фундаментальных основ интернета.
Пример: IP пакет
IP-пакеты состоят из заголовка и полезной нагрузки. Заголовок пакета IPv4 состоит из:
- 4 бита содержат версию пакета: IPv4 или IPv6.
- 4 бита содержат длину интернет-заголовка, которая измеряется отрезками по 4 байта (например, 5 означает 20 байт).
- 8 бит содержат тип обслуживания, известный также как качество обслуживания (QoS), описывающее приоритеты пакета.
- 16 бит содержат длину пакета в байтах.
- 16 бит содержат тег идентификации, помогающие восстановить пакет из нескольких фрагментов.
- 3 бита содержат нуль, флаг разрешения фрагментации пакета (DF: не фрагментировать), а также флаг разрешения дальнейшей фрагментации (MF: фрагментировать дальше).
- 13 бит содержат смещение фрагмента, поле для идентификации положение фрагмента в исходном пакете.
- 8 бит содержат время жизни (TTL), которое определяет количество переходов (через маршрутизаторы, компьютеры и сетевые устройства), разрешённых пройти пакету, прежде чем он исчезнет (например, пакету с TTL 16 разрешено пройти не более 16 маршрутизаторов, чтобы добраться до места назначения).
- 8 бит содержат протокол (TCP, UDP, ICMP и т. д.).
- 16 бит содержат контрольную сумму заголовка, используемую при обнаружении ошибок.
- 32 бит содержат IP-адрес источника.
- 32 бит содержат адрес назначения.
После этих данных могут быть добавлены разное количество необязательных флагов, меняющиеся в зависимости от используемого протокола, затем идут данные, которые переносит пакет. IP-пакет не имеет хвостового прицепа. Однако, IP-пакетов часто переносятся как полезная нагрузка внутри фрейма Ethernet, который имеет свой собственный заголовок и хвост.
Доставка не гарантируется
Многие сети не гарантируют доставку, отсутствие дубликатов пакетов и порядок их доставки, как например, протокол UDP в сети Интернет. Тем не менее, это можно сделать в верхней части пакета услуг транспортного уровня, который может обеспечить такую защиту. TCP и UDP являются лучшими примерами 4 транспортного уровня, одного из семи уровней сетевой модели OSI.
Заголовок пакета определяет тип данных, номер пакета, общее количество пакетов и IP-адреса отправителя и получателя.
Иногда используется термин «кадр» для обозначения пакетов в точности так, как он используется при передаче сигнала по проводам или радио.
Что такое заголовок пакета данных

IP (Internet Protocol) — протокол сетевого уровня стека TCP/IP. Протокол был создан в 1981 году и описан в RFC 791. Основной задачей протокола является доставка датаграмм между хостами сетей TCP/IP через произвольное число промежуточных узлов (маршрутизаторов).
Функции, реализуемые IP:
- Основа передачи данных.
- Адресация.
- Маршрутизация.
- Фрагментация датаграмм.
Протокол IP не гарантирует надежной доставки пакета: пакеты могут прийти в неправильном порядке, пакет может быть утерян, пакет может продублироваться или оказаться поврежденным. За надежность доставки пакетов отвечают протоколы транспортного уровня.
На данный момент наиболее распространена четвертая версия протокола (IPv4), однако ведутся активные работы по внедрению более совершенного IPv6.
Содержание
IPv4 [ править ]
IPv4 (англ. Internet Protocol version 4) — четвёртая версия интернет протокола (IP). Описан в IETF в статье RFC 791 (сентябрь 1981 года). Это один из самых используемых интернет протоколов. Был введен в использование в ARPANET в 1983 году.
Функция протокола — передавать дейтаграммы по множеству соединенных сетей.
Структура пакета [ править ]
Рассмотрим формат IPv4-дейтаграмм.
Дейтаграмма состоит из заголовка и основной части (данных). Биты передаются слева направо и сверху вниз (big-endian порядок). В настоящее время ясно, что лучше было бы использовать обратный (little-endian) порядок, но во время создания протокола это не было очевидно. Так на Intel x86 требуется программное преобразование, как при передаче, так и при приеме.
Рассмотрим структуру заголовка:
- Версия: 4 бита
- Поле Версия содержит версию протокола, к которому принадлежит пакет. В случае IPv4 это 4.
- Поле IHL (англ. Internet Header Length) содержит длину заголовка (в нем указано число 32 -разрядных слов). Следовательно, оно указывает на начало данных. Минимальное значение длины равно 5 . Максимальное — 15, что соответствует заголовку длиной 60 байт. Так, максимальный размер необязательного поля равен 40 байтам.
- Изначально это поле называлось Тип службы. По спецификации оно предназначено для различения классов обслуживания. Но поскольку никто не знал, что с ним делать, оно много лет не использовалось. Теперь, когда появилось дифференцированное обслуживание, ему нашли другое применение. Первые 6 бит задают класс обслуживания (DSCP), а в последние 2 помещаются явные уведомления о перегруженности (ECN).
- Поле Полная длина содержит длину всей дейтаграммы, включая как заголовок, так и данные. Минимальная длина равна 20 байтам. Максимальное допустимое значение равно 65535 байт. Такие длинные дейтаграммы непрактичны для большинства хостов и сетей. Так, все хосты должны уметь принимать дейтаграммы до 576 байтов. Рекоммендуется отправлять дейтаграммы большего размера, только если есть уверенность, что принимающая сторона сможет их обработать.
- Идентификатор позволяет хосту-получателю определить какому пакеты принадлежат полученные им фрагменты. Все фрагменты одного пакета содержат одно и то же значение идентификатора.
- Бит 0: зарезервированное значение, должны быть равно 0.
- Бит 1 (DF): Не фрагментировать (англ. Don’t Fragment). 0 — можно фрагментировать, 1 — нельзя. Также может использоваться при определении путевого значения MTU, которое равно максимальному размеру пакета, передаваемого по пути без фрагментации. Пометив этот бит, отправитель гарантирует, что либо дейтаграмма дойдет единым блоком, либо отправитель получит сообщение об ошибке.
- Бит 2 (MF): Продолжение следует (англ. More Fragments). 0 — в последнем фрагменте, 1 — в предыдущих.
- Это поле указывает положение фрагмента в исходном пакете. Длина всех фрагментов в байтах должна быть кратна 8 (кроме последнего). Позволяет (2^13−1)×8=65528 байт смещения, что превышает максимальный размер пакета.
- Поле Время жизни (TTL, англ. Time To Live) представляет собой счетчик, ограничивающий время жизни пакета. По спецификации он отсчитывает время в секундах, таким образом допуская максимальное время жизни пакета в 255 с. На каждом маршрутизаторе значение должно уменьшаться как минимум на единицу плюс время стояния в очереди. Но на практике этот счетчик считает количество переходов черех маршрутизаторы. Когда значение равно 0, пакет отвергается, а отправителю отсылается сообщение ICMPTime Exceeded. Таким образом удается избежать вечного странствования пакетов.
- Это поле указывает, какому процес транспортного уровня передать этот пакет, например TCP, UDP, ICMP. Присвоенные номера протоколов можно найти на сайте IANA.
- Это поле хранит контрольную сумму только заголовка. Так как некоторые поля меняются (например, TTL), то оно пересчитывается на каждом транзитивном участке. Используется следующий алгоритм: складываются все 16-разрядные полуслова заголовка в дополнительном коде, преобразуя результат также в дополнительный код. Таким образом проверяемая получателем контрольная сумма заголовка (вместе с этим полем) должна быть равна нулю. Более подробно алгоритм описан в RFC 1071.
- В начале поля всегда располагается однобайтный идентификатор. Иногда за ним может располагаться также однобайтное поле длины, а затем один или несколько информационных байтов. Размер этого поля должен быть кратен 4 байтам. Поле опции имеет следующий формат:
- 1 бит — флаг копирования. Показывает, если опция скопирована во все фрагменты.
- 2 бита — класс опции. Могут быть следующие классы: 0 — control, 2 — debugging и измерение, 1 и 3 — зарезервированы на будущее.
- 5 бит — номер опции.
- Безопастность — указывет уровень секретности дейтаграммы. Но на практике все его игнорируют.
- Строгая маршрутизация от источника — задает полный путь следования дейтаграммы.
- Свободная маршрутизация от источника — задает список маршрутизаторв, которыенельзя миновать.
- Запомнить маршрут — требует от всех маршрутизаторов добавлять свой IP-адрес.
- Временной штамп — требует от всех маршрутизаторв добавлять свой IP-адрес и текущее время.
- Часть из нулей, гарантирующая, что длина заголовка заканчивается на 32 бите.
Пример [ править ]
IPv4 и его расположение внутри кадра.
IPv6 [ править ]
IPv6 (англ. Internet Protocol version 6) — новая версия интернет протокола (IP), являющаяся результатом развития IPv4. Протокол был создан IETF в 1996 году. Описан в спецификации RFC 2460.
Основной причиной для создания новой версии протокола послужил факт скорого исчерпания пула IPv4 адресов (по разным оценкам последние выделенные IANA адреса будут заняты в период с 2016 по 2020 года).
Основные отличия IPv6 от IPv4:
- В IPv6 заголовок имеет фиксированную длину 40 октетов.
- Поле общей длины заменено полем длины области данных.
- В IPv6 предусмотрена передача пакетов, длины которых превышают 64 кбайт.
- Заголовки надстроек.
- Поле времени жизни заменено полем ограничения количества переходов.
- Многие дополнения IPv4 были оформлены как отдельные протоколы.
Структура пакета [ править ]
IP-адрес [ править ]
Определение: IP-адрес — уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу IP. IPv4-адрес [ править ]
IPv4 использует 32-битные адреса, ограничивающие адресное пространство 4 294 967 296 (2 32 ) возможными уникальными адресами. У каждого хоста и маршрутизатора в Интеренете есть IP-адрес. IP-адрес не имеет отношения к хосту. Он имеет отношение к сетевому интерфейсу, поэтому иногда хост или маршрутизатор могут иметь несколько IP-адресов.
IP-адреса имеют иерархическую организацию. Первая часть имеет переменную длину и задает сеть, а последняя указывает на хост.
Обычно IP-адреса записываются в виде 4 десятичных чисел, каждое в диапозоне от 0 до 255, разделенными точками (dot-decimal notation). Каждая часть представляет один байт адреса. Например, шестнадцатиричный адрес 80D00297 записывается как 128.208.2.151.
Определение: Префикс — непрерывный блок пространства IP-адресов, соответствующий сети, в которой сетевая часть совпадает для всех хостов. Префикс задается наименьшим IP-адресом в блоке и размером блока. Размер определяется числом битов в сетевой части, оставшиеся биты в части хоста могут варьироваться. Таким образом, размер является степенью двойки. Он записывается после префикса IP-адреса в виде слэша и длины сетевой части в битах. В предыдущем примере префикс содержит 2 8 адресов и поэтому для сетевой части отводится 24 бита. Записывается так: 128.208.2.0/24.
Сетевые адреса, адреса интерфейсов и широковещательные адреса [ править ]
IP адрес может означать одно из трех:
- Адрес IP сети (группа IP устройств, имеющих доступ к общей среде передаче — например, все устройства в сегменте Ethernet). Сетевой адрес всегда имеет биты интерфейса (хоста) адресного пространства установленными в 0 (если сеть не разбита на подсети);
- Широковещательный адрес IP сети (адрес для ‘разговора’ со всеми устройствами в IP сети). Широковещательные адреса для сети всегда имеют интерфейсные (хостовые) биты адресного пространства установленными в 1 (если сеть не разбита на подсети).
- Адрес интерфейса (например Ethernet-адаптер или PPP интерфейс хоста, маршрутизатора, сервера печать итд). Эти адреса могут иметь любые значения хостовых битов, исключая все нули или все единицы — чтобы не путать с адресами сетей и широковещательными адресами.
IPv6-адрес [ править ]
Адрес в IPv6 представляется как восемь групп из четырех шестнадцатеричных чисел, разделенных двоеточиями. При записи адреса используются следующие правила:
- Если одна и более групп, идущих подряд, равны 0000, то они опускаются и заменяются на двойное двоеточие.
- Незначащие старшие нули в группах опускаются.
- Для записи встроенного или отображенного IPv4 адреса последние две группы цифр заменяются на IPv4 адрес.
- При использовании IPv6 адреса в URL он помещается в квадратные скобки.
- Порт в URL пишется после закрывающей квадратной скобки.
Типы IPv6 адресов [ править ]
- Одноадресный (Unicast) — для отправки пакет на конкретный адрес устройства.
- Global unicast — глобальные адреса. Могут находиться в любом не занятом диапазоне.
- Link loсal — локальный адрес канала. Позволяет обменивать данными по одному и тому же каналу (подсети). Пакеты с локальным адресом канала не могут быть отправлены за пределы этого канала.
- Unique local — уникальный локальные адреса. Используются для локальной адресации в пределах узла или между ограниченным количеством узлов.
- Assigned — назначенные адреса. Зарезервированные для определённых групп устройств Multicast адреса.
- Solicited — запрошенные адреса. Остальные адреса, которые устройства могут использовать для прикладных задач.
Фрагментация [ править ]
Большинство каналов передачи данных устанавливают максимальную длину пакета (MTU). В случае, когда длина пакета превышает это значение, происходит фрагментация.
Определение: IP-фрагментация — разбиение пакета на множество частей, которые могут быть повторно собраны позже. Маршрутизация [ править ]
Протокол IP требует, чтобы в маршрутизации участвовали все узлы (компьютеры). Длина маршрута, по которому будет передан пакет, может меняться в зависимости от того, какие узлы будут участвовать в доставке пакета. Каждый узел принимает решение о том, куда ему отправлять пакет на основании таблицы маршрутизации (routing tables).
Определение: Подсеть — логическое разбиение сети IP. Маска подсети [ править ]
Длина префикса не выводится из IP-адреса, поэтому протоколу маршрутизации вынуждены передавать префиксы на маршрутизаторы. Иногда префиксы задаются с помощью указания длины.
Определение: Маска подсети — двоичная маска, соответствующая длине префикса, в которой единицы указывают на сетевую часть. То есть маска подсети определяет как будут локально интерпретироваться IP адреса в сегменте IP сети, что для нас весьма важно, поскольку определяет процесс разбивки на подсети.
Стандартная маска подсети — все сетевые биты в адресе установлены в ‘1’ и все хостовые биты установлены в ‘0’. Выполненение операции И между маской и IP-адресом позволяет выделить сетевую часть.
О маске подсети нужно помнить три вещи:
- Маска подсети предназначена только для локальной интерпретации локальных IP адресов (где локальный значит — в том же сетевом сегменте);
- Маска подсети — не IP адрес — она используется для локальной модификации интерпретации IP адреса.
Бесклассовая междоменная маршрутизация [ править ]
Изначально использовалась классовая адресация (INET), но со второй половины 90-х годов XX века она была вытеснена бесклассовой адресацией (CIDR), при которой количество адресов в сети определяется маской подсети.
Таблицы маршрутизации со временем сильно растут, и с этим нужно что-то делать. Маршрутизатор может узнавать о расположении IP-адресов по префиксам различной длины. Но вместо того чтобы разделять сеть на подсети, мы объединим несколько коротких префиксов в один длинный. Этот процесс называется агрегацией маршрута (route aggregation). Длинный префикс, полученный в результате, иногда называют суперсетью (supernet), в противоположность подсетям с разделением блоков адресов.

При агрегации IP-адреса содержатся в префиксах различной длины. Один и тот же IP-адрес может рассматриваться одним маршрутизатором как часть блока /22 (содержащего 2 10 адресов), а другим — как часть более крупного блока /20 (содержащего 2 12 адресов). Это зависит от того, какой информацией обладает маршрутизатор. Такой метод называется CIDR (Classless InterDomain Routing — бесклассовая междоменная маршрутизация).
Также префиксы могут пересекаться. Согласно правилу, пакеты передаются в направлении самого специализированного блока, или самого длинного совпадающего префикса (longest matching prefix), в котором находится меньше всего IP-адресов.
По сути CIDR работает так:
- Когда прибывает пакет, необходимо определить, относится ли данный адрес к данному префиксу; для этого просматривается таблица маршрутизации. Может оказаться, что по значению подойдет несколько записей. В этом случае используется самый длинный префикс. То есть если найдено совпадение для маски /20 и /24, то для выбора исходящей линии будет использоваться запись, соответствующая /24.
- Однако этот процесс был бы трудоемким, если бы таблица маршрутизации просматривалась запись за записью. Вместо этого был разработан сложный алгоритм для ускорения процесса поиска адреса в таблице (Ruiz-Sanchez и др., 2001).
- В маршрутизаторах, предполагающих коммерческое использование, применяются специальные чипы VLSI, в которые данные алгоритмы встроены аппаратно.
Классы IP-сетей [ править ]

Раньше использовали классовую адресацию.
Сколько бит используется сетевым ID и сколько бит доступно для идентификации хостов (интерфейсов) в этой сети, определяется сетевыми классами.
Всего 5 классов IP-адресов: A, B, C, D, E.
Их структура и диапазоны указаны на рисунке.
Существует также специальные адреса, которые зарезервированы для ‘несвязанных’ сетей — это сети, которые используют IP, но не подключены к Internet. Вот эти адреса:
Sysadminium
Протокол TCP является одним из важнейших протоколов связи в компьютерных сетях. В этой статье познакомимся с ним поближе.
Что такое транспортные протоколы
Транспортные протоколы (TCP и UDP) используются для передачи информации. Информация передаётся маленькими частями – сетевыми пакетами. То есть поток информации разбивается на много маленьких пакетов.
Каждый пакет состоит из заголовка и самих данных. Заголовок содержит служебную информацию, например порт источника и назначения.
Особенности TCP
Главной особенностью TCP (Transmission Control Protocol) является то, что он гарантирует доставку всех отправленных пакетов. При этом проверяется целостность пакетов и их порядок. Если пакет потерялся или испортился, то получатель запросит эти пакеты у отправителя снова. Если пакеты пришли не в том порядке, то они на принимающей стороне всё равно обработаются в правильном. Этот механизм контроля доставки накладывает дополнительную нагрузку в виде увеличения служебной информации, которую нужно передать вместе с полезными данными.
TCP делит поток информации на сегменты. В одном сегменте может быть несколько пакетов. Каждый сегмент проверяется на целостность, и если все хорошо, отправляется подтверждение передающей стороне. Таким образом подтверждается не каждый пакет, а каждый сегмент, но в сегменте может оказаться и всего лишь один пакет.
Поверх протокола TCP работают многие прикладные протоколы:
- сайты (http, https);
- электронная почта (imap, pop, smtp);
- передача файлов (cifs, nfs, ftp);
- удаленные подключения (rdp, ssh).
TCP пакеты передаются не просто так, а в рамках установленного соединения – которое называют TCP сессией.
Подключение можно выполнить только если вторая сторона прослушивает порт, к которому будет выполняться подключение.
Алгоритм работы TCP
Алгоритм работы TCP следующий:
- Используя трехкратное рукопожатие, между двумя узлами создаётся сеанс связи.
- При отправке пакетов узлы последовательно нумеруют их и рассчитывают контрольную сумму.
- Поскольку все пакеты имеют последовательные номера, то становится видно если какие-то из них отсутствуют. В этом случае отправляется запрос на повторную отправку пакета.
- Если для какого-то пакета не совпала контрольная сумма, то отправляется запрос на повторную отправку пакета.
При открытии даже одной веб странички создаются несколько TCP соединений для:
- html страницы;
- каждого CSS и JavaScript файлов;
- каждого изображения.
И для каждого такого соединения вначале устанавливается сеанс, что замедляет передачу данных.
Заголовок TCP пакета
Заголовок TCP пакета состоит из следующих полей:
- Порт отправителя.
- Порт получателя.
- Порядковый номер в сегменте (sequence number). В целях безопасности это значение генерируется случайным образом и может быть равно от 0 до 4294967295;
- Номер подтверждения (acknowledgment number). Когда мы подтверждаем определённый пакет, в нем записывается sequence number подтверждаемого пакета.
- Длина заголовка (data offset). В этом поле указывается длина заголовка TCP пакета и где начинаются фактические данные.
- Зарезервированное поле. Эти биты зарезервированы для будущего использования.
- Флаги. Необходимы для дополнительной функциональности. Например, позволяют установить или разорвать соединение, включить или выключить защиту от перегрузки сети и тому подобное.
- Размер окна (Window Size). Указывается количество байт, считая от последнего номера подтверждения, которые готов принять отправитель данного пакета. То есть, какой у него в данный момент времени размер буфера.
- Контрольная сумма (Checksum). Используется для проверки на наличие ошибок при приеме или передачи пакетов. Рассчитывается с учетом заголовка (кроме контрольной суммы) и самих данных.
- Указатель срочности (Urgent pointer). Используется, если стоит флаг URG. По этому значению определяются срочные данные и они сразу же передаются приложению. Остальные данные попадают в буфер.
- Дополнительные опции. Необязательно, но используются почти всегда.
- Заполнение (Padding). Дополняет заголовок, пока он не закончится на 32-разрядной границе. Всегда состоит только из нулей.
Флаги в заголовке TCP
- NS (Nonce Sum). Защита от случайного или злонамеренного изменения флагов. Используется для улучшения работы механизма явного уведомления о перегрузке ECN (Explicit Congestion Notification).
- CWR (Congestion Window Reduced). Подтверждение получения пакета с флагом ECE и включением механизма уменьшения перегрузки (Congestion Control). Этот механизм позволяет оптимизировать отправку пакетов в перегруженных сетях.
- ECE (ECN-Echo). Выполняет две функции. Если соединение только устанавливается, то означает что отправитель поддерживает ECN. В другом случае, это означает перегрузку сети (или предстоящую перегрузку) для отправителя.
- URG (Urgent). Указатель важности. 0 если не используется, 1 – используется.
- ACK. Устанавливается, когда принимающая сторона подтверждает полученный пакет. Чтобы отправитель знал, какие пакеты уже были доставлены получателю. При этом в поле acknowledgment number записывается номер подтверждаемого пакета.
- PSH (Push). Обычно получатель не подтверждает каждый пакет при получении. Вместо этого пакеты накапливаются в буфере, пока не передадутся приложению. Данный флаг сообщает получателю, что нужно немедленно передать всё из буфера приложению и сразу же отправить подтверждение.
- RST. Сообщает о немедленном разрыве соединения. При этом соединение обрывается, а буфер очищается. Самые распространенные причины отправки пакета с таким флагом:
- ответ на пакет, полученный для закрытого сокета;
- пользователь сам прервал соединение (например, закрыв браузер, не дожидаясь ответа);
- соединение не было нормально закрыто, но находится в неактивном состоянии некоторое время.
Создание TCP сессии
Для установления соединения использует трехкратное рукопожатие.

Первый этап. Клиент отправляет на сервер пакет с флагом SYN. При этом клиент устанавливает порядковый номер сегмента на случайное значение A.
Второй этап. В ответ сервер отвечает пакетом с флагами SYN и ACK. Номер подтверждения установлен на единицу больше принятого (A+1). Поскольку сервер также будет отправлять данные, то для себя он тоже выбирает номер первого пакета, который будет другим случайным числом B.
Третий этап. Клиент отправляет ACK на сервер. Порядковый номер устанавливается равным A+1, а номер подтверждения устанавливается на B+1.
На этом этапе клиент и сервер получили подтверждение соединения и образовали двухстороннюю связь.
Передача данных в TCP
Теперь разберём пример передачи данных в уже установленном сеансе.

Клиент отравляет запрос к серверу. Поскольку данные поместились в один пакет TCP, он получил флаг PSH, чтобы сервер не ждал продолжение получения данных. При этом пакет получил 2 флага: ACK (подтвердил предыдущею передачу пакетов от сервера) и PSH.
В ответ на это сервер отправляет пакет ACK с номером успешно полученных данных.
Далее сервер обработал запрос и отправляет данные клиенту. Эти данные делятся на пакеты и отправляются сегментами.
Далее клиент подтверждает, что данные получены отправляя пакеты с флагом ACK.
Завершение сеанса TCP
Завершение сеанса использует четырёхкратное рукопожатие, причём каждая сторона завершает своё соединение независимо.

Когда одна из сторон хочет остановить свою половину соединения, она передаёт пакет FIN, который другая сторона подтверждает пакетом с ACK.
После того, как сторона, отправившая первый FIN, ответила с последним ACK, она ожидает некоторое время прежде чем окончательно закрыть соединение. В течение этого времени локальный порт недоступен для новых соединений.
Соединение может быть «полуоткрытым», и в этом случае одна сторона завершила свою часть, а другая — нет. Завершившая сторона больше не может отправлять какие-либо данные, но другая сторона может. Завершающая сторона должна продолжить чтение данных, пока другая сторона также не завершит свою работу.
Также возможно разорвать соединение трёхкратным рукопожатием, когда первая сторона отправляет FIN, а вторая отвечает FIN и ACK (просто объединяет 2 шага в один). Дальше первая сторона подтверждает завершение сеанса с помощью ACK.
Состояния сеанса TCP
Сеанс TCP может находится в следующих состояниях:
- CLOSED – начальное состояние;
- LISTEN – сервер ожидает запросы от клиента;
- SYN-SENT – клиент хочет установить соединение с сервером и ожидает подтверждение;
- SYN-RECEIVED – сервер получил запрос на создание сеанса, отправил ответный запрос и ожидает подтверждение;
- ESTABLISHED – соединение установлено, идёт передача данных;
- FIN-WAIT-1 – одна из сторон завершает соединение, отправив флаг FIN;
- CLOSE-WAIT – другая сторона переходит в это состояние, отправив подтверждение на FIN, но продолжает передачу;
- FIN-WAIT-2 – первый узел получил ACK, разорвал свое соединение, но еще читает данные;
- LAST-ACK – второй узел заканчивает передачу и отправляет флаг FIN;
- TIME-WAIT – сервер получил пакет с флагом FIN, отправил флаг ACK и ждёт некоторое время, перед окончательным закрытием соединения;
- CLOSING – обе стороны инициировали закрытие соединения одновременно.
Вот мы и познакомились с одним из самых важных протоколов сети Интернет. Разобрались с его особенностями, алгоритмом работы. Узнали про сеансы TCP, пакеты и сегменты.
Протокол TCP является одним из важнейших протоколов связи в компьютерных сетях. В этой статье познакомимся с ним поближе.
Протокол 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 отправляет и обрабатывает каждую дейтаграмму как независимую порцию данных, то есть не имея никаких других связей с другими дейтаграммами в глобальной сети интернет.
После отправки дейтаграммы протоколом 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-пакетов, представлен на рисунке.

Описание байта обслуживания побитно:
-
- 0-2 — приоритет (precedence) данного IP-сегмента
- 3 — требование ко времени задержки (delay) передачи IP-сегмента (0 — нормальная, 1 — низкая задержка)
- 4 — требование к пропускной способности (throughput) маршрута, по которому должен отправляться IP-сегмент (0 — низкая, 1 — высокая пропускная способность)
- 5 — требование к надежности (reliability) передачи IP-сегмента (0 — нормальная, 1 — высокая надежность)
- 6-7 — ECN — явное сообщение о задержке (управление 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-адреса на номер сети (NetID) и номер узла (HostID) основана на понятии класса, который определяется значениями нескольких первых бит адреса. Именно потому, что первый байт адреса 185.23.44.206 попадает в диапазон 128-191, мы можем сказать, что этот адрес относится к классу В, а значит, номером сети являются первые два байта, дополненные двумя нулевыми байтами — 185.23.0.0, а номером узла — 0.0.44.206.
А что если использовать какой-либо другой признак, с помощью которого можно было бы более гибко устанавливать границу между номером сети и номером узла? В качестве такого признака сейчас получили широкое распространение маски.
Маска — это число, которое используется в паре с 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-адресов:
- 0.0.0.0 — представляет адрес шлюза по умолчанию, т.е. адрес компьютера, которому следует направлять информационные пакеты, если они не нашли адресата в локальной сети (таблице маршрутизации);
- 255.255.255.255 – широковещательный адрес. Сообщения, переданные по этому адресу, получают все узлы локальной сети, содержащей компьютер-источник сообщения (в другие локальные сети оно не передается);
- «Номер сети».«все нули» – адрес сети (например 192.168.10.0);
- «Все нули».«номер узла» – узел в данной сети (например 0.0.0.23). Может использоваться для передачи сообщений конкретному узлу внутри локальной сети;
- Если в поле номера узла назначения стоят только единицы, то пакет, имеющий такой адрес, рассылается всем узлам сети с заданным номером сети. Например, пакет с адресом 192.190.21.255 доставляется всем узлам сети 192.190.21.0. Такая рассылка называется широковещательным сообщением (broadcast). При адресации необходимо учитывать те ограничения, которые вносятся особым назначением некоторых IP-адресов. Так, ни номер сети, ни номер узла не может состоять только из одних двоичных единиц или только из одних двоичных нулей. Отсюда следует, что максимальное количество узлов, приведенное в таблице для сетей каждого класса, на практике должно быть уменьшено на 2. Например, в сетях класса С под номер узла отводится 8 бит, которые позволяют задавать 256 номеров: от 0 до 255. Однако на практике максимальное число узлов в сети класса С не может превышать 254, так как адреса 0 и 255 имеют специальное назначение. Из этих же соображений следует, что конечный узел не может иметь адрес типа 98.255.255.255, поскольку номер узла в этом адресе класса А состоит из одних двоичных единиц.
- Особый смысл имеет IP-адрес, первый октет которого равен 127.х.х.х. Он используется для тестирования программ и взаимодействия процессов в пределах одной машины. Когда программа посылает данные по IP-адресу 127.0.0.1, то образуется как бы «петля». Данные не передаются по сети, а возвращаются модулям верхнего уровня как только что принятые. Поэтому в IP-сети запрещается присваивать машинам IP-адреса, начинающиеся со 127. Этот адрес имеет название loopback. Можно отнести адрес 127.0.0.0 ко внутренней сети модуля маршрутизации узла, а адрес 127.0.0.1 — к адресу этого модуля на внутренней сети. На самом деле любой адрес сети 127.0.0.0 служит для обозначения своего модуля маршрутизации, а не только 127.0.0.1, например 127.0.0.3.
В протоколе IP нет понятия широковещательности в том смысле, в котором оно используется в протоколах канального уровня локальных сетей, когда данные должны быть доставлены абсолютно всем узлам. Как ограниченный широковещательный IP-адрес, так и широковещательный IP-адрес имеют пределы распространения в интерсети — они ограничены либо сетью, к которой принадлежит узел-источник пакета, либо сетью, номер которой указан в адресе назначения. Поэтому деление сети с помощью маршрутизаторов на части локализует широковещательный шторм пределами одной из составляющих общую сеть частей просто потому, что нет способа адресовать пакет одновременно всем узлам всех сетей составной сети.
IP-адреса используемые в локальных сетях
Все используемые в Интернете адреса, должны регистрироваться, что гарантирует их уникальность в масштабе всей планеты. Такие адреса называются реальными или публичными IP-адресами.
Для локальных сетей, не подключенных к Интернету, регистрация IP-адресов, естественно, не требуется, так как, в принципе, здесь можно использовать любые возможные адреса. Однако, чтобы не допускать возможность конфликтов при последующем подключении такой сети к интернету, рекомендуется применять в локальных сетях только следующие диапазоны так называемых частных IP-адресов (в интернете эти адреса не существуют и использовать их там нет возможности), представленных в таблице.
Протокол IP — протокол интернет. Формат заголовка IP-пакета.
IP расшифровывается как Internet Protocol, часто его называют протокол интернет. Но строго говоря это не совсем так, правильный перевод межсетевой протокол или протокол межсетевого взаимодействия.
p, blockquote 1,0,0,0,0 —>

p, blockquote 2,0,0,0,0 —>
Протокол Ip возник задолго до того, как появилась и стала набирать популярность сеть, которую мы называем интернет. В англоязычной терминологии internetworking означает объединение сетей, и цель протокола ip как раз объединить сети, построенные с помощью разных технологий канального уровня. У этой терминологии словом internet называлась объединенная сеть, а subnet — подсеть или отдельная сеть. Словом Internet с большой буквы сейчас называется самая крупная объединенная сеть построенная по протоколу ip.
p, blockquote 3,0,0,0,0 —>
Место в моделях OSI и TCP/IP
В модели взаимодействия открытых систем и в модели TCP/IP протокол IP, находится на одном и том же уровне — сетевом.
p, blockquote 4,0,0,0,0 —>

p, blockquote 5,0,0,0,0 —>
Сетевой уровень стека протоколов TCP/IP включая также и другие протоколы кроме ip. Это ARP, DHCP и ICMP, но для передачи данных используется только протокол ip, остальные протоколы служат для обеспечения корректной работы крупной составной сети.
p, blockquote 6,0,1,0,0 —>

p, blockquote 7,0,0,0,0 —>
Сервисы IP
IP также, как и Ethernet обеспечивают передачи данных без гарантии доставки, не гарантируется как доставка, так и порядок следования сообщений. Протокол Ip так же как и Ethernet использует передачу данных без установки соединения.
p, blockquote 8,0,0,0,0 —>
IP пакет просто отправляется в сеть в надежде, что он дойдет до получателя, если пакет по каким-то причинам не дошел, не предпринимается никаких попыток оповестить отправителя, и также не предпринимается попыток запросить этот пакет снова. Считается, что ошибка должна быть исправлена протоколами, которые находятся на вышестоящих уровнях.
p, blockquote 9,0,0,0,0 —>
Задачей IP является объединение сети, построенных на основе разных технологий канального уровня, которые могут значительно отличаться друг от друга в одну крупную объединенную сеть, в которой компьютеры могут свободно общаться друг с другом не взирая на различия конкретной сетевой технологии. Вторая важная задача протокола IP, это маршрутизация, то есть поиск маршрута от отправителя к получателю в крупной составной сети через промежуточные узлы маршрутизаторы. Также IP обеспечивает необходимое качество обслуживания.
p, blockquote 10,0,0,0,0 —>
Формат заголовка IP-пакета
Для того чтобы понять, как протокол IP реализует эту задачу, рассмотрим формат заголовка IP пакета.
p, blockquote 11,0,0,0,0 —>

p, blockquote 12,0,0,0,0 —>
Номер версии
Первое поле номер версии. Сейчас используется две версии протокола IP 4 и 6. Большая часть компьютеров использует IPv4. Длина адреса в этой версии 4 байта. Формат адреса IP версии 4 мы рассматривали подробно. Проблема в том, что адресов IPv4, четыре с небольшим миллиарда, что уже сейчас не хватает для всех устройств в сети, а в будущем точно не хватит. Поэтому была предложена новая версия IPv6 в которой длина IP адреса составляет 16 байт. Сейчас эта версия вводится в эксплуатацию, но процесс занимает очень долгое время.
p, blockquote 13,1,0,0,0 —>
Длина заголовка
Следующее поле длина заголовка. В отличии от Ethernet заголовок IP включает обязательные поля, а также может включать дополнительные поля, которые называются опции. В поле длина заголовка записывается полная длина, как обязательной части, так и опции.
p, blockquote 14,0,0,0,0 —>
Тип сервиса
Следующее поле тип сервиса. Это поле нужно для обеспечения необходимого качества обслуживания, но сейчас на практике используется очень редко.
p, blockquote 15,0,0,0,0 —>
Общая длина
Следующее поле общая длина. Общая длина содержит длину всего IP пакета, включая заголовок и данные. Максимальная длина пакета 65 535 байт, но на практике такие большие пакеты не используются, а максимальный размер ограничен размером кадра канального уровня, а для Ethernet это 1 500 байт. В противном случае для передачи одного IP пакета необходимо было бы несколько кадров канального уровня что неудобно.
p, blockquote 16,0,0,0,0 —>
Идентификатор пакета
Поля идентификатор пакета, флаги и смещение фрагмента используются для реализации фрагментации.
p, blockquote 17,0,0,0,0 —>
Время жизни
Дальше идет поле время жизни. Время жизни Time To Live или TTL — это максимальное время в течение которого пакет может перемещаться по сети. Оно введено для того чтобы пакеты не гуляли по сети бесконечно, если в конфигурации сети возникла какая-то ошибка. Например, в результате неправильной настройке маршрутизаторов в сети, может образоваться петля. Раньше, время жизни измерялось в секундах, но сейчас маршрутизаторы обрабатывают пакет значительно быстрее чем за секунду, поэтому время жизни уменьшается на единицу на каждом маршрутизаторе, и оно измеряется в количествах прохождения через маршрутизаторы по-английски (hop) от слова прыжок. Таким образом название время жизни сейчас стало уже некорректным.
p, blockquote 18,0,0,0,0 —>
Тип протокола
После времени жизни, указывается тип протокола следующего уровня. Это поле необходимо для реализации функции мультиплексирования и демультиплексирования, то есть передачи с помощью протокола IP данных от разных протоколов следующего уровня. В этом поле указывается код протокола следующего уровня, некоторые примеры кодов для TCP код 6, UDP — 17 и ICMP — 1.
p, blockquote 19,0,0,1,0 —>
Контрольная сумма
Затем идет контрольная сумма, которая используется для проверки правильности доставки пакета, если при проверке контрольные суммы обнаруженные ошибки, то пакет отбрасывается, никакой информации отправителю пакета не отправляется. Контрольная сумма рассчитывается только по заголовку IP пакета и она пересчитывается на каждом маршрутизаторе из-за того что данные в заголовке меняются. Как минимум изменяется время жизни пакета, а также могут измениться некоторые опции.
p, blockquote 20,0,0,0,0 —>
IP адрес получателя и отправителя
После контрольной суммы идут IP адрес отправителя, и IP адрес получателя. В IPv4 длина IP адреса четыре байта, 32 бита на этом обязательная часть IP заголовка заканчивается, после этого идут не обязательные поля которые в IP называются опции.
p, blockquote 21,0,0,0,0 —>
Опции
Некоторые примеры опций. Для диагностики работы сети используется опция — записать маршрут, при которой в IP пакет записывается адрес каждого маршрутизатора через которую он проходит.
p, blockquote 22,0,0,0,0 —>
И опция — временные метки, при установке которой, каждый маршрутизатор записывает время прохождения пакеты.
p, blockquote 23,0,0,0,0 —>
Также опции позволяют отказаться от автоматической маршрутизации, и задать маршрут отправитель:
- Это может быть жесткая маршрутизация, где в пакете явно указывается перечень маршрутизаторов через которые необходимо пройти.
- И свободные маршрутизации в этом случае указываются только некоторые маршрутизаторы, через которые пакет должен пройти обязательно, также при необходимости он может пройти через другие маршрутизаторы.
Опции в заголовке IP может быть несколько и они могут иметь разный размер. В то же время длина IP заголовка должна быть кратна 32, поэтому при необходимости, в конце IP заголовок заполняются нулями до выравнивание по границе 32 бита. Следует отметить, что сейчас опции в заголовке IP почти не используются.
p, blockquote 25,0,0,0,0 —> p, blockquote 26,0,0,0,1 —>
В статье был рассмотрен протокол IP (Internet Protocol) — протокол межсетевого взаимодействия. Протокол IP является основой интернета. В OSI находится на сетевом уровне.
IP — Internet Protocol

Набор протоколов TCP/IP разделен на уровни гораздо проще, чем предусмотрено моделью OSI. TCP и UDP — это транспортные протоколы, соответствующие уровню 4 OSI. Они используют IP, протокол уровня 3 OSI (сетевого уровня). Кроме этих трех протоколов, в наборе протоколов TCP/IP есть еще два базовых протокола, расширяющих IP: ICMP и IGMP. Функциональные возможности этих протоколов должны быть реализованы в уровне, содержащем IP.
Internet Protocol соединяет два узла. Каждый узел идентифицируется 32-битным адресом, называемым IP-адресом. При отправке сообщения IP-протокол получает его от протоколов верхнего уровня, TCP или UDP, и добавляет IP-заголовок, содержащий информацию о хосте-адресате.
Чтобы понять протокол IP, самый лучший способ — детально исследовать IP-заголовок. Содержащаяся в нем информация приведена в таблице:
Структура IP-заголовка
Поле Длина Описание Версия IP 4 бита Версия протокола IP, создавшего заголовок. Текущая версия протокола IP — 4. Длина IP-заголовка 4 бита Длина заголовка. Минимальное значение — 5 в единицах по 32 бита, или 4 байта. Следовательно, минимальная длина заголовка равна 20 байтам. Тип обслуживания 1 байт Поле типа обслуживания позволяет отправлять сообщения с нормальной или высокой производительностью, нормальной или увеличенной задержкой, нормальной или высокой надежностью. Это поле полезно при отправке в сеть дейтаграмм. Несколько разновидностей сетей используют эту информацию, чтобы выделить приоритет определенного трафика. Кроме того, сообщения управления сетью по сравнению с обычными сообщениями имеют повышенные приоритет и надежность. Общая длина 2 байта В этих двух байтах задается общая длина сообщения — заголовка и данных— в октетах. Максимальный размер IP-пакета равен 65 535 байтов, но для большинства сетей такой размер непрактичен. Самый большой размер, который может быть принят всеми хостами, равен 576 байтам. Длинные сообщения могут разделяться на фрагменты — такой процесс называется фрагментацией. Идентификация 2 байта Если сообщение разбито на фрагменты, поле идентификации помогает собрать фрагменты сообщения. Все фрагменты одного сообщения имеют один и тот же идентификационный номер. Флаги 3 бита Эти флаги указывают, фрагментировано ли сообщение и является ли текущий пакет последним фрагментом сообщения. Смещение фрагмента 13 битов В этих 13 битах задается смещение фрагментированного сообщения. Фрагменты могут поступать не в том порядке, в каком они были отправлены, поэтому смещение необходимо, чтобы восстановить исходные данные. Первый фрагмент сообщения имеет длину О, а в остальных фрагментах дается смещение, по которому следует поместить фрагмент. Единица смещения равна 8 байтам, так что значение смещения 64 означает, что второй фрагмент нужно присоединить к сообщению после 512 байтов первого пакета. Время жизни 1 байт Значение «время жизни» (TTL) задает число секунд, которое сообщение может существовать, прежде чем будет отброшено. В этом значении необязательно указывается число секунд, поскольку каждый маршрутизатор, пересекаемый сообщением, должен уменьшить значение TTL на 1, даже если он затратил на обработку сообщения меньше одной секунды. Поэтому на практике в этом значении задается число допустимых «прыжков». Протокол 1 байт В этом байте указывается протокол, используемый на следующем уровне стека протоколов для этого сообщения. Номера протоколов определены в доступной оперативной базе данных Internet Assigned Number Authority (IANA). Контрольная сумма заголовка 2 байта Это контрольная сумма одного заголовка. Поскольку заголовок изменяется с каждым отправленным сообщением, контрольная сумма также изменяется. Адрес источника 4 байта В этом поле указывается 32-битный IP-адрес отправителя. Адрес назначения 4 байта Это 32-битный IP-адрес, по которому отправлено сообщение. Опции переменная Здесь могут появляться необязательные поля. Например, можно указать, что это сообщение секретно или совершенно секретно. Также предусмотрена возможность будущих расширений. Дополнение переменная Это поле содержит переменное число нулей, такое, чтобы заголовок заканчивался на 32-битной границе. Internet Protocol (IP) определен в RFC 791. Документы RFC (Request for Comments) содержат техническую информацию о многих важных интернет-технологиях.
IP-адрес
Каждый узел в сети TCP/IP может быть идентифицирован 32-битным IP-адресом. Обычно IP-адрес представляется четырьмя десятичными значениями в таком виде: 192.168.0.1. Каждое из этих чисел представляет собой один байт IP-адреса и может находиться в пределах от 0 до 255.
IP-адрес содержит две части: сетевую часть и часть хоста. В зависимости от класса сети сетевая часть состоит из одного, двух или трех байтов:
Класс Байт 1 Байт 2 Байт 3 Байт 4 A Сеть (1—126) Хост (0-255) Хост (0—255) Хост (0—255) B Сеть (128—191) Сеть (0—255) Хост (0—255) Хост (0—255) C Сеть (192—223) Сеть (0—255) Сеть (0—255) Хост (0—255) Первый бит адреса сети класса А должен быть 0, поэтому первый байт для сети класса А имеет двоичные значения в пределах от 00000001 (1) до 01111110 (126). Остальные три байта служат для идентификации узлов в сети, позволяя соединить в сети класса А более 16 млн. устройств.
Заметим, что в приведенной таблице адреса с числом 127 в первом байте пропущены, поскольку это зарезервированный диапазон адресов. Адрес 127.0.0.1 — это всегда адрес локального хоста, а 127.0.0.0 — адрес локальной обратной связи. Обратная связь используется для тестирования стека сетевых протоколов на одной машине, без прохода через сетевую интерфейсную плату.
В IP-адресе для сети класса В первые два бита всегда имеют значение 10, что дает диапазон от 10000000 (128) до 10111111 (191). Второй байт продолжает идентификацию сети значением от 0 до 255, оставляя два последних байта для идентификации узлов сети, всего до 65 534 устройств.
Сети класса С отличаются IP-адресом, в котором в первых трех битах установлено значение 110, разрешая значения в диапазоне от 11000000 (192) до 11011111 (223). В сети этого типа лишь один байт оставлен для идентификации узлов, поэтому к ней можно подсоединить только 254 устройства.
Число устройств, которое можно подсоединить к сети каждого из этих классов с особыми IP-адресами, обратно пропорционально числу возможных сетей этого типа. Например, сеть класса А, допуская 16 млн. хостов, оставляет только часть первого байта для идентификации сети. В результате во всем мире может существовать лишь 126 сетей класса А. Только крупные компании, подобные AT & Т, IBM, Xerox и HP, имеют такой сетевой адрес. Когда компания запрашивает IP-сеть в органе, ведающем сетями, обычно она получает сеть класса С.
Если компания пожелает, чтобы больше хостов напрямую были подключены к Интернету, можно найти еще одну сеть класса С. Если для каждого хоста в сети не требуется прямого доступа к Интернету, можно использовать частный IP-адрес, и тогда применяется другая опция.
Сетевые адреса классов А, В и С оставляют свободными адреса, имеющие в первом байте значения от 224 до 255.
Агентство IANA выделяет номера сетей и публикует их перечень на странице http://www.iana.org/assignments/ipv4-adclress-space. Почти во всех странах есть региональные регистрационные ведомства, выдающие по запросам номера сетей. Региональные ведомства получают диапазон сетей от IANA.
Чтобы избежать исчерпания IP-адресов, хосты, не соединенные напрямую с Интернетом, могут использовать адреса из диапазонов частных адресов. Частные адреса уникальны не глобально, а только локально, внутри сети. Во всех классах сетей резервируются определенные диапазоны, которые могут использоваться как частные адреса хостами, не требующими непосредственного двустороннего доступа к Интернету. Такие хосты вполне могут обращаться к Интернету через шлюз, который не посылает во внешнюю сеть частный IP-адрес.
Подсети
Для соединения двух узлов в разных сетях требуется маршрутизатор. Номер хоста определяется 24 битами IP-адреса класса А, в то время как для сети класса С доступно лишь 8 битов. Маршрутизатор разделяет номер хоста на номер подсети и номер хоста в подсети. Включение дополнительных маршрутизаторов сократит объемы широковещательной передачи в сети, а это может сократить нагрузку в сети.
Новые маршрутизаторы главным образом включаются, чтобы улучшить возможность соединения между группами компьютеров в разных зданиях, городах и т. д. Рассмотрим пример разделения сети класса С с адресом 194.180.44 на подсети.
Такая сеть может фильтровать адреса с помощью маски подсети (subnet mask) 255.255.255.224. Первые три байта (состоящие из всех единиц) представляют собой маску для сети класса С. Последний байт — это десятичное значение двоичного представления 11100000, в котором первые три бита адреса хоста указывают подсеть, а последние пять битов представляют адрес хоста в конкретной подсети. Три бита подсети представляют 128, 64 и 32, и, таким образом, поддерживаются адреса подсетей, показанные ниже:

Протокол, предшествовавший Internet Protocol, был разработан Управлением перспективных исследовательских работ Министерства обороны США (DARPA) в 1960-х годах, а набор протоколов TCP/IP получил признание лишь в 1980 г. Поскольку IP базировался на существовавших сетевых протоколах DARPA, он получил номер версии 4 и теперь известен как IPv4. В те времена, когда человечество в большинстве своем представляло себе мобильный телефон как трубку, которую можно снимать со стены и переносить к дивану, число хостов, поддерживаемых IP, казалось более чем достаточным.
Однако сегодня все хотят подключить к Интернету холодильники и газонокосилки, и IETF разработало новую версию IP — IPv6. Наиболее важное изменение этой версии по сравнению с IPv4 заключается в использовании для адресации не 32, а 128 битов, что позволит всем Tablet PC, Pocket PC, мобильным телефонам, телевизорам, автомобилям, газонокосилкам, кофеваркам и мусорным контейнерам стать полноправными хостами Интернета.

Кроме возможности назначить адрес почти каждому атому в Солнечной системе, в IPv6 появляется еще несколько полезных изменений:
Возможности расширенной адресации. Чтобы определить диапазон адресов групповой рассылки, в адреса IPv6 может включаться маршрутная информация о группах. Кроме того, появляется альтернативный адрес для отправки сообщения любому хосту или любой группе хостов.
Упрощение формата заголовка. Некоторые поля заголовка IPv4 удаляются, другие становятся необязательными. Однако полная длина заголовка IPv6 больше, чем в IPv4 из-за 128-битных адресов источника и назначения.
Улучшенная поддержка расширяемости. В будущем добавлять расширения к протоколу IPv6 станет легче. Ограничения на длину для опций удалено.
Маркирование потока. Для конкретных потоков трафика добавляется новая возможность. Поток — это последовательность пакетов, перемещающаяся от источника к назначению. В новом протоколе приложения могут предлагать аудио- и видеовозможности в реальном времени по различным потокам. Каждый поток может запрашивать обработку в реальном времени или особо качественную обработку у маршрутизаторов, через которые он распространяется.
Аутентификация и секретность. Добавляются расширения IPv6, поддерживающие аутентификацию, секретность и конфиденциальность отправляемых данных.
Номера портов
Для идентификации узлов сети протокол IP использует IP-адреса, а транспортный уровень (уровень 4) использует конечные точки для идентификации приложения. Чтобы указать конечную точку приложения, протоколы TCP и UDP вместе с IP-адресом используют номер порта.
Сервер должен предоставить известную конечную точку, с которой мог бы соединиться клиент, хотя номер порта может создаваться для клиента динамически. Номера портов TCP и UDP имеют длину 16 битов, их можно подразделить на три категории:
Системные (известные) номера портов
Пользовательские (зарегистрированные) номера портов
Динамические, или частные, порты
Системные номера портов находятся в диапазоне от 0 до 1023. Эти номера должны использоваться только системными, привилегированными процессами. Широко известные протоколы пользуются номерами портов, установленными по умолчанию из этого диапазона.
Пользовательские номера портов находятся в диапазоне от 1024 до 49151. Ваше серверное приложение обычно будет занимать один из этих портов, и вы, если захотите сделать его известным сообществу пользователей Интернета, сможете зарегистрировать номер порта в IANA.
Динамические номера портов принимают значения из диапазона от 49 152 до 65 535. Если не требуется знать номер порта до запуска приложения, подойдет порт в этом диапазоне. Клиентские приложения, которые соединяются с серверами, могут использовать такой порт.
Запустив утилиту netstat с опцией -а, мы увидим перечень всех используемых в данный момент портов и указание о состоянии соединения — находится ли соединение в состоянии прослушивания или соединение уже было установлено:

В файле services из каталога system32driversetc перечислены многие предопределенные пользовательские и системные номера портов. Если порт содержится в перечне этого файла, то утилита netstat вместо номера порта отобразит имя протокола.
IPv4 (Internet Protocol version 4)
Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 02:55, 1 июня 2016.IPv4 (англ. Internet Protocol version 4 ) является четвертой версии интернет-протокола (IP). Это один из основных протоколов, основанных на стандартах методов межсетевого взаимодействия в Интернете, и являлся первой версией, развернутой для производства в ARPANET в 1983 году. Он до сих пор направляет большую часть интернет-трафика, несмотря на продолжающееся развертывание протокола преемника, IPv6. IPv4 описана в документе IETF публикации RFC 791 (сентябрь 1981), заменив ранее определение (RFC 760, январь 1980).

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 Виртуальные частные сети
Пакеты с частным адресом назначения игнорируются всеми публичными маршрутизаторами. Две частные сети (например, два филиала) не могут осуществлять связь через публичный интернет, пока они не используют туннель IP или виртуальную частную сеть (VPN). Когда одна частная сеть хочет отправить пакет в другую частную сеть, первая частная сеть инкапсулирует пакет в протокольном уровне, так что пакет может перемещаться по сети общего пользования. Затем пакет проходит через сеть общего пользования. Когда пакет достигает другой частной сети, его протокольный слой удаляется, и пакет перемещается к месту назначения.
Опционально, инкапсулированные пакеты могут быть зашифрованы для защиты данных во время прохождения через сеть общего пользования.
Локально-канальная адресация (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.
Преобразование адреса
Хосты в Интернете, как правило, известны по именам, например, www.example.com, а не по их IP-адресу, который используется для маршрутизации и сетевой идентификации интерфейса. Использование доменных имен требует перевода, называемого разрешением, их адреса и наоборот. Это аналогично поиску телефонного номера в телефонной книге, используя имя получателя.
Перевод между адресами и доменными именами осуществляется с помощью системы доменных имен (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 слов указывает на присутствие опций и необходимость их обработки.
- Замечание: Поля «копировать», «класс опции» и «номер опции» иногда называют одним восьмибитным полем «тип опции».
Данные
Часть данных пакета не включена в пакет контрольной суммы. Его содержание интерпретируется на основе значения поля заголовка протокола.






