Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Погрузитесь в увлекательный мир, где вас ждут уникальные герои, строительство собственной цитадели и захватывающие бои в формате «три в ряд»!  Откройте новые горизонты в жанре РПГ.

Время Героев: Три в ряд RPG

Три в ряд, Мидкорные, Приключения

Играть

Топ прошлой недели

  • Animalrescueed Animalrescueed 43 поста
  • XCVmind XCVmind 7 постов
  • tablepedia tablepedia 43 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
12
DELETED
Серия IP протокол (IPv4)

#005 Time to Live или как IP защищается от петель маршрутизации⁠⁠

1 год назад

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

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

Зачем нужно поле TTL?

Назначение поля TTL довольно простое: не допустить бесконечного хождения пакета по сети в том случае, если произошла петля маршрутизации. Особенность этого поля используется такими утилитами как tracert, mtr, winmtr. Рассматривать назначение этого поля будем на вот такой схеме:

Схема для изучения работы TTL

Схема для изучения работы TTL

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

  • если значение равно единице, это значит, что пакет уже не будет передан следующему узлу: если пакет со значением 1 пришел на узел получатель, то он будет обработан и передан вышестоящему процессу, если же узел не конечный, то такой пакет будет уничтожен;

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

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

Ничего сложного.

Топология сети и некоторые пояснения

Немного поясню по топологии сети: роутеры это образы Cisco 3725, хосты это образы Debian 10. На схеме показаны сети, которые настроены на линках между роутерами, для удобства нумерация была организована по следующему принципу:

1. Первый октет всегда равен десяти.

2. Второй октет это всегда меньший номер роутера.

3. Третий октет номер всегда номер большего роутера.

4. Четвертый октет равен номеру роутера.

5. Маска всегда /24.

Если бы у нас был линк R1 <-> R5. То на интерфейсе R1 был бы назначен адрес 10.1.5.1/24, на R5 такой: 10.1.5.5/24. Сети хостов назначил случайно и никакой системы в нумерации там нет.

Как работает Time to Live

Работает TTL на самом деле очень просто. Обратимся к нашей схеме. Узел Host_1 отправляет пакеты узлу Host_2, если значение TTL будет равно 4, то пакет будет уничтожен роутером R5, но если значение будет равно 5 или больше, то Host_2 получит пакет.

В этом легко убедиться, сделаем ping с Host_1. Для начала зададим TTL=4.

user@debian:~$ ping -t 4 192.168.2.12

PING 192.168.2.12 (192.168.2.12) 56(84) bytes of data.

From 10.4.5.5 icmp_seq=1 Time to live exceeded

From 10.4.5.5 icmp_seq=2 Time to live exceeded

From 10.4.5.5 icmp_seq=3 Time to live exceeded

From 10.4.5.5 icmp_seq=4 Time to live exceeded

From 10.4.5.5 icmp_seq=5 Time to live exceeded

From 10.4.5.5 icmp_seq=6 Time to live exceeded

^C

--- 192.168.2.12 ping statistics ---

6 packets transmitted, 0 received, +6 errors, 100% packet loss, time 13ms

Параметр t команды ping задает значение TTL. Трассировка подтверждает результаты пинга:

user@debian:~$ traceroute -m 4 192.168.2.12

traceroute to 192.168.2.12 (192.168.2.12), 4 hops max, 60 byte packets

1 192.168.1.155 (192.168.1.155) 1.836 ms 12.191 ms 22.688 ms

2 10.1.3.3 (10.1.3.3) 33.218 ms 43.708 ms 54.255 ms

3 10.3.4.4 (10.3.4.4) 64.698 ms 75.194 ms 85.180 ms

4 10.4.5.5 (10.4.5.5) 95.679 ms 106.314 ms 116.695 ms

Параметр m команде traceroute задает значение TTL, видим, что было пройдено четыре транзитных узла и пакет был уничтожен на четвертом (пятым узлом должен был быть Host_2). А теперь сделаем то же самое для TTL=5.

user@debian:~$ traceroute -m 5 192.168.2.12

traceroute to 192.168.2.12 (192.168.2.12), 5 hops max, 60 byte packets

1 192.168.1.155 (192.168.1.155) 4.686 ms 15.048 ms 25.488 ms

2 10.1.3.3 (10.1.3.3) 35.552 ms 46.068 ms 56.597 ms

3 10.3.4.4 (10.3.4.4) 67.063 ms 77.378 ms 87.591 ms

4 10.4.5.5 (10.4.5.5) 98.109 ms 108.930 ms 119.038 ms

5 192.168.2.12 (192.168.2.12) 129.545 ms 140.033 ms 150.561 ms

user@debian:~$

Успешный успех. Если мы попытаемся пропинговать адрес 192.168.2.17 с TTL=4, пинг у нас пройдет, т.к. этот адрес настроен на R5.

user@debian:~$ traceroute -t 4 192.168.2.17

traceroute to 192.168.2.17 (192.168.2.17), 30 hops max, 60 byte packets

1 192.168.1.155 (192.168.1.155) 3.694 ms 14.099 ms 24.630 ms

2 10.1.3.3 (10.1.3.3) 35.064 ms 45.116 ms 55.612 ms

3 10.3.4.4 (10.3.4.4) 66.078 ms 76.583 ms 87.074 ms

4 10.4.5.5 (10.4.5.5) 97.065 ms * *

user@debian:~$ ping -t 4 192.168.2.17

PING 192.168.2.17 (192.168.2.17) 56(84) bytes of data.

64 bytes from 192.168.2.17: icmp_seq=1 ttl=252 time=33.3 ms

64 bytes from 192.168.2.17: icmp_seq=2 ttl=252 time=34.0 ms

64 bytes from 192.168.2.17: icmp_seq=3 ttl=252 time=36.6 ms

64 bytes from 192.168.2.17: icmp_seq=4 ttl=252 time=49.1 ms

64 bytes from 192.168.2.17: icmp_seq=5 ttl=252 time=40.0 ms

^C

--- 192.168.2.17 ping statistics ---

5 packets transmitted, 5 received, 0% packet loss, time 10ms

rtt min/avg/max/mdev = 33.285/38.610/49.147/5.771 ms

user@debian:~$

Вопрос: почему четвертым хопом мы видим 10.4.5.5, а не 192.168.2.17? Ведь трассировку мы делаем до 192 адреса.

Создадим на сети петлю маршрутизации

Во всех этих примерах на сети не было петли маршрутизации, давайте ее создадим и посмотрим что будет. Петля маршрутизации была создана на линке R3 <-> R4, для этого со стороны R4 был добавлен вот такой статический маршрут в сторону R3:

ip route 192.168.2.12 255.255.255.255 10.3.4.3

Теперь пинг с первого хоста до второго не проходит:

user@debian:~$ ping 192.168.2.12

PING 192.168.2.12 (192.168.2.12) 56(84) bytes of data.

From 10.3.4.3 icmp_seq=1 Time to live exceeded

From 10.3.4.3 icmp_seq=2 Time to live exceeded

From 10.3.4.3 icmp_seq=3 Time to live exceeded

From 10.3.4.3 icmp_seq=4 Time to live exceeded

From 10.3.4.3 icmp_seq=5 Time to live exceeded

From 10.3.4.3 icmp_seq=6 Time to live exceeded

^C

--- 192.168.2.12 ping statistics ---

6 packets transmitted, 0 received, +6 errors, 100% packet loss, time 12ms

user@debian:~$

Вот трассировка, значение TTL по умолчанию для команды traceroute равно 30, так говорит man, петля подтверждает сведения, полученные из man:

user@debian:~$ traceroute 192.168.2.12

traceroute to 192.168.2.12 (192.168.2.12), 30 hops max, 60 byte packets

1 192.168.1.155 (192.168.1.155) 7.676 ms 17.985 ms 28.523 ms

2 10.1.3.3 (10.1.3.3) 38.995 ms 49.491 ms 59.979 ms

3 10.3.4.4 (10.3.4.4) 70.815 ms 80.969 ms 91.496 ms

4 10.3.4.3 (10.3.4.3) 101.949 ms 112.461 ms 122.974 ms

5 10.3.4.4 (10.3.4.4) 143.964 ms 154.418 ms 164.945 ms

6 10.3.4.3 (10.3.4.3) 175.578 ms 185.533 ms 142.816 ms

7 10.3.4.4 (10.3.4.4) 247.771 ms 258.300 ms 268.446 ms

8 10.3.4.3 (10.3.4.3) 278.805 ms 312.816 ms 323.311 ms

9 10.3.4.4 (10.3.4.4) 479.835 ms 626.355 ms 636.819 ms

10 10.3.4.3 (10.3.4.3) 556.593 ms 588.117 ms 598.524 ms

11 10.3.4.4 (10.3.4.4) 755.650 ms 797.647 ms 839.148 ms

12 10.3.4.3 (10.3.4.3) 849.913 ms 804.939 ms 805.743 ms

13 10.3.4.4 (10.3.4.4) 973.320 ms 1015.224 ms 962.095 ms

14 10.3.4.3 (10.3.4.3) 993.059 ms 952.398 ms 971.923 ms

15 10.3.4.4 (10.3.4.4) 1170.728 ms 1109.510 ms 1151.391 ms

16 10.3.4.3 (10.3.4.3) 1161.844 ms 1097.333 ms 1170.133 ms

17 10.3.4.4 (10.3.4.4) 1304.082 ms 1313.947 ms 1334.797 ms

18 10.3.4.3 (10.3.4.3) 1346.658 ms 1300.740 ms 1321.627 ms

19 10.3.4.4 (10.3.4.4) 1530.698 ms 1544.993 ms 1515.161 ms

20 10.3.4.3 (10.3.4.3) 1536.287 ms 1471.464 ms 1502.896 ms

21 10.3.4.4 (10.3.4.4) 1711.457 ms 1689.732 ms 1724.093 ms

22 10.3.4.3 (10.3.4.3) 1661.657 ms 1682.391 ms 1672.738 ms

23 10.3.4.4 (10.3.4.4) 1829.791 ms 1820.323 ms 1810.250 ms

24 10.3.4.3 (10.3.4.3) 1831.317 ms 1841.253 ms 1841.213 ms

25 10.3.4.4 (10.3.4.4) 1976.711 ms 1996.839 ms 2007.309 ms

26 10.3.4.3 (10.3.4.3) 1986.232 ms 1947.299 ms 1957.688 ms

27 10.3.4.4 (10.3.4.4) 2090.287 ms 2083.092 ms 2006.741 ms

28 10.3.4.3 (10.3.4.3) 2006.771 ms 1904.826 ms 1890.734 ms

29 10.3.4.4 (10.3.4.4) 1889.694 ms 1813.301 ms 1670.634 ms

30 10.3.4.3 (10.3.4.3) 1628.703 ms 1389.763 ms 1252.525 ms

user@debian:~$

В данном случае петля маршрутизации видна в трассировке, и по адресам мы можем сказать, что проблема на линке R3<->R4. Но при помощи трассировки не всегда можно локализовать проблему.

В дампе Wireshark петля будет выглядеть так:

Петля маршрутизации в дампе Wireshark

Петля маршрутизации в дампе Wireshark

Для того, чтобы получить этот дамп, выполнялся вот такой пинг:

user@debian:~$ ping 192.168.2.12 -c 4 -t 12

PING 192.168.2.12 (192.168.2.12) 56(84) bytes of data.

From 10.3.4.3 icmp_seq=1 Time to live exceeded

From 10.3.4.3 icmp_seq=2 Time to live exceeded

From 10.3.4.3 icmp_seq=3 Time to live exceeded

From 10.3.4.3 icmp_seq=4 Time to live exceeded

--- 192.168.2.12 ping statistics ---

4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 9ms

user@debian:~$

В сторону Host_2 было направлено четыре пакета с TTL = 12. В дампе нас интересуют поля Source, Destination и TTL, дамп снимался с интерфейса R4 в сторону R3, по нему видно что на R4 пакет приходит с TTL равным 10, далее R4 этот пакет отправляет в сторону R3, а тот в свою очередь шлет пакет в R4 и так происходит до тех пор, пока TTL не станет равным 1. Если бы не было TTL, пакет на этом линке мог бы ходить до бесконечности.

Напоследок еще один вопрос, если я изменяю статический маршрут на R4, с помощью которого организуется петля, на такой (next-hop меняется на имя интерфейса в сторону R3):

ip route 192.168.2.12 255.255.255.255 fa0/0

Трассировка с первого хоста до второго становится такой:

user@debian:~$ traceroute 192.168.2.12

traceroute to 192.168.2.12 (192.168.2.12), 30 hops max, 60 byte packets

1 192.168.1.155 (192.168.1.155) 15.593 ms 26.071 ms 36.524 ms

2 10.1.3.3 (10.1.3.3) 47.051 ms 57.558 ms 78.591 ms

3 10.3.4.4 (10.3.4.4) 68.039 ms 89.026 ms 99.513 ms

4 * * *

5 * * *

6 * * *

7 * * *

8 * * *

9 * * *

10 * * *

11 * * *

12 * * *

13 * * *

14 * * *

15 * * *

16 * * *

17 * * *

18 * * *

19 * * *

20 * * *

21 * * *

22 * * *

23 * * *

24 * * *

25 * * *

26 * * *

27 * * *

28 * * *

29 * * *

30 * * *

user@debian:~$

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

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

Видео версия

Для тех, кому проще смотреть, чем читать, есть видео версия.

Показать полностью 2 1
[моё] YouTube IP Протокол Сети Компьютерные сети Связь Телеком Данные Системное администрирование IT Видео Интернет Сисадмин Инженер Длиннопост
1
16
DELETED
Серия IP протокол (IPv4)

#004 IP-пакет и структура его заголовка⁠⁠

1 год назад

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

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

Напомню, что ранее мы разобрались с IP-адресами и, как мне кажется, разобрались. Теперь нужно поговорить о единицах измерения: массу мы измеряем в килограммах, длину в метрах, давления в паскалях, а вот фрагменты данных на сетевом уровне мы измеряем в пакетах, в общем случае фрагмент данных, передаваемый тем или иным протоколом, называется Protocol Data Unit или PDU, пакет это PDU в IP, пакет и будем разбирать.

Общая структура IP-пакета

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

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

Ниже три структуры IP-пакета: первая устаревшая, вторая устаревшая, но переведена на рус-яз с ин-яза, третья актуальная.

Устаревшая структура IP-пакета

Устаревшая структура IP-пакета

Актуальная структура заголовка в IP-пакете

Актуальная структура заголовка в IP-пакете

Общего у них то, что пакет делится на ячейки, каждая ячейка имеет свой размер и свое имя, такая ячейка называется полем. Разница между представленными выше структурами в том, что в первых двух случаях есть поля Type of Service, но на самом деле это поле сейчас заменено на DSCP и ECN. Если говорить совсем просто, то поле ToS использовалось для того, чтобы узел мог отличить важный пакет от неважного и в первую очередь обрабатывать важные пакеты, а неважные уже по возможности. О DSCP и ECN поговорим ниже.

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

Такой строгий подход к структуре заголовка не случаен, для себя я выделил две основные причины этого, которые в общем-то взаимосвязаны:

  1. Сам IP размер пакетов считает не в битах или байтах, а в словах.

  2. Процессоры сетевых узлов обрабатывают не байты или биты, а слова, если длина слова IP будет равна или кратна машинному слову процессора, то его будет проще обработать.

Кстати говоря, мы уже знаем размер типичного заголовка, он составляет 20 байт, т.к. у нас пять слов (если не считать поля с опциями) и каждое слово 4 байта.

Поля IP заголовка

Теперь разберемся с каждым полем в отдельности. Начнем с версии и размера заголовка.

Версия (Version)

Это версия протокола IP, под него выделено четыре бита, для протокола IPv4 здесь всегда неизменное значение – 4. Хочу заметить, что в IPv4 четверка не связана с количество октетов в IP-адресе, просто такое совпадение.

Размер заголовка (Internet Header Length)

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

DSCP и ECN

Под поле DSCP (Differentiated Services Code Point), выделено 6 бит, используется для разделения трафика на классы обслуживания.

Поле ECN (Explicit Congestion Notification) или указатель перегрузки имеет размер два бита. При помощи этого поля узлы могут сигнализировать о перегрузке. Не каждое устройство с этим полем умеет работать, сигнализация через ECN будет работать только в том случае, если узлы сети умеют его обрабатывать.

Размер пакета (Total Length)

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

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

Идентификатор (Identification)

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

Флаги (Flags)

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

  • нулевой бит зарезервирован и должен быть всегда равен нулю;

  • если значение первого бита ноль, то допускается фрагментация пакетов, если единица (бит DF или Do not Fragment), то фрагментация запрещена и, если размер пакета при запрещенной фрагментации будет больше, чем разрешенный на канале, то такой пакет в канал отправлен не будет;

  • второй бит служит для того, чтобы конечные узлы понимали, где начинается последовательность фрагментированных пакетов, а где она заканчивается, если значение этого бита равно единице (MF More Fragments), то узел понимает, что этот пакет не последний и нужно ждать еще фрагментированные пакеты, чтобы собрать изначально разделенный пакет.

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

Смещение фрагмента (Fragment Offset)

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

Время жизни (Time to Live, TTL)

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

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

Протокол (Protocol)

Под поле выделено 8 бит, поле использует узел получатель, чтобы понять какому процессу передать данные, когда IP-заголовок будет снят. В данное поле записывается код протокола, который был помещен отправителем в IP-пакет, коды регламентированы и их можно найти на сайте IANA.

Контрольная сумма заголовка (Header Checksum)

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

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

IP-адрес источника

Поле IP-адрес источника имеет размер 32 бита и не изменяется при передаче пакета по сети (если не рассматриваем ситуации с NAT), это поле важно для узла получателя, чтобы знать кому отвечать.

IP-адрес назначения

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

Поле данных в IP-пакете

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

Поле опций

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

Структура IP-пакета с опциями Record Route

Структура IP-пакета с опциями Record Route

Если кому интересно, то выше показана структура пакета с опциями Record Route.

Вопросы для ваших ответов

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

Видео версия

А вот видео версия у нас есть в наличии, кому больше нравится смотреть - смотрите.

Показать полностью 3 1
[моё] YouTube IP Протокол Сети Компьютерные сети Связь Телеком Данные Системное администрирование IT Видео Интернет Сисадмин Инженер Длиннопост
3
1626
zelenchuk83
Лига программистов

Еще один курс по компьютерным сетям⁠⁠

1 год назад

Привет всем!

Меня зовут Илья Зеленчук, я веду курсы по компьютерным сетям на мат-мехе СПбГУ. Я понимаю, что онлайн курсов и уроков по компьютерным сетям очень много в сети и их не сложно найти. Что же нового решил сделать я?

Для лучшего обучения компьютерным сетям, я со студентами разрабатываю веб-эмулятор Miminet (https://miminet.ru/). Сервис, где можно нарисовать компьютерную сеть, задать её конфигурацию и посмотреть, как она будет работать.

На базе этого эмулятора я сделал курс и выложил его на Stepik - https://stepik.org/208904

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

Курс и эмулятор бесплатные, без рекламы и прочего.

[моё] Программирование Компьютерные сети Онлайн-курсы Текст
167
16
DELETED

#003 Про IP-адреса и их свойства. Часть 2: пример настройки IP-адресов на роутерах Cisco и Huawei⁠⁠

1 год назад

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

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

Настройка IP-адресов на роутере Cisco

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

Схема для настройки IP-адресов

Схема для настройки IP-адресов

Лаба собрана в EVE-NG, если это важно. Начнем с настроек R1, на этом роутере нет конфига, поэтому при запуске IOS предлагает нам выполнить настройки в диалоговом режиме, мы естественно отказываемся:

--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: Installed image archive

n

Press RETURN to get started!

*Mar 1 00:00:01.799: %LINEPROTO-5-UPDOWN: Line protocol on Interface VoIP-Null0, changed state to up

*Mar 1 00:00:02.123: %LINEPROTO-5-UPDOWN: Line protocol on Interface IPv6-mpls, changed state to up

*Mar 1 00:00:02.903: %LINK-3-UPDOWN: Interface FastEthernet1/0, changed state to up

*Mar 1 00:00:02.907: %LINK-3-UPDOWN: Interface FastEthernet2/0, changed state to up

*Mar 1 00:00:03.903: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0, changed state to up

*Mar 1 00:00:03.907: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet2/0, changed state to up

*Mar 1 00:08:01.991: %SYS-5-RESTART: System restarted --

Cisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(15)T14, RELEASE SOFTWARE (fc2)

Technical Support: http://www.cisco.com/techsupport

Copyright (c) 1986-2010 by Cisco Systems, Inc.

Compiled Tue 17-Aug-10 12:08 by prod_rel_team

*Mar 1 00:08:01.995: %SNMP-5-COLDSTART: SNMP agent on host Router is undergoing a cold start

*Mar 1 00:08:01.999: %PCMCIAFS-5-DIBERR: PCMCIA disk 1 is formatted from a different router or PC. A format in this router is required before an image can be booted from this device

*Mar 1 00:08:02.015: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF

*Mar 1 00:08:02.015: %CRYPTO-6-GDOI_ON_OFF: GDOI is OFF

*Mar 1 00:08:02.051: %LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down

*Mar 1 00:08:02.175: %LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down

*Mar 1 00:08:03.051: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down

*Mar 1 00:08:03.175: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down

*Mar 1 00:08:03.771: %LINK-5-CHANGED: Interface FastEthernet1/0, changed state to administratively down

*Mar 1 00:08:03.775: %LINK-5-CHANGED: Interface FastEthernet2/0, changed state to administratively down

*Mar 1 00:08:04.771: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0, changed state to down

*Mar 1 00:08:04.775: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet2/0, changed state to down

Router>

После отказа роутер выполнил проверку своих интерфейсов и сообщил их статус, а также у нас появилось приглашение ко вводу Router>. Если есть приглашение, значит, мы можем вводить какие-то команды, если приглашение ко вводу заканчивается на знак больше, то значит, мы в EXEC режиме, в этом режиме нам доступно очень ограниченное число команд. Чтобы их все посмотреть, нужно написать знак вопроса и нажать Enter:

Router>?

Exec commands:

access-enable Create a temporary Access-List entry

access-profile Apply user-profile to interface

clear Reset functions

connect Open a terminal connection

credential load the credential info from file system

crypto Encryption related commands.

disable Turn off privileged commands

disconnect Disconnect an existing network connection

enable Turn on privileged commands

exit Exit from the EXEC

help Description of the interactive help system

lat Open a lat connection

lock Lock the terminal

login Log in as a particular user

logout Exit from the EXEC

modemui Start a modem-like user interface

mrinfo Request neighbor and version information from a

multicast router

mstat Show statistics after multiple multicast traceroutes

mtrace Trace reverse multicast path from destination to source

name-connection Name an existing network connection

pad Open a X.29 PAD connection

ping Send echo messages

ppp Start IETF Point-to-Point Protocol (PPP)

radius radius exec commands

release Release a resource

renew Renew a resource

resume Resume an active network connection

rlogin Open an rlogin connection

set Set system parameter (not config)

show Show running system information

slip Start Serial-line IP (SLIP)

ssh Open a secure shell client connection

systat Display information about terminal lines

tclquit Quit Tool Command Language shell

telnet Open a telnet connection

terminal Set terminal line parameters

tn3270 Open a tn3270 connection

traceroute Trace route to destination

tunnel Open a tunnel connection

udptn Open an udptn connection

vmi-dump Dump VMI debug info test command

vmi-neighbor-create Create VMI neighbor test command

vmi-neighbor-kill Create VMI neighbor test command

webvpn WebVPN exec command

where List active connections

x28 Become an X.28 PAD

x3 Set X.3 parameters on PAD

Router>

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

Router>enable

Router#

Router#

Router#configure terminal

Enter configuration commands, one per line. End with CNTL/Z.

Router(config)#

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

Команда configure terminal переводит роутер в режим глобальной конфигурации, приглашение ко вводу снова изменилось. Сначала дадим роутеру имя, чтобы понимать, с каким именно узлом мы работаем (приглашение ко вводу изменится).

Router(config)#hostname R1

R1(config)#

У промышленных роутеров, как правило, конфигурации разделены на секции: есть глобальная секция, мы сейчас в ней, есть секция, в которой осуществляются настройки протоколов маршрутизации, например, OSPF или BGP, есть секции, в которых хранятся настройки различных префикс-листов и правил доступа, а есть секция настроек интерфейсов, она нас сейчас и интересует. Перейдем в режим конфигурации интерфейса, который направлен в сторону R2, приглашение ко вводу снова изменится.

R1(config)#interface fastEthernet 0/1

R1(config-if)#

Сначала подпишем интерфейс.

R1(config-if)#description to_R2R1(config-if)#description to_R2

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

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

R1(config-if)#ip address 10.0.0.1 255.255.255.0

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

R1(config-if)#no shutdown

*Mar 1 00:34:51.475: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up

*Mar 1 00:34:52.475: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up

Роутер нам сообщит, что интерфейс включился. Команда shutdown выключает интерфейс, ключевое слово no инвертирует действие команды, например, удалить IP-адрес можно так:

no ip address 10.0.0.1 255.255.255.0

Посмотреть текущую настройку интерфейса fa0/1 можно так:

R1(config-if)#do sh run int fa0/1

Building configuration...

Current configuration : 112 bytes

!

interface FastEthernet0/1

description to_R2

ip address 10.0.0.1 255.255.255.0

duplex auto

speed auto

end

R1(config-if)#

Во-первых, можно использовать сокращения: fa=FastEthernet, sh=show, run=running-config, int=interface. Во-вторых, можно использовать кнопку Tab, если вы не помните, как правильно печатается команда, сработает автодополнение. И в-третьих, ключевое слово do следует использовать только в режиме конфигурации, без него в режиме конфигурации команды просмотра не работают. В EXEC и привилегированном режимах слово do писать перед show не надо.

Чтобы из режима конфигурации интерфейса выйти в режим глобальной конфигурации, нужно написать exit(поднимает на уровень выше), чтобы сразу перейти в привилегированный режим, нужно написать end(всегда выводит полностью из режима конфигурации, вместо end можно использовать сочетание клавиш ctrl+z).

На Fa0/1 настроим вторичный адрес:

R1(config-if)#ip address 10.0.0.10 255.255.255.0 secondary

О том, что он вторичный говорит ключевое слово secondary, вторичный адрес из той же сети, что и основной. Перейдем на интерфейс Fa0/0 и попробуем на нем настроить IP-адрес из этой же подсети:

R1(config-if)#int fa0/0

R1(config-if)#description to_R3

R1(config-if)#no shutdown

R1(config-if)#ip address 10.0.0.20 255.255.255.0

% 10.0.0.0 overlaps with FastEthernet0/1

Роутер нас предупреждает, что на Fa0/0 мы назначили адрес из подсети, которая настроена на Fa0/1. Если сперва назначить адрес, а потом попытаться включить интерфейс, то адрес будет назначен, но IOS не даст такой интерфейс включить. Вот такое предупреждение будет, если попытаться включить интерфейс с пересечением:

R1(config-if)#no sh

% 20.0.0.0 overlaps with FastEthernet0/0

FastEthernet1/0: incorrect IP address assignment

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

Давайте на Fa0/0 настроим три адреса со схемы, вот его конфигурация:

R1#sh run int fa0/0

Building configuration...

Current configuration : 203 bytes

!

interface FastEthernet0/0

description to_R3

ip address 20.0.0.10 255.255.255.0 secondary

ip address 20.0.1.1 255.255.255.0 secondary

ip address 20.0.0.1 255.255.255.0

duplex auto

speed auto

end

Основной адрес и один из вторичных здесь из одной подсети второй вторичный адрес из другой подсети. Вот так выглядит итоговая конфигурация Fa0/1:

R1#sh run int fa0/1

Building configuration...

Current configuration : 203 bytes

!

interface FastEthernet0/1

description to_R2

ip address 10.0.0.10 255.255.255.0 secondary

ip address 10.0.1.1 255.255.255.0 secondary

ip address 10.0.0.1 255.255.255.0

duplex auto

speed auto

end

R1#

Некоторые полезные диагностические команды для роутеров Cisco

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

Посмотреть какие основные IP-адреса настроены на интерфейсах можно такой командной (br=brief).

R1#sh ip int br

Interface IP-Address OK? Method Status Protocol

FastEthernet0/0 20.0.0.1 YES manual up up

FastEthernet0/1 10.0.0.1 YES manual up up

FastEthernet1/0 unassigned YES unset administratively down down

FastEthernet2/0 unassigned YES unset administratively down down

R1#

Можно посмотреть детальную информацию по IP параметрам на интерфейсе, в ней будут видны вторичные адреса:

FastEthernet0/0 is up, line protocol is up

Internet address is 20.0.0.1/24

Broadcast address is 255.255.255.255

Address determined by setup command

MTU is 1500 bytes

Helper address is not set

Directed broadcast forwarding is disabled

Secondary address 20.0.0.10/24

Secondary address 20.0.1.1/24

Outgoing access list is not set

Inbound access list is not set

Proxy ARP is enabled

Local Proxy ARP is disabled

Security level is default

Split horizon is enabled

ICMP redirects are always sent

ICMP unreachables are always sent

ICMP mask replies are never sent

IP fast switching is enabled

IP fast switching on the same interface is disabled

IP Flow switching is disabled

IP CEF switching is enabled

IP CEF Fast switching turbo vector

IP multicast fast switching is enabled

IP multicast distributed fast switching is disabled

IP route-cache flags are Fast, CEF

Router Discovery is disabled

IP output packet accounting is disabled

IP access violation accounting is disabled

TCP/IP header compression is disabled

RTP/IP header compression is disabled

Policy routing is disabled

Network address translation is disabled

BGP Policy Mapping is disabled

WCCP Redirect outbound is disabled

WCCP Redirect inbound is disabled

WCCP Redirect exclude is disabled

R1#

Посмотреть как интерфейсы подписаны можно так (des=description).

R1#sh int des

Interface Status Protocol Description

Fa0/0 up up to_R3

Fa0/1 up up to_R2

Fa1/0 admin down down

Fa2/0 admin down down

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

R1#sh ip arp

Protocol Address Age (min) Hardware Addr Type Interface

Internet 10.0.0.1 - c201.14a3.0001 ARPA FastEthernet0/1

Internet 10.0.0.10 - c201.14a3.0001 ARPA FastEthernet0/1

Internet 10.0.1.1 - c201.14a3.0001 ARPA FastEthernet0/1

Internet 20.0.0.1 - c201.14a3.0000 ARPA FastEthernet0/0

Internet 20.0.0.10 - c201.14a3.0000 ARPA FastEthernet0/0

Internet 20.0.1.1 - c201.14a3.0000 ARPA FastEthernet0/0

Посмотреть мак-адрес интерфейса можно вот такой командной, он будет во второй строке (также здесь есть другая мнформация о канальном уровне интерфейса).

R1# sh int fa0/1

FastEthernet0/1 is up, line protocol is up

Hardware is Gt96k FE, address is c201.14a3.0001 (bia c201.14a3.0001)

Description: to_R2

Internet address is 10.0.0.1/24

MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation ARPA, loopback not set

Keepalive set (10 sec)

Half-duplex, 10Mb/s, 100BaseTX/FX

ARP type: ARPA, ARP Timeout 04:00:00

Last input never, output 00:00:07, output hang never

Last clearing of "show interface" counters never

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0

Queueing strategy: fifo

Output queue: 0/40 (size/max)

5 minute input rate 0 bits/sec, 0 packets/sec

5 minute output rate 0 bits/sec, 0 packets/sec

0 packets input, 0 bytes

Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 watchdog

0 input packets with dribble condition detected

283 packets output, 29795 bytes, 0 underruns

0 output errors, 0 collisions, 1 interface resets

0 unknown protocol drops

0 babbles, 0 late collision, 0 deferred

0 lost carrier, 0 no carrier

0 output buffer failures, 0 output buffers swapped out

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

R1# sh int fa0/0 | in add

Hardware is Gt96k FE, address is c201.14a3.0000 (bia c201.14a3.0000)

Internet address is 20.0.0.1/24

Если кто не знал, вертикальная черта перед in называется пайп, после пайпа возможны такие варианты:

R1# sh int fa0/0 | ?

append Append redirected output to URL (URLs supporting append operation

only)

begin Begin with the line that matches

exclude Exclude lines that match

include Include lines that match

redirect Redirect output to URL

section Filter a section of output

tee Copy output to URL

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

Настройка IP-адресов на роутере Huawei

Huawei нам не предлагает никаких диалогов, просто предлагает нажать любую кнопку, а затем ввести имя пользователя и пароль, в данном случае используется образ виртуального маршрутизатора AR1000V, логин и пароль по-умолчанию super. При первом входе роутер предложил сменить пароль, я согласился:

Press any key to get started

Login authentication

Username:super

Password:

Warning: The password is already expired.

The password needs to be changed. Change now? [Y/N]: y

Please enter old password:

Please enter new password:

Please confirm new password:

The password has been changed successfully.

<Huawei>

<Huawei>

У Huawei режим просмотра не делится на Exec и привилегированный, есть режим, в который вы попадаете сразу после подключения к устройству(не знаю как он по-умному называется и, если честно, не интересно, поэтому его я буду называть просто режимом просмотра) и есть режим system-view, в котором есть возможность конфигурирования, а также расширенные команды для диагностики.

Приглашение ко вводу в режиме просмотра обрамлено знаками меньше/больше. Режим system-view прямыми скобками.

<Huawei>system-view

Enter system view, return user view with Ctrl+Z.

[Huawei]

Tab и различного рода сокращения в Huawei работают тоже. Давайте настроим:

[Huawei]sysname R3

[R3]interface gi0/0/1

[R3-GigabitEthernet0/0/1]description to_R1

[R3-GigabitEthernet0/0/1]undo shutdown

Info: Interface GigabitEthernet0/0/1 is not shutdown.

[R3-GigabitEthernet0/0/1]ip address 20.0.1.3 255.255.255.0

[R3-GigabitEthernet0/0/1]

Jan 11 2024 23:05:01+00:00 R3 %RM/4/ROUTERID_CHANGE(l)[0]:The router ID is 20.0.0.30. (InstanceID=0)

Jan 11 2024 23:05:01+00:00 R3 %IFNET/4/LINK_STATE(l)[1]:The line protocol IP on the interface GigabitEthernet0/0/1 has entered the UP state.

[R3-GigabitEthernet0/0/1]ip address 20.0.0.30 255.255.255.0 sub

[R3-GigabitEthernet0/0/1]ip address 20.0.0.3 255.255.255.0 sub

[R3-GigabitEthernet0/0/1]display current-configuration int gi0/0/1

[V300R019C00SPC300]

#

interface GigabitEthernet0/0/1

description to_R1

ip address 20.0.1.3 255.255.255.0

ip address 20.0.0.30 255.255.255.0 sub

ip address 20.0.0.3 255.255.255.0 sub

#

return

[R3-GigabitEthernet0/0/1]

Командной sysname мы дали имя R3, далее перешли в режим конфигурации интерфейса GigabitEthernet0/0/1, подписали его, затем попробовали включить (у HW логика та же, что и у Cisco, но вместо no используется undo), но роутер сообщил нам, что интерфейс уже включен, видимо, маркетологи Huawei еще не догадались зарабатывать на консольных кабелях, как Cisco.

Далее хочу обратить внимание, что мы настраиваем линк R1 <-> R3, со стороны R1 основной адрес был 10.0.0.1/24, а здесь настаивается 20.0.1.3/24, посмотрим, что из этого выйдет. Когда настраиваются вторичные адреса у Huawei, они отмечаются ключевым словом sub. На этом настройка закончена, в завершении приведена итоговая конфигурация интерфейса. В HW из режима конфигурации не надо использовать никаких ключевых слов для выполнения команд просмотра, вместо show здесь display.

В каком бы контексте конфигурации вы не находились сочетания ctrl+z вас вернет в режим просмотра, а команда quit вернет на уровень выше(аналог exit).

Давайте на роутере Huawei на интерфейсе Gi0/0/0 попробуем настроить адреса из тех же подсетей, что и адреса интерфейса Gi0/0/1.

[R3]interface Gi0/0/0

[R3-GigabitEthernet0/0/0]description to_R2

[R3-GigabitEthernet0/0/0]ip address 20.0.1.4 255.255.255.0

Error: The specified address conflicts with another address.

[R3-GigabitEthernet0/0/0]ip address 20.0.0.4 255.255.255.0

Error: The specified address conflicts with another address.

[R3-GigabitEthernet0/0/0]display current-configuration interface gi0/0/0

[V300R019C00SPC300]

#

interface GigabitEthernet0/0/0

description to_R2

#

return

[R3-GigabitEthernet0/0/0]

Как видим основной адрес задать не удалось, только description. Ок, зададим основной адрес из другой подсети. А вторичные попробуем из тех же, что и на Gi0/0/1.

[R3-GigabitEthernet0/0/0]ip address 30.0.0.3 24

Jan 11 2024 23:23:23+00:00 R3 %IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state.

[R3-GigabitEthernet0/0/0]

[R3-GigabitEthernet0/0/0]ip address 20.0.0.4 255.255.255.0

Error: The specified address conflicts with another address.

[R3-GigabitEthernet0/0/0]ip address 20.0.1.4 255.255.255.0

Error: The specified address conflicts with another address.

[R3-GigabitEthernet0/0/0]display current-configuration interface gi0/0/0

[V300R019C00SPC300]

#

interface GigabitEthernet0/0/0

description to_R2

ip address 30.0.0.3 255.255.255.0

#

return

[R3-GigabitEthernet0/0/0]

Во-первых, маску при назначении можно задавать одним числом, во-вторых, роутер не дал нам настроить вторичные адреса из тех же подсетей, что есть на интерфейсе Gi0/0/1 и это правильно. Вот корректные настройки:

[R3-GigabitEthernet0/0/0]display current-configuration interface gi0/0/0

[V300R019C00SPC300]

#

interface GigabitEthernet0/0/0

description to_R2

ip address 30.0.0.3 255.255.255.0

ip address 30.0.1.3 255.255.255.0 sub

ip address 30.0.0.30 255.255.255.0 sub

#

return

[R3-GigabitEthernet0/0/0]

Команды просмотра для роутеров Huawei

Приведу аналогичные диагностические команды для Huawei. Посмотреть настроенные адреса на интерфейсах можно так:

<R3>display ip int br

*down: administratively down

^down: standby

(l): loopback

(s): spoofing

(E): E-Trunk down

The number of interface that is UP in Physical is 8

The number of interface that is DOWN in Physical is 0

The number of interface that is UP in Protocol is 3

The number of interface that is DOWN in Protocol is 5

Interface IP Address/Mask Physical Protocol

GigabitEthernet0/0/0 30.0.0.3/24 up up

GigabitEthernet0/0/1 20.0.1.3/24 up up

GigabitEthernet0/0/2 unassigned up down

GigabitEthernet0/0/3 unassigned up down

GigabitEthernet0/0/4 unassigned up down

GigabitEthernet0/0/5 unassigned up down

GigabitEthernet0/0/6 unassigned up down

NULL0 unassigned up up(s)

<R3>

Посмотреть параметры IP-протокола на интерфейсе так:

<R3>display ip int gi0/0/1

GigabitEthernet0/0/1 current state : UP

Line protocol current state : UP

The Maximum Transmit Unit : 1500 bytes

input packets : 0, bytes : 0, multicasts : 0

output packets : 0, bytes : 0, multicasts : 0

Directed-broadcast packets:

received packets: 0, sent packets: 0

forwarded packets: 0, dropped packets: 0

ARP packet input number: 0

Request packet: 0

Reply packet: 0

Unknown packet: 0

Internet Address is 20.0.1.3/24

Internet Address is 20.0.0.30/24 Sub

Internet Address is 20.0.0.3/24 Sub

Broadcast address : 20.0.1.255

TTL being 1 packet number: 0

TTL invalid packet number: 0

ICMP packet input number: 0

Echo reply: 0

Unreachable: 0

Source quench: 0

Routing redirect: 0

Echo request: 0

Router advert: 0

Router solicit: 0

Time exceed: 0

IP header bad: 0

Timestamp request: 0

Timestamp reply: 0

Information request: 0

Information reply: 0

Netmask request: 0

Netmask reply: 0

Unknown type: 0

Информацию за канальный протокол интерфейса можно посмотреть так:

<R3>display int gi0/0/0

GigabitEthernet0/0/0 current state : UP

Line protocol current state : UP

Last line protocol up time : 2024-01-11 23:23:23

Description:to_R2

Route Port,The Maximum Transmit Unit is 1500

Internet Address is 30.0.0.3/24

Internet Address is 30.0.1.3/24 Sub

Internet Address is 30.0.0.30/24 Sub

IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 5000-0003-0000

Last physical up time : 2024-01-11 22:42:17

Last physical down time : 2024-01-11 22:42:03

Current system time: 2024-01-11 23:29:00

Last 300 seconds input rate 0 bits/sec, 0 packets/sec

Last 300 seconds output rate 0 bits/sec, 0 packets/sec

Input peak rate 0 bits/sec,Record time: -

Output peak rate 48 bits/sec,Record time: 2024-01-11 23:23:36

Input: 0 packets, 0 bytes

Discard: 0, Total Error: 0

Output: 3 packets, 168 bytes

Discard: 0, Total Error: 0

Input bandwidth utilization threshold : 100.00%

Output bandwidth utilization threshold: 100.00%

Input bandwidth utilization : --

Output bandwidth utilization : --

<R3>

Регулярные выражения здесь тоже есть:

<R3>display int gi0/0/1 | ?

begin Begin with the line that matches

exclude Match the character strings excluding with the regular expression

include Match the character strings including with the regular expression

<R3>display int gi0/0/1 | in addr

IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 5000-0003-0001

<R3>

Посмотреть ARP-таблицу роутера:

<R3>display arp

IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE

VLAN/CEVLAN(SIP/DIP) PVC

------------------------------------------------------------------------------

30.0.0.3 5000-0003-0000 I - GE0/0/0

30.0.1.3 5000-0003-0000 I - GE0/0/0

30.0.0.30 5000-0003-0000 I - GE0/0/0

20.0.1.3 5000-0003-0001 I - GE0/0/1

20.0.0.30 5000-0003-0001 I - GE0/0/1

20.0.0.3 5000-0003-0001 I - GE0/0/1

------------------------------------------------------------------------------

Total:6 Dynamic:0 Static:0 Interface:6

Подписи портов можно посмотреть так:

<R3>display int des

PHY: Physical

*down: administratively down

(l): loopback

(s): spoofing

(b): BFD down

^down: standby

(e): ETHOAM down

(v): VirtualPort

Interface PHY Protocol Description

GE0/0/0 up up to_R2

GE0/0/1 up up to_R1

GE0/0/2 up down HUAWEI, AR Series, GigabitEtherne

t0/0/2 Interface

GE0/0/3 up down HUAWEI, AR Series, GigabitEtherne

t0/0/3 Interface

GE0/0/4 up down HUAWEI, AR Series, GigabitEtherne

t0/0/4 Interface

GE0/0/5 up down HUAWEI, AR Series, GigabitEtherne

t0/0/5 Interface

GE0/0/6(v) up down VirtualPort

NULL0 up up(s) HUAWEI, AR Series, NULL0 Interface

<R3>

Примечание.

Все настройки, которые были сделаны, нужно сохранить в энергонезависимую память, иначе после перезагрузки роутера он вернется к исходной конфигурации, так как сейчас они есть только в оперативной памяти. На Huawei это делается командой save, на Cisco есть два варианта: write или copy running-config startup-config.

Проверяем работу схемы

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

Пингуем адрес 20.0.0.3 со всех трех адресов интерфейса Cisco, адрес источника назначается ключевым словом source.

R1# ping 20.0.0.3 source 20.0.0.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 20.0.0.3, timeout is 2 seconds:

Packet sent with a source address of 20.0.0.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/9/16 ms

R1# ping 20.0.0.3 source 20.0.0.10

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 20.0.0.3, timeout is 2 seconds:

Packet sent with a source address of 20.0.0.10

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/10/20 ms

R1# ping 20.0.0.3 source 20.0.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 20.0.0.3, timeout is 2 seconds:

Packet sent with a source address of 20.0.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 8/10/12 ms

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

Вопросы для ваших ответов

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

Предлагаю разобраться с тремя вопросами:

  1. Какие адреса или адрес будет использовать роутер Cisco если пинговать ответные адреса Huawei без указания source IP?

  2. Какие адреса или адрес будет использовать Huawei, если пинговать ответные адреса Cisco и не указывать source IP?

  3. При текущих конфигурациях будут ли пинговаться адреса, настроенные на линке R2/R3 с роутера R1? Почему?

Видео версия

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

Показать полностью 1 1
[моё] YouTube Системное администрирование IP Протокол Компьютерные сети Роутер Телекоммуникации Телеком Видео Связь Обучение IT Длиннопост
1
14
DELETED
Серия IP протокол (IPv4)

#003 Про IP-адреса и их свойства. Часть 1: номер сети и номер хоста⁠⁠

1 год назад

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

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

Тему IP-адресов я разбил на три логические части: сперва идет немного теории, потом мы разбираемся с формами записи IP-адресов, пингуя всё на свете, кроме шила и гвоздя, а в третьей части мы соберем небольшую лабу в EVE-NG, чтобы разобраться как настраиваются основные и вторичные IP-адреса на интерфейсах роутеров.

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

Задачи IP-адресов

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

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

Свойства IP-адресов

IP-адрес обладает большим количеством свойств, выделю пять основных (на мой взгляд):

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

  2. IP-адрес назначается на канальный интерфейс устройства.

  3. IP-адрес для нормальной работы сети должен быть уникальным в пределах всей сети, если на устройстве А и Б будут одинаковые адреса, то для одной части узлов сети будет доступно устройство А, а для другой части сети устройство Б, этим можно пользоваться для реализации anycast взаимодействия, так как штатно в IPv4 этот вид взаимодействия не реализован.

  4. IP-адрес состоит из двух частей:

    • первая часть адреса является идентификатором канальной среды или номером сети (Network ID), номер сети будет одинаковым для всех узлов внутри одной канальной среды и разным у узлов из разных канальных сред;

    • вторая часть IP-адреса – это номер узла или идентификатор хоста (Host ID), номер узла должен быть разным для всех узлов внутри одной сети, но может повторяться, если узлы находятся в разных канальных средах.

  5. На текущий момент границу между номером сети и номером узла проводит маска подсети. Если вы не знаете маску подсети, то не сможете сказать: где у IP-адреса номер хоста, а где номер сети.

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

Номер сети и номер хоста

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

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

Все вышесказанное продемонстрировано на этой картинке.

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

Сколько IP-адресов может быть на устройстве?

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

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

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

Как записать IP-адрес

Разбираться будем с формами записи в десятичной системе счисления. Если вы выходите в интернет, то, наверное, видели IP-адреса, например, 192.168.0.1. Читатель может заметить и спросить, ну и чего тут рассказывать, вон на экране написано 192.168.0.1, это и есть форма записи IP-адреса, которая всем понятна и удобна. Я бы мог в свою очередь сказать, что это стандартная форма записи, но, насколько мне известно, в спецификации IP стандартная форма записи никак не описана.

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

Для начала запишем форму записи для 192.168.0.1 в общем виде:

8bit.8bit.8bit.8bit

А теперь давайте запишем в этом виде самый маленький и самый большой адреса:

0.0.0.0

255.255.255.255

Переведем их в двоичный вид:

00000000|00000000|00000000|00000000

11111111|11111111|11111111|11111111

В двоичном виде вместо точки я использовал пайп. Самый маленький адрес в двоичном виде представляет собой тридцать два нуля, самый большой тридцать две единицы, комбинции нулей и единиц между двумя представленными выше крайностями это все остальные IP-адреса. Фактически IP-адрес это число 32 бита, оно же может быть и десятичным. Вопрос в том, как нам записать адрес в десятичном виде одним числом и можно ли это вообще делать?

Для примера давайте пропингуем Яндекс:

PS C:\> ping ya.ru

Обмен пакетами с ya.ru [5.255.255.242] с 32 байтами данных:

Ответ от 5.255.255.242: число байт=32 время=46мс TTL=54

Ответ от 5.255.255.242: число байт=32 время=46мс TTL=54

Ответ от 5.255.255.242: число байт=32 время=47мс TTL=54

Ответ от 5.255.255.242: число байт=32 время=46мс TTL=54

Статистика Ping для 5.255.255.242:

Пакетов: отправлено = 4, получено = 4, потеряно = 0

(0% потерь)

Приблизительное время приема-передачи в мс:

Минимальное = 46мсек, Максимальное = 47 мсек, Среднее = 46 мсек

PS C:\>

Яндекс доступен по адресу: 5.255.255.242. Давайте переведем адрес в двоичный вид, каждый октет по отдельности:

00000101|11111111|11111111|11110010

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

Перевод чисел из десятичной системы счисления в двоичную

Перевод чисел из десятичной системы счисления в двоичную

Хотел бы обратить внимание на число 5. Калькулятор представляет его как четыре бита: 0101, а под одно число IP-адреса у нас выделено восемь бит. В таком случае мы должны вместо недостающих старших бит написать нули (чем старше бит, тем левее он стоит, аналогично и для байтов), так как они в данном случае ничего не значат и само восьми битное число никак не изменится (чего не скажешь о числе размером 32 бита, если октет будет в середине, а не как у нас крайним слева).

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

00000101111111111111111111110010

Роутер или компьютер работают с адресами без разделителей для них это просто биты. Затем получившуюся битовую последовательность переводим в десятичную систему счисления.

Переводим число из двоичной системы в десятичную

Переводим число из двоичной системы в десятичную

Получилось число 100 663 282. Давайте его пропингуем.

Пингуем десятичное число, получаем IP-адрес

Пингуем десятичное число, получаем IP-адрес

Видим, что винда привела этот номер в привычный нам вид, всё успешно пропинговалось. Здесь может возникнуть справедливый вопрос: почему это мы вместо того чтобы использовать простые и понятные числа, переводим их в двоичный вид, разрезаем одно большое число на четыре куска по восемь бит, потом преобразуем эти восьмибитные двоичные числа обратно в десятичные и только потом записываем IP-адреса? Если коротко, то в таком виде удобнее разрезать сети на подсети или же наоборот (человекам, а не комплюхтерам): объединять маленькие сеточки в одну большую, если более детально, то будет отдельная тема о масках подсети.

Две не очень популярные формы записи

Я знаю еще две формы записи, которые, как я слышал, пришли из систем BSD. В общем виде их можно записать так:

8bit.8bit.16bit

8bit.24bit

Я ни разу не видел, чтобы их кто-то использовал в каких-то рабочих целях, но вдруг вы столкнетесь. Винда понимает эти формы, вот для примера пинг 8.8.8.8.

PS C:\Windows\system32> ping 8.8.2056

Pinging 8.8.8.8 with 32 bytes of data:

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Ping statistics for 8.8.8.8:

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

Approximate round trip times in milli-seconds:

Minimum = 54ms, Maximum = 54ms, Average = 54ms

PS C:\Windows\system32> ping 8.526344

Pinging 8.8.8.8 with 32 bytes of data:

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Reply from 8.8.8.8: bytes=32 time=54ms TTL=112

Ping statistics for 8.8.8.8:

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

Approximate round trip times in milli-seconds:

Minimum = 54ms, Maximum = 54ms, Average = 54ms

PS C:\Windows\system32>

Итого у нас имеется четыре формы записи IP-адреса:

8bit.8bit.8bit.8bit

8bit.8bit.16bit

8bit.24bit

32bit

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

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

C:\Users\user>ping 1.0.0.1

Pinging 1.0.0.1 with 32 bytes of data:

Reply from 1.0.0.1: bytes=32 time=39ms TTL=59

Reply from 1.0.0.1: bytes=32 time=46ms TTL=59

Reply from 1.0.0.1: bytes=32 time=40ms TTL=59

Reply from 1.0.0.1: bytes=32 time=39ms TTL=59

Ping statistics for 1.0.0.1:

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

Approximate round trip times in milli-seconds:

Minimum = 39ms, Maximum = 46ms, Average = 41ms

C:\Users\user>ping 1.0.1

Pinging 1.0.0.1 with 32 bytes of data:

Reply from 1.0.0.1: bytes=32 time=39ms TTL=59

Reply from 1.0.0.1: bytes=32 time=39ms TTL=59

Reply from 1.0.0.1: bytes=32 time=40ms TTL=59

Reply from 1.0.0.1: bytes=32 time=40ms TTL=59

Ping statistics for 1.0.0.1:

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

Approximate round trip times in milli-seconds:

Minimum = 39ms, Maximum = 40ms, Average = 39ms

C:\Users\user>ping 1.1

Pinging 1.0.0.1 with 32 bytes of data:

Reply from 1.0.0.1: bytes=32 time=39ms TTL=59

Request timed out.

Reply from 1.0.0.1: bytes=32 time=47ms TTL=59

Reply from 1.0.0.1: bytes=32 time=39ms TTL=59

Ping statistics for 1.0.0.1:

Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),

Approximate round trip times in milli-seconds:

Minimum = 39ms, Maximum = 47ms, Average = 41ms

А на этом всё, здесь появится ссылка на вторую часть после ее публикации.

Вопросы для ваших ответов

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

  1. Какое число больше 8.234.255.12 или 9.0.0.0?

  2. Зачем IP-адресу точки?

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

  4. Какой байт пропущен для адреса 1.1.1 (слева от центральной единицы или справа)?

  5. У нас есть локальная сеть(не интернет), в сети есть узлы, кто этим узлам выдает IP-адреса?

  6. Нужен ли роутер для взаимодействия между узлами одной подсети?

  7. Схема: к Wi-Fi роутеру подключено два ноутбука по Wi-Fi, все три устройства в одной подсети, пингуем с первого ноутбука второй. Вопрос: как физически будут передаваться данные, напрямую между двумя ноутбуками или через роутер и почему?

Видео версия

Тем, кому лучше смотреть, чем читать.

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

Про формы записи адресов и пинги тут:

Показать полностью 4 2
[моё] Системное администрирование IP Протокол Сети Компьютерные сети Данные Хост Роутер Телекоммуникации Связь Видео YouTube Длиннопост
2
1
Zura.Tattoo
Zura.Tattoo
Помощь в выборе техники

Подбор коммутатора для домашнего пользования⁠⁠

1 год назад

Всем доброго вечера.
Господа помогите сделать выбор, планируется 10 м кабель от роутера до ps4 и тв приставки. И нужна какая нибудь коробушка, что бы это всё развести, подключить и забыть.

Наткнулся на такие варианты :

https://market.yandex.ru/cc/sQIngpC

https://market.yandex.ru/cc/6NPH0d7

https://market.yandex.ru/cc/k77mZN8

Или может чего посоветует?

В дальнейшем планируется подключение мини Пк/файлопомойки…

Роутер TpLink ac1200

Заранее благодарен)

Показать полностью
[моё] Помощь Вопрос Компьютерные сети Текст
12
16
DELETED
Серия IP протокол (IPv4)

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

1 год назад

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

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

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

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

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

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

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

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

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

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

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

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

  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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что делает 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 смотреть смысла нет, там ничего нового, смотрим сразу в сетевой:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
[моё] IP Протокол Сети Компьютерные сети Данные Хост Роутер Телекоммуникации Связь Видео YouTube Длиннопост
2
16
DELETED
Серия IP протокол (IPv4)

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

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/

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

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

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

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

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

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

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

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

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

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

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

Кнопка 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.

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

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

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

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

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

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

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

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

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

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

Содержимое 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 нам может рассказать о канальном уровне.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ICMP пришел на PC2

ICMP пришел на PC2

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

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

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

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

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

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

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

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

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

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

По итогу:

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

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

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

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

Видео версия

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

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

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

Показать полностью 19 2
[моё] IP Протокол Сети Компьютерные сети Данные Хост Роутер Телекоммуникации Связь Видео YouTube Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии