Серия «IP протокол (IPv4)»

16

Виды устройств в IP (хосты и роутеры). Часть 2

Господа, дамы, здравствуйте!

Продолжение поста о видах устройств в IP, если вы не смотрели первую часть, то рекомендую сперва перейти туда, а затем уже читать здесь. Вопросы, замечания, дополнения и уточнения только приветствуются.

В этой части мы посмотрим на то, как отправители и получатели будут взаимодействовать друг с другом в том случае, когда между ними стоят роутеры, т.е. в тех случаях, когда узлы находятся в разных канальных средах или другими словами в разных подсетях.

Взаимодействие отправителя и получателя через роутеры

Далее мы будем работать с верхней частью схемы.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Пинг c PC0 к PC1 в режиме реального времени

Не будем рассматривать детально, что делают отправители и получатели, а также не будем рассматривать, что делают все транзитные узлы, кроме RO2, на нем и остановимся детально. Плюс, как видите, я изначально в режиме реального времени выполнил пинг, сделано это было, чтобы не смотреть на работу протокола ARP, который в данном случае должен отработать между каждым линком каждого устройства, представленного на схеме.

Сделаю небольшое пояснение, на рисунке выше показано, что я планирую пинговать с узла PC0 узел PC1, но по факту я пинговал адрес 10.2.2.1, который настроен на роутере RO3 на интерфейсе в сторону PC1, надеюсь, никто за это не осудит.

Понятно, что сперва отправитель PC0 должен будет сформировать IP-пакет в сторону получателя, здесь мы также сильно не мудрим и используем команду ping. Вся разница с первым случаем в том, что PC0 направит пакет не сразу к получателю (по факту это RO3), а в сторону транзитного узла RO1, т.е. PC0 должен будет изучить мак-адрес RO1 и выбрать тот интерфейс, который ведет к RO1, различия сетевого уровня у отправителя при отправке пакета сразу получателю и для случая, когда пакет посылается транзитному узлу представлены ниже.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Сетевой уровень узла отправителя для случая, когда получатель в другой подсети

  1. Запускается процесс Ping.

  2. Создается сообщение ICMP Echo Request и отправляется нижележащему процессу.

  3. При пинге не была задан явно IP-адрес источника, поэтому узел выбрал наиболее оптимальный адрес с его точки зрения.

  4. И вот здесь начинается разница. Узел видит, что адрес, который надо пинговать, находится в другой подсети, а это означает, что надо прибегнуть к помощи роутера.

  5. Благо, что адрес роутера, который может помочь доставить пакет в пункт назначения, по мнение узла PC0, задан в качестве шлюза по умолчанию(defalut gateway или DG).

Маршрут по умолчанию, шлюз по умолчанию, DG. Пока по-простому... Это инструкция для узла: если у тебя нет точной информации куда направить пакет, направляй его узлу, который у тебя задан шлюзом по умолчанию.

Описание происходящего на канальном и физическом уровнях узла PC0 мы пропускаем, как и полностью пропускаем действия RO1. В итоге нам важно, что RO1 получил пакет от PC0 и передал его RO2.

На маршрутизаторе RO2 физические порта подключены так:

FastEthernet8/0 к RO1

FastEthernet7/0 к RO3

FastEthernet9/0 к коммутатору

На физическом уровне RO2 просто принимает битовую последовательность в порт Fa8/0 и формирует из нее кадр, который передается на L2.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Что делает RO2 на канальном уровне при приеме пакета

  1. RO2 убеждается, что мак-адрес назначения в кадре принадлежит ему.

  2. А это значит, что кадр можно вскрыть, посмотреть что внутри и как-то эти внутренности обработать.

После вскрытия на канальном уровне внутри обнаруживается IP-пакет и в дело вступает сетевой.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Что делает RO2 на сетевом уровне при приеме пакета

В CPT описание скромное, немного дополню: транзитный роутер не снимает IP-заголовок пакета, в данном случае он лишь смотрит на поле, в котором хранится IP-адрес назначения, запоминает адрес назначение и начинает проверять: а есть ли этот адрес в его таблице маршрутизации. В ходе этой проверки может возникнуть разные ситуации, например:

  1. Этот адрес настроен на его интерфейсе, тогда заголовок будет снят для дальнейшего анализа.

  2. Этот адрес будет принадлежать соседу, который подключен к одному из интерфейсов роутера, тогда роутер пошлет пакет непосредственно ему.

  3. Этот адрес будет доступен через другой транзитный узел, тогда адрес будет послан непосредственно ему.

  4. У роутера может не быть никакой информации о сети, в которой находится данный адрес, такой пакет будет уничтожен.

Подумайте: какой из пунктов описывает данную ситуацию?

В итоге RO2 понял, что IP-адрес ему не принадлежит и нужно понять, куда отправлять пакет, для этого он смотрит в таблицу маршрутизации. Нам сейчас не важно как роутер это делает, важно только то, что из таблицы маршрутизации роутер может достать информации об интерфейсе, в который надо направить пакет, либо IP-адрес соседа по канальной среде, в сторону которого пакет нужно направить.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Что делает RO2 на сетевом уровне при отправке пакета следующему узлу

Здесь нам поясняется:

  1. RO2 нашел по таблице маршрутизации какой маршрут соответствует IP-адресу назначения, а также был установлен IP-адрес соседа, в сторону которого следует направить пакет.

  2. И изменил значения поля TTL (TTL это число, которое задает узел отправитель, RO2 отнял от него единицу).

Пакет был передан канальному уровню.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Что делает RO2 на канальном уровне при отправке пакета следующему узлу

На канальном уровне:

  1. Роутер начинает понимать, что IP-адрес соседа (next-hop IP), которому нужно направить пакет, является юникастовый, а значит надо запустить ARP (next-hop IP это не IP-адрес назначения, а именно адрес соседа, которому пакет будет передан).

  2. Протокол ARP в своей таблице нашел соответствие между IP-адресом и мак-адресом соседа.

  3. Пакет запаковался в Ethernet кадр.

Кадр спускается на физический уровень. Здесь определяется интерфейс (Fa7/0), через который пакет будет послан следующему транзитному узлу, а кадр превращается в последовательность нулей и единиц.

Как помните, я совершил ошибку и начал пинговать узел RO3. На самом деле это даже неплохо, так как появилось несколько моментов, которые я бы обязательно упустил.

  1. RO2 при передачи пакета в сторону RO3 считает, RO3 следующим транзитным узлом, а не конечным получателем. Вопрос: почему он так считает? На самостоятельный разбор.

  2. RO3 является конечным получателем, но пакет к нему приходит на один интерфейс (который направлен на RO2), а PC0 пингует интерфейс RO3, которым RO3 соединяется с PC1. Давайте посмотрим, что происходит на RO3.

У RO3 интерфейсы распределены так:

Fa6/0 в сторону RO2

Fa7/0 в сторону компьютера

Канальный и физический уровни RO3 смотреть смысла нет, там ничего нового, смотрим сразу в сетевой:

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Сетевой уровень при приеме пакета на RO3

  1. Роутер понимает, что IP-адрес назначения, указанный в принятом пакете, настроен на одном из его интерфейсов, поэтому надо вскрыть пакет, понять какому процессу его передать и сделать это (в смысле передать).

  2. Вскрытие показало ICMP вложение, значит данные надо передать процессу ICMP.

  3. Процесс ICMP понимает, что это сообщение Echo Request.

А значит надо понять чего и как отвечать, смотрим сетевой Out Layers.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Сетевой уровень RO3 при ответе на запрос

  1. Процесс ICMP понимает, что отвечать надо сообщением Echo Reply.

  2. ICMP процесс его и генерирует.

  3. IP подхватывает данный Reply и накрывает своим заголовком.

  4. В пакете есть IP-адрес назначения, это адрес узла PC0, роутеру надо по таблице маршрутизации найти маршрут для этого адреса, чтобы понять куда слать пакет.

  5. Когда маршрут найден, пакет передается канальному уровню, также канальному уровню передается информация о IP-адресе соседа транзитного узла, которому пакет нужно направить.

Все дальнейшие действия были описаны уже не раз. Посмотрим лишь на результат: когда пакет дошел до PC0.

Виды устройств в IP (хосты и роутеры). Часть 2 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

PC0 получил ICMP ответ

Ниже представлены результаты первого пинга, который был сделан в режиме реального времени и второго пинга, который мы рассматривали в симуляции.

C:\>ping 10.2.2.1

Pinging 10.2.2.1 with 32 bytes of data:

Request timed out.

Request timed out.

Reply from 10.2.2.1: bytes=32 time=4ms TTL=253

Reply from 10.2.2.1: bytes=32 time<1ms TTL=253

Ping statistics for 10.2.2.1:

Packets: Sent = 4, Received = 2, Lost = 2 (50% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 4ms, Average = 2ms

C:\>ping 10.2.2.1

Pinging 10.2.2.1 with 32 bytes of data:

Reply from 10.2.2.1: bytes=32 time=6ms TTL=253

Reply from 10.2.2.1: bytes=32 time=3ms TTL=253

Reply from 10.2.2.1: bytes=32 time<1ms TTL=253

Reply from 10.2.2.1: bytes=32 time<1ms TTL=253

Ping statistics for 10.2.2.1:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 6ms, Average = 2ms

C:\>

Вопросы

Если решите по отвечать на представленные ниже вопросы, предлагаю давать их под комментарием, который я оставлю под этим постом для ответа на вопросы.

  1. Как мак-адрес РС2 оказался в ARP таблице PC3, если PC3 не делал ARP запрос чтобы узнать мак-адрес РС2 (вопрос по первой части)?

  2. Куда потерялись пакеты при первом пинге от PC0 до RO3.

  3. Как узлы в примерах понимают, что из полученных битов нужно слепить Ethernet кадры а не кадры какого-то другого протокола?

  4. Какой порт слушает узел получатель для приема ICMP?

  5. За счет чего ARP запрос получают все соседи по канальной среде?

  6. Нужен ли будет ARP, если на канальном уровне будет не Ethernet, а какой-то другой протокол?

Показать полностью 9 1
16

#002 Виды устройств в IP (хосты и роутеры). Часть 1

Господа, дамы, здравствуйте!

Важно понимать, что IP это не только пакет и адрес, но и устройства, на которые эти самые адреса назначаются, чтобы затем генерировать, пересылать или же принимать пакеты, о устройствах и поговорим далее. На Пикабу есть ограничение: пост не может иметь больше 25 картинок, в ходе его подготовки это ограничение было немножечко превышено мной, поэтому он разделен на две части.

Первая часть содержит в себе теорию, плюс здесь мы посмотрим на взаимодействие двух оконечных IP узлов в тех случаях, когда им для этого взаимодействия роутер не требуется.

Для общего представления о работе IP теории будет достаточно, для того чтобы проникнуться лучше самостоятельно собрать и повторить лабу в Cisco Packet Tracert(далее для краткости CPT), внимательно посмотреть где и какие адреса меняются, подумать(с гуглом или яндексом) почему это происходит. Вопросы, замечания, дополнения и уточнения только приветствуются.

Виды устройств в IP

Устройства в IP делятся на два вида:

  1. Конечные или терминальные узлы, для краткости я их буду называть хосты, они могут отправлять и получать пакеты, в некоторых случаях устройство может либо только получать, либо только отправлять пакеты. Хосты описаны в RFC1122.

  2. Транзитные узлы или роутеры, как правило, к таким узлам мы не обращаемся напрямую, их задача направлять пакеты в ту или иную сторону.

Протокол IP – это протокол сетевого уровня, любые сетевые устройства должны быть соединены каналами, канальная среда может быть любой, но чаще всего на канальном уровне мы работаем с Ethernet.

Задачи узла отправителя

Начнем с хостов и с их возможности генерировать пакеты и направить их в сеть, вот что делает устройство для отправки пакета:

  1. Пакет нужно сформировать, следует сказать, что IP-пакет состоит из двух частей: заголовка, в котором находится вся необходимая информация для обработки пакета узлами компьютерной сети и поля данных. Сам IP никаких данных не генерируют, процесс IP получает данные от вышестоящего процесса, если вышестоящим процессом является транспортный уровень, то обычно это такие протоколы как UDP, TCP, SCTP, но вышестоящим процессом может быть и протокол сетевого уровня, например, протокол ICMP, который используется когда мы хотим чего-нибудь попинговать. Кто бы ни был вышестоящим процессом его данные помещаются в соответствующее поле данных в пакете, а затем накрываются заголовком.

  2. Вторым шагом отправитель должен решить какому соседу по канальной среде нужно передать пакет, чтобы он дошел до получателя. Если получатель в одной канальной среде с отправителем, то пакет будет передан непосредственно ему. Если же получатель находится в другой подсети, то пакет будут передан транзитному узлу, который дальше будет принимать решение о том что делать с пакетом.

  3. Отправитель может иметь один или несколько интерфейсов, которыми он подключен к сети, поэтому ему нужно выбрать интерфейс, в который пакет будет направлен, выбор будет зависеть от результатов второго шага, а затем нужно определить канальный адрес соседа, которому пакет будет отправлен. Если получатель в одной канальной среде с отправителем, то определяется канальный адрес получателя, если получатель и отправитель в разных подсетях, то отправитель определяет канальный адрес транзитного узла, которому пакет будет передан. Если на канальном уровне Ethernet, то определяется мак-адрес, за узнавание мак-адресов соседей отвечает протокол ARP.

  4. И наконец IP-пакет запаковывается в кадр канального протокола, далее кадр превращается в битовую последовательность, которая направляется в сеть через выбранный интерфейс.

Вроде бы никаких хитрых действий отправитель не совершает.

Задачи узла получателя

Задачи получателя несколько более простые:

  1. Пакет нужно получить и убедиться в двух вещах:

    1. Получатель должен убедиться, что именно он является получателем.

    2. А также проверить корректность полученных данных.

  2. Далее данные передаются вышестоящему процессу, который уже решит что с ними делать.

Если получатель сочтет нужным, то он в дальнейшем может послать ответ отправителю.

Задачи маршрутизатора (транзитного узла)

Роутеры самые сложные устройства с точки зрения IP, выполняющее самый большой объем работы. В их задачи входит:

  1. Получить пакет (пакет может прийти как от непосредственно отправителя, так и от другого роутера, маршрутизатору это не важно, т.к. зачастую судьба пакета определяется только IP-адресом получателя, указанным в заголовке). Роутер должен убедиться в корректности полученных данных, а также в том, что он не является конечным получателем.

  2. Далее требуется определить какому из соседей по канальной среде следует передавать пакет. Если роутер в одной канальной среде с получателем, то пакет будет передан непосредственно ему, если же нет, то следующему транзитному узлу.

  3. Как и в случае с узлом отправителем, роутер определяет свой интерфейс, в который будет послан пакет, а также канальный адрес соседа.

  4. Если требуется модификация пакета, то пакет модифицируется, а затем отправляется в выбранный интерфейс.

Для проверки корректности заголовка у пакета есть контрольная сумма, а чтобы понять, что ты не являешься конечным получателем достаточно сравнить IP-адрес назначения в пакете со своими IP-адресами и если они не совпадают, то направить пакет дальше.

Важно понимать, что описанные роли никак не ограничивают устройства, одно и то же устройство может быть: отправителем, получателем и транзитным узлом. Для примера возьмем ваш домашний роутер: когда вы выходите в интернет, это транзитный узел, когда вы подключаетесь к роутеру, чтобы его настроить, он становится хостом, который отправляет и принимает пакеты.

Обратное утверждение тоже справедливо: устройство не обязано реализовывать сразу все три функции, например, различного рода дешевые датчики мониторинга могут только посылать пакеты.

Топология и подготовка лабы

С теорией всё, давайте соберем простенькую лабу и посмотрим на IP устройства в эмуляторе. Для практики по данной теме буду использовать CPT. Пока мы ничего не будем настраивать, просто посмотрим, что эмулятор будет нам рассказывать о действиях узлов.

В целом я бы не рекомендовал для обучения использовать CPT, в данном случае я его использую для наглядности. Если производительность вашего ПК позволяет, присмотритесь к GNS3 или EVE-NG, второй эмулятор более предпочтительный. Есть еще pnetlab, говорят он даже по-лучше EVE-NG будет. Если нужен онлайн эмулятор, можно попробовать онлайн сервис СПбГУ: https://miminet.ru/

Схема, на которой будем тренироваться выглядит так:

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Топология лабы. Если будете настраивать самостоятельно, то не забудьте отключить на роутерах CEF+настроить маршрутизацию.

Пояснения к схеме:

  1. Оранжевым обведены хосты.

  2. Зеленым роутеры.

  3. Синим коммутатор, в данном случае мы его не рассматриваем как IP-устройство, сейчас можно представить, что это не коммутатор, а связка проводов, которая соединяет PC2, PC3 и RO2 вместе.

На топологии, обведенной фиолетовым, мы посмотрим как два хоста взаимодействуют напрямую, а на участке, обведенном серым, мы посмотрим на взаимодействие хостов через транзитные узлы. Начнем с прямого взаимодействия.

У CPT есть два режима работы: режим реального времени и режим симуляции, в котором можно отследить каждое действие и отследить каждый пакет. Заглянуть внутрь пакетов и получить описания действий узлов можно в режиме симуляции.

Лабу нужно перевести в режим симуляции, а затем настроить фильтр пакетов, которые мы хотим видеть, всё это можно сделать кнопками в правом нижнем углу программы.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Кнопка Simulation для перевода в режим симуляции, кнопка "Edit Filters" чтобы отключить лишние для нас пакеты. Оставляем только ICMP и ARP.

Кнопка Edit Filters отвечает за появление окна на скрине выше, на вкладках IPv6 и Misc тоже нужно отключить отображение всех прочих пакетов.

Я сознательно не останавливался на детальном описание интерфейса CPT, сам он нам не интересен, да и гайдов по его использованию в этих ваших интернетах тьма темная.

Взаимодействие отправителя и получателя

Начнем с более простого, то есть с той ситуации, когда отправитель и получатель находятся в одной канальной среде. На схеме между PC2 и PC3 есть коммутатор, но для IP он полностью прозрачный, можно считать что этих два устройства с точки зрения IP соединены напрямую проводом.

Выполним пинг с PC2 на PC3, нужно открыть командную строку PC2 сделать это можно так:

  1. В топологии кликаем на иконку PC2.

  2. Появится окно, в котором нужно будет выбрать вкладку Desktop.

  3. На вкладке Desktop выбираем иконку Command Prompt.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Интерфейс компьютера в CPT

После этого у нас появится командная строка, в ней мы пишем: ping 192.168.0.1. В данном случае мы смотрим на прямое взаимодействие отправителя и получателя, они находятся в одной подсети, а значит и в одной канальной среде, а это всё означает, что таким узлам не нужны посредники в виде роутеров.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

PC2 сформировал пакеты

После того, как мы ввели команду и нажали Enter, PC2 сформировал два пакета:

  1. Синий, это как раз тот пакет, который нас интересует, то есть ICMP.

  2. Зеленый, это кадр с ARP запросом, он нам не интересен, сейчас нам лишь важно понимать, что протокол ARP поможет PC2 узнать канальный адрес узла PC3, в данном случае это мак-адрес.

Посмотрим содержимое синего пакета, клацнув в него.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Содержимое ICMP пакет и описание того как его обрабатывает отправитель на сетевом уровне.

Появившееся окно имеет две вкладки: OSI Model и Outbound PDU Details. Нам интересна первая, вторую даже смотреть не будем, на ней представлена детальная информация о структуре кадров и пакетов, она нам сейчас не интересна.

На вкладке OSI можно по шагам посмотреть что делает тот или иной узел при приеме или отправке пакета. За прием отвечает In Layers, за передачу отвечает Out Layers. Как видите, каждая половина разбита на семь уровней, это семь уровней модели OSI, если шрифт уровня тускло серого цвета, значит на нем ничего не происходит, если шрифт черный, значит на этом уровне что-то происходит и он кликабельный, переключаться между уровнями можно еще и кнопками Previous Layer/Next Layer.

Сетевым инженерам обычно интересны уровни с транспортного и ниже, то есть Layer 1 - Layer 4, если мы смотрим на окно CPT. Ниже я приведу синонимы каждого Layer, которые обычно используются:

Layer 1 = L1 = Физический уровень

Layer 2 = L2 = Канальный уровень

Layer 3 = L3 = Сетевой уровень

Layer 4 = L4 = Транспортный уровень

На рисунке выше CPT нам показывает, что делает узел отправитель(PC2) на сетевом уровне :

  1. PC2 запустил процесс Ping сразу после того, как мы выполнили команду ping.

  2. Процесс Ping создает сообщение ICMP Echo Request и отправляет его нижележащему процессу. Здесь следует пояснить, что ICMP и IP это протоколы сетевого уровня, но для ICMP процесс IP это нижележащий процесс.

  3. Отправитель должен подставлять в пакет свой IP-адрес, чтобы обратная сторона могла ответить, если она сочтет это нужным. При выполнении команды ping не был задан IP-адрес, поэтому устройство выбрало адрес само (оптимальный на взгляд устройства, хотя по факту он там настроен один).

  4. PC2 установил, что IP-адрес узла получателя находится с ним в одной подсети, а также в пакет был добавлен IP-адрес узла получателя.

А вот что CPT нам может рассказать о канальном уровне.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Что происходит на канальном уровне

Важный момент: в примере на канальном уровне у нас работает Ethernet, за связку сетевого и канального уровня в случае IP/Ethernet используется протокол ARP.

На канальном уровне:

  1. Узел PC2 определил, что IP адрес получателя юникастовый, а это значит, что узел должен знать или определить мак-адрес получателя. Чтобы определить канальный адрес соседа узел запустил процесс ARP.

  2. Первым делом ARP проверил свою таблицу, чтобы найти: какой мак-адрес соответствует IP-адресу, который мы пингуем (192.168.0.1), но такого соответствия он не обнаружил, поэтому PC2 сформировал ARP-запрос и сохранил ICMP пакет в свой буфер(то есть на текущем шаге синий пакет отправлен никуда не будет).

На физическом уровне пока ничего не происходит, нам нужно перевести симуляцию на следующий шаг. Сделать это можно в правом нижнем углу экрана на соответствующей панели.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Управление симуляцией

Кнопка Play запустить симуляцию в автоматическом режиме, левая кнопка это шаг назад, правая кнопка шаг вперед. Автоматический режим нам не интересен, перейдем на следующий шаг. Следующих несколько шагов покажут нам как по сети гуляет ARP, сейчас мы не будем детально разбираться с тем, как работает ARP, для этого будет отдельная тема, сейчас нам важно понимать две вещи:

  1. ARP-запрос PC2 использует, чтобы изучить канальный адрес соседа, в сторону которого должен быть отправлен пакет с ICMP.

  2. ARP-запрос получат все соседи PC2 по канальной среде, но ответ даст только тот сосед, чей IP-адрес будет указан в ARP-запросе, все остальные проигнорируют этот ARP-запрос. И тут два момента: если соседей с таким IP нет, то никто и не ответит; если сосед с таким адресом есть, то он ответит, в ответе будет содержаться его мак-адрес.

Вот что по этому поводу нам показывает CPT:

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Соседние узлы получили ARP-запрос

Узел RO2 получил запрос и проигнорировал его, это видно по красному крестику, а вот узел PC3 готов ответить на запрос. Что делает PC3 для отправки ARP мы пропустим, но в итоге мы приходим к той ситуации, что узел PC2 получил ARP ответ и изучил мак-адрес соседа, в сторону которого надо отправить пакет.

Зеленый пакет ниже это и есть ARP-ответ PC3, а синий пакет, это тот ICMP, который ранее был спрятан в буфер.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Узел PC2 получил ARP-ответ от узла PC3, тем самым изучил его канальный адрес

Давайте рассмотрим дальнейшие действия PC2, уже после того, как он изучил мак-адрес нужного соседа.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Узел PC2 изучил мак-адрес соседа и отправляет пакет

Напомню, что остановились на том, что у канального уровня не было мак-адреса соседа, в сторону которого надо было посылать пакет, теперь мы этот адрес знаем, поэтому:

  1. ICMP пакет был извлечен из буфера для дальнейшей обработки.

  2. PC2 инкапсулирует(помещает/запаковывает) IP пакет, внутри которого ICMP, внутрь Ethernet кадра.

И тут мы видим что физический уровень стал кликабельным.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Что происходит на физическом уровне

А на L1 мы видим, что отправитель выбрал свой интерфейс, через который он будет готов послать сообщение в сеть, на физическом уровне Ethernet кадр превращается в последовательность бит.

Пакет пройдет коммутатор и на нем мы не будем останавливаться, для нас там ничего интересного нет. Посмотрим на пакет, пришедший к получателю.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Пакет пришел к получателю

Здесь мы видим изменения:

1. На вкладке OSI появилось описание того, что происходит на приеме, т.е. теперь у нас информация по In Layers и Out Layers.

2. Вкладок PDU Details тоже стало две.

Сейчас мы не будем заходить на вкладку из пункта два. Что касается первого пункта: PC3 должен сперва принять пакет, т.е. выполнить действия получателя, они описаны под заголовком In Layers, а затем он должен будет дать ответ, т.е. PC3 становится отправителем, что он делает для ответа описано под заголовком Out Layers.

Также вы могли заметить что прием выполняется снизу вверх, а передача наоборот, сверху вниз. PC3 на физическом уровне получает битовую последовательность по порту FastEthernet0 и превращает ее в кадр Ethernet. Переходим на канальный уровень.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Действия узла на канальном уровне при приеме пакета

Здесь узел PC3 убеждается:

  1. Что мак-адрес это мак-адрес, который присвоен одному из интерфейсов PC3, либо это широковещательный мак-адрес, любо это мак-адрес многоадресной рассылки, на который должен отвечать PC3. По факту в данном случае мак-адрес юникастовый и он принадлежит PC3.

  2. Ввиду того, что мак-адрес назначения, указанный в кадре, принадлежит PC3, можно снять Ethernet заголовок и заглянуть и обнаружить под ним IP-пакет.

Переходим на сетевой уровень.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Сетевой уровень при приеме пакета

Здесь происходит следующее:

  1. PC3 убеждается, что пакет направлен именно ему, а не кому-то другому, поскольку он видит что адрес назначения в пакете совпадает с тем, что настроен на его интерфейсе, либо широковещательный, либо из диапазона многоадресной рассылки в которой данный узел заинтересован. В нашем случае адрес назначения в пакете настроен непосредственно на PC3, а это значит, что можно снять заголовок IP и посмотреть что в пакете.

  2. Внутри пакет обнаружилось ICMP вложение, которое надо передать процессу ICMP.

  3. ICMP процесс установил что тип полученного сообщения это ICMP Echo Request, на который нужно дать ответ.

И вот мы на границе, когда один и тот же узел превращается из отправителя в получателя. Посмотрим, что делает PC3 для отправки ответа, ответ начинает формироваться на сетевом уровне и спускается вниз к физическому.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Узел PC3 готовит ICMP Reply, сетевой уровень

Действия узла такие:

  1. ICMP процесс решает что на данный Request следует ответить сообщением типа ICMP Echo Reply.

  2. Сообщение Echo Reply отправляется процессу IP.

  3. Узел видит, что IP-адрес назначения находится в одной подсети с ним, а значит пакет можно отправлять непосредственно получателю.

ICMP вложение накрывается IP заголовком и передается на канальный уровень.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Действия PC3 на канальном уровне

  1. PC3 установил что IP-адрес назначения юникастовый, а значит надо запустить ARP процесс для того, чтобы узнать канальный адрес соседа.

  2. Мак-адрес соседа находится в ARP-таблице, поэтому в дальнейшем в Ethernet-кадр в поле мак-адрес назначения будет подставлен мак-адрес, соответствующий IP-адресу 192.168.0.2, взятый из ARP-таблицы.

  3. IP-пакет накрывается Ethernet-заголовком, тем самым формируется Ethernet кадр.

На физическом уровне ничего интересного нет, PC3 для отправки выбрал интерфейс Fa0, превратил кадр в битовую последовательность, которая и была направлена в сеть. В итоге ответ PC3 дойдет до PC2 и когда PC2 получит этот ответ, произойдет изменение в командной строке, появится диагностическая информация о том, что узел PC3 доступен.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

ICMP пришел на PC2

Исходный отправитель превратился в получателя. Получение пакета на канальном и физическом уровнях для PC2 ничем не будут отличаться от действий на PC3, поэтому оставляю этот момент без комментариев. Вот что происходит на сетевом уровне уровне:

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Действия PC2 на сетевом уровне при получении пакета

  1. Первым шагом PC3 видит, что пакет принадлежит ему, а значит, надо снять IP заголовок.

  2. Под заголовком обнаруживается ICMP вложение, оно предается ICMP процессу.

  3. ICMP процесс видит, что это Reply на Request, посланный ранее.

  4. Процесс Ping получает от ICMP сообщение Echo Reply, в этом сообщение содержится диагностическая информация, которая затем отображается на экране командной строки.

По умолчанию в CPT хосты отсылают четыре пакета, чтобы не ждать симуляцию, я перевел лабораторную работу в режим реального времени и дождался когда команда завершит свою работу.

#002 Виды устройств в IP (хосты и роутеры). Часть 1 IP, Протокол, Сети, Компьютерные сети, Данные, Хост, Роутер, Телекоммуникации, Связь, Видео, YouTube, Длиннопост

Пинг завершен

По итогу:

  1. Мы более детально рассмотрели, как взаимодействуют отправители и получатели пакетов без участия транзитных узлов в случае, когда на канальном уровне работает Ethernet.

  2. Поверхностно разобрались с тем, как связаны канальный и сетевой уровни.

  3. И убедились, что функции отправителя и получателя может выполнять одно и то же устройство.

Теперь можно перейти к рассмотрению работы транзитных узлов, поэтому отправляю вас ко второй части.

Видео версия

Вот здесь теоретическая часть:

Вот здесь про прямое взаимодействие хостов:

p.s. Вопросы на подумать к данной теме смотрите в конце поста со второй частью.

Показать полностью 19 2
16

#001 Некоторые важные особенности протокола IP

Господа, дамы, здравствуйте!

В этом посте предлагаю разобраться, что это за протокол такой IP кому он нужен(всем) и для чего используется(чтобы всё в интернете работало). По сути это небольшой обзор на IP, предваряющий серию постов. Понимаю, что здесь будут очевидные вещи, но начать мне хотелось бы с самых простых и очевидных вещей. Критика, дополнения и замечания по содержанию только приветствуется.

Протокол IP

IP (Internet Protocol) – это протокол, который работает на сетевом уровне модели стека TCP/IP. Если бы IP входил в модель OSI, то там бы он был на третьем уровне. Несмотря на то, что IP расшифровывается как Internet Protocol, работает он не только в сети интернет, не будет ошибкой сказать, что он работает практически в любой компьютерной сети, привести пример где бы он не работал сложно.

В мире телекоммуникаций существует два подхода к организации связи: коммутация каналов и коммутация пакетов, у каждого есть как свои плюсы, так и свои минусы. Протокол IP использует вторую парадигму. На самом деле это не совсем верно: говорить об IP как протоколе с коммутацией пакетов или каналов, поскольку это особенность протоколов канального уровня, поверх которых работает IP, но всё же IP обладает многими свойствами, которыми обладают протоколы с коммутацией пакетов.

В данном протоколе есть несколько важных свойств:

  1. Пакеты передаются по сети независимо друг от друга. Это означает, что путь прохождения первого пакета никак не повлияет на то, как пойдет второй пакет.

  2. Из пункта А в пункт Б первый и второй пакеты могут идти разными маршрутами, при условии что разные маршруты на сети есть.

  3. Маршрут туда, то есть из пункта А в пункт Б может не совпадать с маршрутом обратно.

Еще протоколы делятся по надежности. Есть протоколы, которые гарантируют доставку пакетов, а есть, которые ее не гарантируют. IP ничего не гарантирует и на самом деле это его преимущество.

Словосочетание "не гарантирует доставку пакетов" немного раскрою:

  • пакеты на сети теряются, потерянный пакет IP не будет пытаться восстановить или повторно переслать, если IP-пакет потерялся, то он потерялся, средств по восстановлению пакетов или повторной их пересылки в IP нет;

  • пакеты в ходе передачи могут быть изменены, иногда это делается намеренно, например, изменяется значение поля TTL, а иногда нет, например, пакет искажается из-за того что физический канал не надежный, вообще, IP никак не контролирует пользовательские данные, в заголовке пакета есть контрольная сумма, но она считается только для заголовка;

  • пакеты, которые были отправлены позже, могут прийти в пункт своего назначения раньше;

  • пакеты дублируются, IP это не контролирует, иногда это бывает полезно, иногда не очень.

Есть еще и третий способ разделить протоколы на группы: бывают протоколы, которым необходимо установить соединение перед началом передачи данных, в ходе установления соединения участники согласовывают параметры передачи. А бывают протоколы, которые не требуют установление соединения и начинают сразу слать пакеты адресатам. IP относится ко вторым.

История протокола IP

Сперва я действительно хотел рассказать о том, как IP дошел до жизни такой, но потом понял, что история его развития с практической точки зрения ничем нам не поможет, а интересно рассказать историю развития технологии или протокола - это отдельная большая работа, не укладывающаяся в данный формат, поэтому не будем сильно задерживаться.

Ограничусь лишь сегодняшним днем. У нас существует две актуальные версии протокола IP: IPv4 и IPv6. Работают они практически одинаково, на начало 2024 года могу сказать, что IPv4 будет еще долго актуальным, изучение немного проще начать с него, поэтому здесь и далее, если я пишу IP, то имею ввиду именно IPv4.

Ресурсы для изучения IP и вообще сетевых технологий

В завершении давайте обсудим ресурсы, которые помогут в изучении сетевых технологий. Оговорюсь, что конкретных ссылок или наименований давать не буду. Сами источники я бы разделил на два списка. В первый вошли те, которые не следует читать новичку, это различные серьезные книги по компьютерным сетям, например, "Компьютерные сети" от Олиферов или Таненбаума. Книги обозначенных авторов не плохие и не устаревшие, начинающему инженеру они не нужны.

Во второй список вошли:

  1. Документация на оборудование. Там есть примеры: их много, хорошие, разные, они учитывают особенности реализации оборудования.

  2. Пособия по подготовке к экзаменам вендоров, сам вендор не важен: HP, Cisco, Juniper, Huawei или любой другой.

  3. Статьи и публикации в интернете, желательно на открытых для стороннего мнения площадках, например, Хабр.

Если вы хотите более глубоко изучить протокол, то полезно будет обратиться к первоисточнику, то есть к RFC. RFC легко гуглятся, практически по каждой теме, о которой мы будем говорить в дальнейшем, есть свой RFC, в котором вопрос будет раскрыт и шире, и глубже.

Если у вас возникли какие-то трудности или вы чего-то не понимаете, то в первую очередь обращайтесь к RFC, там вы, скорее всего, найдете верный ответ. Вернее не так, в первую очередь нужно обращаться к документации оборудования от производителя, во вторую очередь к RFC.

Вот некоторые RFC для IP:

  • RFC 791 это спецификация протокола IP;

  • RFC 5737 содержит в себе перечень блоков IP-адресов, зарезервированных документации;

  • RFC 919 это правила распространения широковещательного трафика;

  • RFC 1918 описывает блоки IP-адресов, которые можно использовать в частных сетях;

  • RFC 1122 описывает требования к программной реализации хостов на сетевом, канальном и транспортном уровнях.

На самом деле RFC огромное множество, есть и шуточные, которое, например, описывает работу протокола IP поверх голубиной почты RFC 2549.

Для тех, кому нравится больше смотреть:

https://www.youtube.com/watch?v=IzPgASpMG0Q&t=

p.s.

в завершении следующих постов буду стараться придумать 2-3 вопроса.

p.p.s.

Следующий пост о видах IP устройств и о том, чего они там такого делают. Готовлю, кнопка принтскрина потихоньку стерается :)

#001 Некоторые важные особенности протокола IP IP, Протокол, Компьютерные сети, Видео, YouTube, Длиннопост

Фрагмент следующего поста

Показать полностью 1 1
Отличная работа, все прочитано!