Протокол IPv4

Протокол 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-адресов (в интернете эти адреса не существуют и использовать их там нет возможности), представленных в таблице.
Сетевые протоколы: базовые понятия и описание самых востребованных правил
Рассказываем о самых часто используемых правилах взаимодействия устройств в сети.
Эта инструкция — часть курса «Как работают сетевые протоколы».
Смотреть весь курс

В мире существует более 7 000 протоколов, и их число продолжает расти. Рассказываем о самых часто используемых правилах взаимодействия устройств в сети.
Понятие протокола сети
Сетевой протокол — это набор правил, определяющий принципы взаимодействия устройств в сети. Чтобы отправка и получение информации прошли успешно, все устройства-участники процесса должны принимать условия протокола и следовать им. В сети их поддержка встраивается или в аппаратную часть (в «железо»), или в программную часть (в код системы), или и туда, и туда.
Для взаимодействия протоколов между собой существует модель OSI, или Open Systems Interconnection. Дословно название переводится как «взаимодействие открытых систем».
OSI — эталонная модель взаимодействия устройств в сети
Модель OSI — это модель, позволяющая разным системам связи коммуницировать между собой по общепринятым стандартам. Ее можно сравнить с английским, то есть глобальным, универсальным языком в мире сетей.
Модель основана на принципе разделения коммуникационной системы на семь отдельных уровней. Подробнее о ней вы можете прочитать здесь.

Если в передачи информации случаются сбои, модель помогает быстрее и легче локализовать проблему на конкретном уровне и значительно ускорить процесс восстановления работоспособности системы.
Модель OSI является эталонным стандартом, но на данный момент она устарела, поскольку современные протоколы работают сразу на нескольких уровнях модели OSI. На смену модели OSI пришла модель TCP/IP, на основе которой работает большая часть устройств в современном мире.
TCP/IP — модель, на которой работает сеть Интернет
Модель TCP/IP помогает понять принцип работы и взаимодействия узлов в сети Интернет. Ее название включает в себя два основных протокола, на которых построен интернет. TCP/IP расшифровывается как Transmission Control Protocol/Internet Protocol, или протокол управления передачей (данных)/интернет-протокол.
Модель используется во всем современном интернете, новые сетевые протоколы разрабатываются с опорой на модель TCP/IP. Например, подключаясь к сайту Selectel, вы используете протоколы IP, TCP и HTTPS, которые работают в рамках упомянутой модели.

Подробнее о модели TCP/IP можно прочитать в блоге.
Далее мы рассмотрим основные протоколы межсетевого, транспортного уровней, а также уровня приложений. Именно с ними мы сталкиваемся чаще всего, анализируя какие-либо проблемы в сети или на сервере.
Протоколы транспортного уровня: краткое описание
Интернет-протокол и IP-адреса
Internet Protocol (IP) — это наиболее простой протокол, объединивший отдельные компьютеры в глобальную сеть. Главной его задачей является маршрутизация дейтаграмм — определение маршрута следования пакетов по узлам сети. Каждое устройство — ваш ПК, принтер и т.д. — имеет IP-адрес, чтобы данные попадали к нужному адресату. Так, например, отправленный на печать файл не окажется вместо принтера в личном ПК вашего коллеги.
В качестве минусов протокола можно отметить низкую надежность. Он не определяет факт передачи пакета и не контролирует целостность данных. IP просто осуществляет пересылку.
Для пересылки пакетов необходимо определить, на какой порт отправить пакет. Для этого протокол имеет свою систему адресации. В качестве адресов выступает 32-битные (IPv4) или 128-битные (IPv6) адреса. Перед отправкой пакета в него добавляются header (заголовок) и payload (данные для доставки).
IPv4 является 32-разрядной системой, состоящей из четырех разделов (123.123.123.123). Он поддерживает до 4 294 967 296 адресов и является протоколом по умолчанию. Основным его преимуществом является простота. В недостатках — ограниченное адресное пространство, также называемое «исчерпанием адресов».
IPv6, напротив, — 128-битное адресное пространство, которое обеспечивает приблизительно 2^128 степени адресов. Формат записи состоит из восьми разделов, в каждый из которых записывается четыре 16-ричных цифры. Недостаток протокола — в сложности сетевого администрирования. При аренде сервера или виртуальной машины в Selectel выдается IPv4, однако можно запросить и IPv6-адреса, в облаке на базе VMware выдаются только IPv4-адреса.
Один из основных протоколов, который работает поверх IP, — это протокол TCP, из-за чего его часто обозначают как TCP/IP. Но это не единственный протокол, который является частью интернет-протокола.
TCP — протокол обмена сообщениями в сети Интернет
TCP помогает устройствам в сети обмениваться сообщениями. Он работает на четвертом, транспортном, уровне модели OSI.
Для передачи информации происходит дробление исходного файла на части, которые передаются получателю, а далее собираются обратно. Например, человек запрашивает веб-страницу, далее сервер обрабатывает запрос и высылает в ответ HTML-страницу при помощи протокола HTTP. Он, в свою очередь, запрашивает уровень TCP для установки требуемого соединения и отправки HTML-файла. TCP конвертирует данные в блоки, передавая их на уровень TCP пользователя, где происходит подтверждение передачи.
Свойства протокола TCP:

- Система нумерации сегментов (Segment Numbering System). TCP отслеживает передаваемые или принимаемые сегменты, присваивая номера каждому из них. Байтам данных, которые должны быть переданы, присваивается определенный номер байта, в то время как сегментам присваиваются порядковые номера.
- Управление потоком. Эта функция ограничивает скорость, с которой отправитель передает данные. Это делается для обеспечения надежности доставки. Получатель постоянно сообщает отправителю о том, какой объем данных может быть получен.
- Контроль ошибок. Данная функция реализуется для повышения надежности путем проверки байтов на целостность.
- Порт источника и порт назначения. Протокол TCP использует специальные порты для связи различных протоколов. Например протокол SSH использует 22й порт, HTTP — 80, HTTPS — 443, Gopher — 70. Все порты делятся на три диапазона — общеизвестные (0—1023), зарегистрированные (1024—49151) и динамические (49152—65535).
UDP — аналог TCP: описание отличий в поведении протокола в сети
В отличие от протокола ТСР User Datagram Protocol обеспечивает передачу данных без получения подтверждения от пользователя о результате действия. Благодаря этому достигается большая скорость работы и передачи данных в ущерб надежности и безопасности.
Особенности протокола диктуют специфику его применения. Так, он подходит для приложений, например, Skype, Discord и другие, которые работают в реальном времени и где задержка передачи данных может быть проблемой. Также его предпочтительно использовать в приложениях с большим количеством подключенных клиентов — например, в играх, голосовых или видеоконференциях, а также при потоковой передаче мультимедиа.
UDP работает путем сбора данных в UDP-пакете и добавления в пакет собственной информации заголовка. Заголовок UDP включает четыре поля, объем которых составляет 2 байта каждый: номер порта источника, номер порта назначения, длина заголовка и контрольная сумма блока.

Протокол UDP любят злоумышленники при организации DDOS — или DOS-атак. Из-за того, что данный протокол не требует подтверждения от сервера, открывается возможность просто «залить» сервер запросами. Стандартная атака подразумевает отправку большого количества дейтаграмм. Это заставляет сервер отвечать на каждый из них, расходуя вычислительные мощности.
SCTP — протокол передачи управления потоком
Еще один протокол, который относится к транспортному уровню. SCTP обеспечивает надежную последовательную передачу данных. Поддерживает многоадресное соединение, когда один или оба конечных узла могут состоять из более чем одного IP-адреса. Это обеспечивает прозрачное переключение между резервными сетевыми путями.
SCTP аналогичен протоколам UDP и TCP, которые обеспечивают функции транспортного уровня для некоторых интернет-приложений. Так как преимущество протокола SCTP — в быстром переключении между интерфейсами, на него переходят только компании, для которых критична недоступность приложений. SCTP работает поверх бесконтактной пакетной сети, такой как IP, и поддерживает передачу данных в случаях с одним или несколькими IP.
RTP — транспортный протокол реального времени
Real-time Transfer Protocol — это протокол, который используется при передаче потокового аудио и видео и применяется при передаче голоса преимущественно в IP-телефонии. RTP применяется в совокупности с протоколом управления RTCP. Когда RTP транслирует медиа, RTCP применяется при анализе статистик QoS (Quality of Service) и обеспечивает синхронизацию разных потоков. RTP отправляется и принимается с помощью четных номеров портов, а RTCP использует нечетные номера.
Также протокол считают главным стандартом, применяемым при передаче аудио и видео по IP-сети. Поскольку RTP может осуществлять ее нескольким конечным адресатам одновременно при помощи многоадресной IP-рассылки.
Протоколы межсетевого уровня: краткое описание
ICMP — протокол управляющих сообщений в сети
Задача протокола — диагностика проблем при взаимодействии устройств. Он определяет, достигли ли данные места назначения или нет.
Основная цель ICMP — сообщать об ошибках. Если какие-либо данные не попали по назначению, ICMP генерирует ошибки для обмена с отправляющим устройством. Например, если объем передаваемых данных слишком велик для маршрутизатора, маршрутизатор отбросит пакет и отправит ICMP-сообщение исходному источнику данных.
Как и в случае UDP, протокол ICMP можно использовать для сетевых атак, таких как ICMP flood и ping of death, где главный прием — генерация большого количества ICMP-сообщений.
OSPF — протокол маршрутизации состояния канала сети
Open Shortest Path First используется для поиска наилучшего пути между исходным и конечным маршрутизатором. Работает на межсетевом уровне модели OSI.
После настройки OSPF будет анализировать соседние маршрутизаторы и собирать все доступные данные о состоянии канала для построения топологической карты всех доступных путей в своей сети. Затем он сохранит информацию в своей базе данных топологии, также известной как База данных состояния канала (LSDB).
На основе собранной информации он вычислит наилучший кратчайший путь к каждой доступной подсети/сети, используя алгоритм под названием Shortest Path First (SFP).
Протоколы прикладного уровня: краткое описание
FTP — протокол передачи данных в сети
FTP — это клиент-серверный протокол, который использует два канала для передачи данных: командный, управляющий процессом передачи, и транспортный, непосредственно передающий информацию. Для FTP-протокола устройство конечного пользователя называется локальным хостом, а второй компьютер — удаленным хостом, играющим роль сервера. Для работы протокола требуется его правильная настройка со стороны хоста и специальный клиент на локальном хосте.
Описание работы протокола в сети Интернет
Пользователю нужно войти на FTP-сервер. Здесь нужно учитывать, что некоторые серверы разрешают доступ к части или всем своим данным без авторизации. Это называется «анонимным FTP». При этом файлы с сервера можно будет только передавать на компьютер клиента.
Далее клиент начинает диалог с сервером — запрашивает разрешение на изменение файлов на сервере. Использую авторизованный FTP-клиент, можно скачивать файлы с сервера, отгружать их на него и выполнять другие манипуляции.
FTP-сессии работают в двух режимах — активном и пассивном:
- При активном режиме сервер после инициализации, путем вызова командного канала, открывает транспортный канал и начинает передачу данных.
- При пассивном режиме сервер при помощи командного канала отправляет клиенту данные, требующиеся для открытия канала передачи данных.
Из-за того, что клиент создает все подключения в пассивном режиме, этот протокол хорошо подходит для работы с брандмауэрами.
DNS — справочник сети Интернет
Браузеры взаимодействуют между собой через IP-адреса. Люди, пытаясь подключиться к сайту, используют его доменное имя — например, https://selectel.ru/. Domain Name System преобразует домены в IP-адреса, чтобы сделать возможной загрузку интернет-ресурса через браузер. Каждому устройству в сети назначается свой IP-адрес, который используется другими устройствами для подключения к нему, а DNS-сервер позволяет людям не запоминать их.
На данный момент существуют четыре основных DNS-сервера, которые участвуют в загрузке веб-страниц:
- DNS recursor — своеобразный справочник, отвечающий за прием запросов от компьютеров пользователей, например, приложений браузеров;
- Root nameserver, или корневой сервер, является первым в процессе конвертации имени хоста в IP-адрес и позволяет получить список DNS-серверов.
- TLD nameserver — следующий шаг при поиске IP; хранит информацию про все доменные имена с общим расширением (.ru, .com и т.д.);
- Authoritative nameserver дает окончательные ответы на запросы о DNS.
Бесплатный DNS-хостинг от Selectel
Размещайте домены и записи на наших DNS-серверах. Запуск за несколько минут.
HTTP(S) — протокол передачи гипертекста
HTTP является основой интернета и используется для загрузки веб-страниц с использованием гипертекстовых ссылок. Относится к прикладным протоколам и работает поверх других уровней стека сетевых протоколов.
Обычно принцип передачи данных по протоколу HTTP включает в себя компьютер клиента (например, ваш ПК), отправляющий запрос на сервер, который затем возвращает ответ. Каждый HTTP-запрос включает в себя ряд закодированных данных, содержащих различную информацию, в том числе:
- версию HTTP,
- URL-адрес,
- метод HTTP-запроса — указание на ожидание запроса от сервера (например, PUT- и GET-запросы),
- заголовок — он передает основную информацию о запросе и содержит пары ключ-значение,
- тело запроса (опционально, это любая отправляющаяся информация).
После получения запроса сервер должен дать ответ. В его стандартную структуру входят: код состояния, заголовок и тело ответа.
Код состояния HTTP-запроса — это трехзначные коды, которые, как правило, указывают на успешность его выполнения. Они разбиваются на пять основных блоков:
- 1xx* Информация (Informational),
- 2хх Успешность выполнения (Success),
- 3хх Перенаправление (Redirection),
- 4xx Ошибка клиента (Client Error),
- 5xx Ошибка сервера (Server Error),
*ХХ обозначают цифры от 00 до 99.
Аналогично запросу, ответ имеет заголовок, который содержит различную информацию — например, язык отправляемых данных. В большинстве случаев там содержатся HTML-данные, которые веб-браузер клиента преобразует в страницу.
При разговоре про HTTP нельзя не упомянуть важный аспект — незащищенность протокола. При передаче данных все происходит открыто, в результате чего злоумышленник может перехватить данные. Для исключения этой проблемы был разработан протокол HTTPS. Подробное сравнение этих протоколов есть в нашем блоге.
SSH — основное средство подключения к серверам
SSH, или Secure Shell, — это защищенный протокол, который используется как основное средство подключения к серверам. С помощью него при подключении к серверу пользователь входит в уже существующую учетную запись, где выполняются все отправленные команды.
Данное соединение реализовано по схеме «клиент-сервер». Для его создания на удаленном устройстве должна быть запущена программа, называемая демоном. Демон выполняет подключение к определенному сетевому порту, проверяет подлинность запросов на подключение и создает соответствующую среду, если пользователь вводит правильные учетные данные. Также со стороны клиента должно быть установлено соответствующее ПО.
В панели управления Selectel пользователь может загрузить собственный SSH-ключ для повышения надежности и безопасности подключения или сгенерировать его на месте. Подробнее — в нашей базе знаний.
Устаревшие протоколы: Telnet, Gopher, FTP
На сегодняшний день существует более 7 000 тысяч различных протоколов. Сеть постоянно развивается, поэтому некоторые протоколы устаревают — например, Gopher, FTP, Telnet. Последний рассмотрим подробнее.
Telnet — это старый, но очень надежный протокол связи. Первоначально он был разработан как символьно-ориентированный протокол эмуляции терминала, используемый в среде UNIX. Сегодня Telnet широко используется для системного администрирования маршрутизаторов, коммутаторов и удаленных серверов, а также для базовой текстовой связи, в которой графика не требуется.
Заключение
В данной статье мы рассмотрели популярные протоколы взаимодействия устройств и программ в сети. В реальной жизни на одном только вашем ПК используются сотни протоколов, поскольку каждый выполняет определенные задачи. Узнать о задачах и принципах работы протокола можно в специальном документе, который называется RFC-стандартом.
Протокол IPv4: что это такое и как он работает

Основной целью для пользователей сети интернет является передача и получение данных. При этом мало кто из рядовых посетителей веб-ресурсов задумывается, каким образом тот или иной контент достигает конечной точки именно на вашем устройстве – смартфоне, планшете или ноутбуке. Для передачи информационных данных из точки А в точку Б применяется специальный протокол сетевого взаимодействия. Наибольшее распространение получил протокол интернета версии TCP/IPv4 (Transmission Control Protocol/Internet Protocol).
Немного истории
Протоколы управления передачей информации по сетям связи разработаны учеными Винтоном Грей Серфом и Робертом Эллиотом Каном в середине семидесятых годов прошлого столетия по заказу оборонного ведомства США. В то время Пентагон всерьез рассматривал вероятность возникновения глобальной ядерной войны. Стояла задача обеспечения непрерывной передачи данных по сетям связи даже в случае выхода из строя половины оборудования, размещенного в различных точках страны. Существовавшие на тот момент способы трансляции подразумевали соединение между узлами по прямым каналам связи. В случае отказа любого из них передача данных прерывалась. Протокол IPv4 впервые использовали в 1983 году в сети передачи данных ARPANET, явившейся прототипом современного интернета.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостейПринцип работы протокола IPv4
Internet Protocol представляет собой датаграмму, содержит заголовок и полезную нагрузку. Заголовок шифрует адреса источника и назначение информационного пакета, в то время как полезная нагрузка переносит фактические данные. В отличие от сетей прямой коммутации канала, критичных к выходу из строя любого транзитного узла, передача данных с помощью интернет-протокола IPv4 осуществляется пакетным способом. При этом используются разные маршруты передачи ip-пакетов. Допустима ситуация, когда пакеты нижнего уровня достигают конечного узла раньше, чем пакеты верхнего. Некоторые из них теряются во время трансляции. В этом случае посылается повторный запрос, происходит восстановление потерянных фрагментов.
Каждый сетевой узел в модели TCP/IP имеет собственный IP-адрес. Это обеспечивает гарантированную идентификацию устройств при установке соединения и обмене данными. В то же время отличают два уровня распределения адресов по протоколу TCP/ IPv4 – публичные и частные. Первые уникальны для всех без исключения устройств, осуществляющих обмен данными в общемировой WEB-сети. Например, IP-адрес 8.8.8.8 принадлежит компании Google и является адресом публичного DNS-сервера компании. При построении локальной подсети Ethernet идентификация внутренних устройств передачи данных осуществляется путем назначения собственных ip-адресов для каждой единицы оборудования. Коммутация осуществляется через порты роутера (маршрутизатора), каждому присваивается отдельный сетевой адрес с возможным дополнительным разделением на подсети за счет использования маски IP-адреса.
Изначально адресация в IP-сетях систематизировалась по классовому принципу путем деления на большие блоки, что делало ее неудобной в использовании как конечными пользователями, так и провайдерами. Ей на смену пришла бесклассовая схема под названием Classless Inter-Domain Routing (CIDR).
Основной атрибут протокола TCP/IPv4, его адрес, состоит из тридцати двух бит (четырех байт) и записывается четырьмя десятичными числами от 0 до 255, которые разделены точками. Есть альтернативные способы записи (двоичное, десятичное, без точки и т.д.), но они не меняют принципа работы протокола. В стандартном формате запись CIDR производится в виде IP-адреса, следующего за ним символа «/» и числа, обозначающего битовую маску подсети: 13.14.15.0/24. В данной комбинации число 24 означает количество битов в маске подсети, имеющих приоритетное значение. Полный IP-адрес состоит из 32 бит, маской являются старшие 24, соответственно, общее количество возможных адресов в сети составит 32 — 24 = 8 бит (256 IP-адресов). В этом диапазоне описываются сети, состоящие из различного количества доступных адресов путем их вариативной комбинации. Одна большая сеть может быть раздроблена на несколько более мелких подсетей нижнего уровня.

Режимы адресации протокола версии IPv4
Протокол IPv4 поддерживает три режима адресации:
- Одноадресный. При использовании данного режима данные передаются только на один сетевой узел, причем каждый из них может являться как отправителем, так и получателем. Поле адреса назначения содержит 32-битный IP-адрес устройства-получателя. Одноадресный режим используется чаще всего при обращении к интернет-протоколу.
- Широковещательный. При его использовании все устройства, подключенные к сети с множественным доступом, имеют возможность получения и обработки датаграмм, передаваемых по протоколу TCP/IPv4. Для этого поле ip-адреса назначения включает в себя специальный широковещательный код идентификации.
- Многоадресный. Согласно правилам обработки данных по протоколу IPv4, сюда входят адреса в диапазоне от 224.0.0.0 до 239.255.255.255. Режим объединяет два предыдущих, определяется наиболее значимой моделью 1110. В этом пакете адрес назначения содержит специальный код, который начинается с 224.x.x.x и может использоваться более чем одним узлом.
Для домашних сетевых устройств, будь то компьютер, смартфон или холодильник с функцией контроля через соединение Wi-Fi, назначается один общий ip-адрес. Согласно протоколу IPv4 он присваивается провайдером и закрепляется на уровне сетевого коммуникационного оборудования – роутера. Данный IP-адрес может быть статическим (неизменным) либо динамическим, меняющимся при отключении роутера от сети.

Протокол IPv4 в эталонной модели сетевого взаимодействия OSI 7
Модель OSI описывает общие принципы взаимодействия сетевых устройств по иерархическому признаку, состоящему из семи уровней: физического, канального, сетевого, транспортного, сеансового, представления, прикладного.

Как видим, протокол интернета TCP/IPv4 относится к третьему по счету уровню, сетевому. На этом уровне модели OSI происходит формирование оптимальных маршрутов и путей передачи данных между устройствами с учетом нагрузки на узлы сети. Здесь же происходит процесс трансляции – преобразования логических сетевых адресов в физические и наоборот. На программно-физическом уровне эту задачу выполняют роутеры, установленные у провайдеров и в конечной точке подключения интернета. Каждый уровень взаимодействует с верхним и нижним в обе стороны, выполняя определенную функцию обработки и передачи данных. Так третий уровень модели OSI, получив закодированную информацию от четвертого, делит ее на фрагменты, добавляя служебную информацию, и передает на второй уровень. Либо наоборот, при поступлении данных со второго сегмента на сетевом уровне происходит обработка и объединение пакетов, их передача на вышестоящий по иерархической цепочке модели OSI.
Данную модель не зря называют идеальной, так как она описывает общие принципы сетевого взаимодействия. На момент ее появления весь мир уже активно использовал стек протоколов IPv4. Причем модель TCP/IP более точно и правильно описывает существующие процессы передачи данных по сетям взаимодействия.
Любопытно. Разделением и присвоением IP-адресов занимаются четыре некоммерческих организации, разделенные по региональному принципу: RIPE NCC отвечает за Европу, ARIN действует на территории Америки, APNIC – в Азии и Тихоокеанском регионе, LACNIC – в Латинской Америке и на Карибах. Причем Россию отнесли в данной классификации к европейской RIPE. На самом деле полномочия выдачи ip-адресов делегированы локальным интернет-регистраторам (LIR), коими являются наиболее крупные провайдеры. Именно они работают с конечными пользователями в этом вопросе, в том числе финансово содержат вышестоящего регистратора за счет роялти.
Заключение
При всех своих достоинствах протокол интернета IPv4 имеет один критичный недостаток. Количество адресов, созданных с его помощью, не может превысить цифру 4 294 967 296 (минимальный адрес — 0.0.0.0, максимальный — 255.255.255.255). С учетом того, что население земного шара составляет более семи миллиардов человек, а количество всевозможных сетевых устройств растет ежедневно, предельный порог довольно близок. Согласно прогнозу RIPE NCC, в ближайшее время компаниям придется перекупать IP-адреса или ждать, когда они появятся в свободном доступе. Стоимость одного IP-адреса может составить $12-18, при этом минимальный пакет должен состоять не меньше чем из 256 адресов.
Протокол IPv6: что это такое и как он работает

Протокол сетевого взаимодействия TCP/IPv4 используется для передачи зашифрованных данных в сети интернет и локальных подсетях уже более тридцати лет. На его основании создается и поддерживается уникальная адресация сетевого оборудования (узлов). Еще в начале 90-х годов прошлого века был определен основной недостаток данного протокола – ограничение по количеству возможных ip-адресов, которое не может превысить 4,23 миллиарда. В результате была разработана новая система протоколирования сетевого взаимодействия – интернет-протокол IPv6 (Internet Protocol version 6). Однако массовый переход на более прогрессивную технологию обусловлен некоторыми сложностями. Хотя, например, в Соединенных Штатах уже более половины пользователей применяют именно протокол IPv6.
Основные отличия протоколов IPv4 и IPv6
Как уже было сказано, ключевым недостатком протокола четвертой версии TCP/IPv4 является ограниченная масштабируемость уникальных адресов, присваиваемых для идентификации в сетях взаимодействия. Для создания ip-адресов на уровне программных записей используется 32-х битная система в формате 0.0.0.0 – 255.255.255.255. При построении локальных подсетей вводится дополнительный атрибут «маска подсети», записываемая после символа «/». В результате даже крупные ЛВС, объединенные в Ethernet, чаще всего имеют один публичный ip-адрес, выдаваемый провайдером и закрепленный на уровне шлюза (маршрутизатора). Самостоятельный обмен данными на уровне отдельных устройств частной подсети с выходом в паблик-интернет требует сложного администрирования. Для решения задач маршрутизации, требующих получения статических IP-адресов, понадобятся дополнительные финансовые затраты.
В интернет-протоколе нового поколения IPv6 для создания адресной маршрутизации используется 128-битная система записи. В IPv6-адресе записи представляют собой восемь 16-битных блоков, разделенных двоеточиями: 2dfc:0:0:0:0217:cbff:fe8c:0. Общее количество ip-адресов, возможных для распределения, может составить в общей сложности 2 128 ( приблизительно 340 282 366 920 938 000 000 000 000 000 000 000 000). Повсеместное использование данного стандарта позволит полностью решить задачу нехватки сетевых адресов в обозримом будущем.
С целью упрощения записи адреса в протоколе IPv6 используется вариант сжатия кода, когда смежные последовательности нулевых блоков заменяются парами символов двоеточия. Например, адрес групповой рассылки FFEA:0:0:0:0:CA28:1012:4254 в сжатой форме будет представлен в укороченном виде FFEA::CA28:1012:4254. Данный механизм упрощает процесс записи, хранения и обработки кода.
По правилам протокола IPv6 назначение сетевых адресов происходит автоматически и уникализируется за счет идентификации на уровне MAC-адреса конкретной единицы оборудования, для которой необходим выход в публичную сеть. Другими словами, каждый домашний компьютер, смартфон, холодильник или стиральная машина с функцией подключения к внешним устройствам получает собственный «белый» ip-адрес для коннекта с другими хостами через интернет. Доступна также произвольная генерация кодов путем администрирования с использованием маршрутизаторов.

Впечатляет минимальный диапазон адресов подсети, получаемых пользователем при подключении по протоколу IPv6. Например, при использовании маски подсети «/128» получаем более 2 56 адресов.
Спорным является вопрос отличия в скорости передачи трафика по каждому из протоколов. По умолчанию технология протокола IPv6 обеспечивает большую скорость обработки трафика на уровне отдельного оборудования сети в целом. Использование NAT в протоколе IPv4, который обеспечивает трансляцию адресов абонентов и хранение в памяти информации об установленных соединениях, приводит к большой загрузке оборудования. Поэтому в моменты пиковой нагрузки каждый пользователь отмечает резкое падение скорости соединения.
В протоколе IPv6 не применяется обязательная обработка пакетов и отслеживание уже открытых соединений при маршрутизации доступа к хостам. Отсутствие необходимости трансляции значительно снижает ресурсную нагрузку на сетевые устройства. Для пользователя это означает выравнивание скорости интернет-соединения. Провайдеры в такой ситуации могут использовать менее ресурсоемкое, а значит, более дешевое оборудование.
Дополнительные преимущества протокола IPv6
По сравнению с четвертой версией, в протоколе TCP/IPv6 реализован ряд дополнительных функциональных возможностей:
- используется более простой заголовок, из него исключены несущественные параметры, что снижает нагрузку на маршрутизаторы при обработке сетевых запросов;
- более высокий уровень обеспечения безопасности, аутентификации и конфиденциальности, которые положены в основу данной технологии;
- в протоколе реализована функция Quality of Service (QoS), позволяющая определять чувствительные к задержке пакеты;
- при передаче широковещательных пакетов используются многоадресные группы;
- для реализации технологии мультивещания в IPv6 задействовано встроенное адресное пространство FF00::/8;
- для повышения безопасности используется поддержка стандарта шифрования IPsec, который позволяет шифровать данные без необходимости какой-либо поддержки со стороны прикладного ПО.
В настоящее время эксперты ведут дискуссии на предмет обеспечения безопасности данных в случае гибридного применения двух протоколов. Провайдеры выстраивают IPv6-туннели для предоставления пользователям IPv4 доступа к высокоуровневому контенту. Применение данной технологии увеличивает риски хакерских атак. Функция автоконфигурации, когда устройства самостоятельно генерируют IP-адрес на основе MAC-адреса оборудования, может быть использована для незаконного отслеживания конфиденциальных данных пользователей.
Внедрение протокола TCP/IPv6
Несмотря на долгую историю разработки, которая берет начало в 1992 году, тестирование нового протокола состоялось одномоментно 8 июня 2011 года в Международный день IPv6. Эксперимент прошел удачно и предоставил возможность для выработки рекомендаций по дальнейшему совершенствованию данной технологии, ее массовому внедрению.
Первой компанией, внедрившей в 2008 году стандарт протокола IPv6 на постоянной основе, стал Google. Тестирование проводилось в течение четырех лет, было признано успешным. 6 июня 2012 года состоялся Всемирный запуск IPv6. Сегодня мировые лидеры в производстве сетевого оборудования Cisco и D-Link применяют данный сетевой стандарт в своих маршрутизаторах на базовом уровне. В мобильных сетях стандарта LTE поддержка протокола IPv6 является обязательной. IT-компании Google, Facebook, Microsoft и Yahoo используют IPv6 на своих основных web-ресурсах. Протокол получает все большее распространение в корпоративных сетях и при домашнем использовании.
Согласно исследованиям Google, на начало 2020 года доля IPv6 в общемировом сетевом трафике составляла около 30%. В России данный показатель значительно ниже, он составляет приблизительно 4,5% всего трафика. В то же время все большее количество отечественных регистраторов доменов и хостинг-провайдеров переводят свои DNS-серверы на протокол IPv6.
Сложности перехода
Возникает резонный вопрос: если протокол TCP/IPv6 обладает таким количеством преимуществ по сравнению с предшественником, почему бы просто не перейти на него всем миром? Основное препятствие лежит в сфере финансов и временных параметров. Для полномасштабного использования новой технологии требуются серьезные инвестиции в программно-техническую модернизацию компьютерного парка всех провайдеров.
Использование динамических ip-адресов по протоколу IPv4 позволяет временно сдерживать проблему нехватки уникальных сетевых идентификаторов. Другими словами, проблемы администрирования локальных сетей перекладываются на конечных пользователей, которые вынуждены настраивать сложные схемы маршрутизации подсетей и покупать дополнительные ip-адреса. В то же время рост количества конечных сетевых устройств происходит очень быстро. Внедрение технологий прямой коммуникации даже с обычными бытовыми приборами через интернет требует новых подходов в построении архитектуры их взаимодействия. В связи с этим повсеместный переход на использование стека протокола TCP/IPv6 неизбежен.