Материал просмотрен 2,933 раз(а)

Вопрос возможно покажется не совсем корректным. Задам его иначе. Мы знаем, что у пакета данных есть такие параметры как 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 портов коммутатора в качестве источника всякий раз, когда через них проходит. Хорошо, что я развеял сам для себя эту ошибку.