Привет, ребят!
Важно понимать, что спецификация IP описывает не только пакеты и какой-то абстрактный протокол, она описывает в том числе и устройства, которые: генерируют, принимают или же пересылают IP-пакеты, о устройствах и поговорим далее.
Некоторые публикации, как эта, будут состоять из двух или более частей. В первой части будет просто теория, которую я постараюсь быстро и емко изложить, в принципе, для понимания сути ее будет достаточно, во второй и последующих частях будут более детальные пояснения и практика.
Для тех, кому проще смотреть, чем читать, видео есть в конце данной статьи.
Виды устройств в IP
Если коротко, то все устройства IP делит на два вида:
- Конечные или терминальные узлы, проще будет говорить хосты, которые могут отправлять и получать пакеты, в некоторых случаях устройство может либо только получать, либо только отправлять пакеты. Хосты описаны в RFC1122.
- Транзитные узлы или роутеры, как правило, к таким узлам мы не обращаемся напрямую, их задача направлять пакеты в ту или иную сторону.
Протокол IP – это протокол сетевого уровня, любые сетевые устройства должны быть соединены каналами, канальная среда может быть любой, но чаще всего на канальном уровне мы работаем с Ethernet.
Задачи узла отправителя
Перейдем к более детальному рассмотрению, начнем с хостов и сперва посмотрим на то, какие действия выполнят конечный узел, чтобы отправить пакет:
- Первым делом формируется IP пакет: процесс IP получает данные от вышестоящего процесса и накрывает их своим заголовком. Обычно вышестоящий процесс это процесс протокола UDP или TCP, то есть это процесс транспортного уровня, но, например, когда мы запускаем пинг используется ICMP. ICMP это протокол сетевого уровня, но для IP он вышестоящий процесс. К заголовку IP-пакета мы еще вернемся и рассмотрим его подробно. Сейчас нам лишь важно понимать, что есть заголовок, в котором хранится служебная информация, а есть тело пакета, в котором находятся данные, пришедшие от вышестоящего процесса
- Вторым шагом отправитель должен решить какому соседу по канальной среде нужно передать пакет, чтобы он дошел до получателя. Если получатель в одной канальной среде с отправителем, то пакет будет передан непосредственно ему. Если же нет, то пакет будут передан транзитному узлу, который дальше будет принимать решение о том что делать с пакетом.
- В зависимости от результатов второго шага отправитель определяет свой интерфейс, через который пакет будет отправлен в сеть, а затем канальный адрес соседа, которому пакет будет передан (если на канальном уровне Ethernet, то определить мак-адрес при помощи протокола ARP).
- В итоге пакет запаковывается в кадр и отправляется через выбранный интерфейс в сеть.
Как видим, каких-то хитрых функций отправитель не делает.
Задачи узла получателя
Задачи получателя несколько более простые:
- Пакет нужно получить и убедиться в двух вещах: получатель должен убедиться, что именно он является получателем, а также проверить корректность полученных данных.
- Далее данные передаются вышестоящему процессу, который уже решит что с ними делать.
Если получатель сочтет нужным, то он в дальнейшем может послать ответ отправителю.
Задачи маршрутизатора (транзитного узла)
Роутеры - самые сложные устройства с точки зрения IP, выполняющее самый большой объем работы. В их задачи входит:
- Получить пакет (пакет может прийти как от непосредственно отправителя, так и от другого роутера, маршрутизатору это не важно, т.к. зачастую судьба пакета определяется только IP-адресом получателя, указанным в заголовке). Роутер должен убедиться в корректности полученных данных, а также в том, что он не является конечным получателем.
- Далее требуется определить какому из соседей по канальной среде следует передавать пакет. Если роутер в одной канальной среде с получателем, то пакет будет передан непосредственно ему, если же нет, то следующему транзитному узлу.
- Как и в случае с узлом отправителем, роутер определяет свой интерфейс, в который будет послан пакет, а также канальный адрес соседа.
- Если требуется модификация пакета, то пакет модифицируется, а затем отправляется в выбранный интерфейс.
Для проверки корректности заголовка у пакета есть контрольная сумма, а чтобы понять, что ты не являешься конечным получателем достаточно сравнить IP-адрес назначения в пакете со своими IP-адресами и если они не совпадают, то направить пакет дальше.
Важно понимать, что описанные роли никак не ограничивают устройства, одно и то же устройство может быть: отправителем, получателем и транзитным узлом. Для примера возьмем ваш домашний роутер: когда вы выходите в интернет, это транзитный узел, когда вы подключаетесь к роутеру, чтобы его настроить, он становится хостом, который отправляет и принимает пакеты.
Обратное утверждение тоже справедливо: устройство не обязано реализовывать сразу все три функции, например, различного рода дешевые датчики мониторинга могут только посылать пакеты.
Видео версия
Для тех, кому больше нравится слушать и смотреть, всё тоже самое, но только на Ютубе: