Меняется ли MAC или IP адрес при передачи пакета по сети?

Топология сети

Вопрос возможно покажется не совсем корректным. Задам его иначе. Мы знаем, что у пакета данных есть такие параметры как MAC SRC (аппаратный адрес источника), MAC DST (аппаратный адрес назначения), IP SRC (сетевой адрес источника) и IP DST (сетевой адрес назначения).

Предположим, что мы посылаем пакет данных из точки A в точку B через ряд коммутаторов/маршрутизаторов. В какой момент и будет ли вообще меняться эти параметры?

Давайте проведём интересный эксперимент. Выберите верный по вашему мнению вариант (это голосование анонимно), а затем читайте дальше. И в конце мы узнаем, были ли у кого-нибудь заблуждения на этот счёт или нет. Только чур, не подсматривайте. Сперва ответ (голосование полностью анонимно!)

Пакет данных проходит из одной сети в другую минуя коммутаторы и маршрутизаторы. Какие параметры пакета будут меняться?

View Results

Loading ... Loading ...

Ну чтож, а теперь вперёд к испытаниям! Я создал топологию в CPT следующего вида:

Топология сети
Топология сети

Здесь у нас три хоста, два в одной подсети (192.168.1.0/24), один в другой (10.0.0.0/24), связаны между собой роутером Cisco 1841 (не принципиально), который имеет первые адреса из каждой подсети на своих интерфейсах. На хостах настроены шлюзы по умолчанию на соответствующие порты маршрутизатора.

Два узла первой подсети объединяются в один домен коллизий через коммутатор 2950 (не принципиально).

Все порты, имеющие IP адрес я подписал. Все порты с MAC-адресами подписаны.

Теперь мы посылаем PING-запрос с узла host1 192.168.1.10 на host2 10.0.0.10. Я опущу здесь процедуру определения аппаратных адресов по протоколу ARP, оставлю только ICMP.

Ключевой момент
Ключевой момент

Оказывается, что исходящий пакет будет иметь следующие параметры:

  1. MAC SRC: адрес host1, то есть адрес с которого отправлен пакет;
  2. MAC DST: адрес порта маршрутизатора.
  3. IP SRC: сетевой адрес host1;
  4. IP DST: сетевой адрес host2;

Пройдя коммутатор пакет не изменится вообще. MAC-адреса портов коммутатора не влияют на процесс пересылки пакета. Правда MAC SRC осядет в таблицы коммутации свича:

Switch#show mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0050.0f54.2222 DYNAMIC Fa0/3
1 00d0.bc19.0001 DYNAMIC Fa0/1
Switch#

Теперь стало понятно, почему MAC DST пакета содержит адрес порта маршрутизатора, а не удалённой станции.

В первоначальный момент времени, когда коммутатор ещё не знал о местоположении станций (его таблица коммутации была пуста), он разослал пришедший пакет на все-все-все узлы. А пришёл ему пакет в другую сеть! То есть хост, не разобравшись с маршрутизацией (не настроена) просто послал неизвестный пакет на роутер.

Роутер, получив пакет для 10.0.0.10 понял, что эта подсеть находится по его другую сторону, послал пакет туда (а там и узел host2). Коммутатор принял ответ от узла 10.0.0.10 (которое переслал ему роутер) и запомнил, что нужный MAC находится со стороны порта Fa0/3.

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

Выводы:

  1. пакет, проходя коммутаторы, не меняет свои MAC SRC, MAC DST, и уж тем более IP адреса;
  2. пакет, проходя маршрутизаторы, меняет свои MAC SRC, MAC DST на адреса соответствующего порта маршрутизатора.

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

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Comments: 6
  1. stormbringer

    Честно говоря, это стало для меня неожиданностью.

  2. PrihoD
  3. Алексей Сергеевич

    Отличная статья. а есть возможность так же доходчиво изложить суть процессов если в сети появится идентичный MAC адрес? :)

    1. litladmin (author)

      Спасибо. Если в сети появится идентичный MAC-адрес, то узел с таким адресом должен просто получить копию фрейма точно так же, как и узел с оригинальным-MAC. В технологии Ethernet сигнал распространяется по всему домену коллизий, узлы с “не тем” адресом просто игнорируют фрейм. А тут получится, что две станции его слопают.

      На мой взгляд 2-ой уровень OSI не такой “хитрый”, гораздо интереснее ситуация, когда в сети появляются два узла с одинаковым IP-адресом. Тогда пересылка будет зависеть от состояния кеша на транзитных узлах. У кого-то может быть старый ARP-кеш, он пошлёт по верному MAC-адресу, а кто-то получив кадр с неизвестным адресом назначения запросит по ARP разрешение этого адреса и запомнит тот ответ, что придёт раньше. Это может быть как верный, так и фейковый MAC-адрес. Так вот думаю, если есть интерес построить это на симуляции – можно попробовать, но лучше воспользоваться GNS3, не известно, как CPT отреагирует на дубли адресов

      1. Здравствуйте, я вошел через логин моей дочери. Меня зовут Александр, а сам я вконтакте не живу. Мы можем здесь продолжить беседу, есть кто живой?

        1. litladmin (author)

          Здравствуйте. Что Вас интересует?

Leave a Reply