2

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

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa

Router 1  
IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  

Router 2  
IP: 192.168.2.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  

Computer 2   
IP: 192.168.2.1  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.12  
MAC: 00:00:00:00:00:dd

Если бы я подключился с компьютера 1 к компьютеру 2 и следовал за потоком пакета, я считаю, что адрес источника, из которого информация покидает маршрутизатор 2, будет 192.168.1.2, а MAC-адрес источника будет 00:00:00:00:00:см. Насколько я понимаю, пункт назначения остается прежним, но источник будет обновляться по мере прохождения своего пути. Это правильно или мне их что-то не хватает?

5 ответов5

1

Уф. Это немного сложно, учитывая ваш сценарий.

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

В вашем примере все 4 устройства совместно используют один и тот же сегмент локальной сети, который, кроме того, находится в немаршрутизируемом (edit: через "Интернет") IP-адресе для семейства 192.168.xy.

Лучше было бы думать об этом следующим образом:

Computer 1
IP: 192.168.1.100
Subnet: 255.255.255.0
Default Gateway: 192.168.1.1
MAC: 03:00:00:00:00:11

Router 1
IP: 192.168.1.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:22
IP: 192.168.12.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:33

Router 2
IP: 192.168.12.2
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:44
IP: 192.168.2.1
Subnet: 255.255.255.0
MAC: 03:00:00:00:00:55

Computer 2
IP: 192.168.2.200
Subnet: 255.255.255.0
Default Gateway: 192.168.2.1
MAC: 03:00:00:00:00:66

Не обращайте внимания на тот факт, что лидерство MAC с шестнадцатеричным символом 03, это просто для корректности для снобов сети. [РЕДАКТИРОВАТЬ] Я должен был изменить его на 0x03, чтобы он был как локально назначен, так и глобально уникальным.

Итак, что здесь происходит: есть кабель от компьютера 1, подключенный к маршрутизатору 1. Эти два разделяют сеть 192.168.1.x. Есть кабель от маршрутизатора 1 до маршрутизатора 2. Они разделяют сеть 192.168.12.x. Есть кабель от маршрутизатора 2 к компьютеру 2. Они разделяют сеть 192.168.2.x.

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

Теперь к вашему конкретному вопросу.

Вы наполовину правы. MAC-адрес, который видит Компьютер 2, является адресом Маршрутизатора 2. В моем примере это будет MAC 03:00:00:00:00:55. Тем не менее, IP-адрес, который он видит, принадлежит компьютеру 1. Вот как Компьютер 2 может ответить обратно на Компьютер 1. Теоретически IP-адреса являются «универсально уникальными».

Работа сети с учетом вашего уровня знаний заключается в том, что адреса уровня 2 (канал передачи данных / уровень MAC - во всей среде Ethernet / IPv4) изменяют PER HOP. PER HOP определяется как «проходящий через любое устройство обработки уровня 3». Маршрутизаторы и компьютеры почти всегда обрабатывают уровень 3. Коммутаторы могут обрабатывать уровень 3, но они, как правило, оставляют его в покое.

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

AT HOP 1 - между компьютером 1 и маршрутизатором 1

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:11 (Computer 1)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:22 (Router 1 - Interface facing Computer 1)

AT HOP 2 - Между роутерами

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:33 (Router 1 - Interface facing Router 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:44 (Router 2 - Interface facing Router 1)

AT HOP 3 - между маршрутизатором 2 и компьютером 2

SourceIP: 192.168.1.100 (Computer 1)
SourceMAC: 03:00:00:00:00:55 (Router 2 - Interface facing Computer 2)
DestIP: 192.168.2.200 (Computer 2)
DestMAC: 03:00:00:00:00:66 (Computer 2)

Итак, вы видите, что адреса уровня IP-адресов (уровень 3) остаются неизменными во всей связи, но адреса уровня канала данных (уровень 2) меняются каждый раз, когда задействовано другое устройство, которое обрабатывает адрес уровня 3.

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

1

Ваш пример ошибочен. (Я видел, как вы редактировали его, он все еще несовершенен.)

В вашем примере маршрутизаторы 1 и 2 находятся в одной подсети (то есть имеют одинаковую маску подсети). Таким образом, Компьютер 1 НЕ собирается отправлять что-либо из шлюза по умолчанию, он просто выбрасывает пакет из NIC и ожидает, что коммутатор или носитель получит его на Компьютер 2.

Теперь, если вы измените Маршрутизатор 2 и Компьютер 2 на это:

Router 2
IP: 192.168.2.2

а также

Computer 2
IP: 192.168.2.12

[редактировать ник, выделенный жирным шрифтом], тогда маршрутизатор 2 и компьютер 2 будут включены (их отдельная подсеть, НЕ :) отдельные подсети, и пример станет более понятным.

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

Компьютер 1 <-> Маршрутизатор 1 <-> Маршрутизатор 2 <-> Компьютер 2

Маршрутизатор 1 и Маршрутизатор 2 не могут находиться в одной подсети, чтобы это работало. На самом деле между ними будет третья сеть, по которой они будут торговать трафиком. (Это также немного странно для маршрута по умолчанию ссылаться на частную сеть, обычно это означает "Интернет", но, безусловно, возможно.)

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

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

В итоге получается кадр, отправленный с MAC-адреса компьютера 1 на MAC-адрес маршрутизатора 1.

Маршрутизаторы пересылают пакеты, а пересылка означает копирование из другого интерфейса. Таким образом, маршрутизатор 1 увидит, что пункт назначения пакета, который он получил от компьютера 1, предназначен для компьютера 2. (Это должно было быть запрограммировано со статическим маршрутом или использовать протокол, такой как RIP/OSPF, чтобы знать это в такой ситуации.)

Таким образом, IP-пакет теперь имеет MAC-адрес источника второго NIC маршрутизатора 1 и MAC-адрес назначения первого NIC маршрутизатора 2. И так до тех пор, пока он не дойдет до компьютера 2.

0

Вы наполовину правы в том, что MAC-адрес меняется с каждым прыжком, но IP-адреса соединения не изменяются, если не используется встроенная технология NAT/PAT или не используется прокси приложения.

Обратите внимание, я считаю, что адрес для computer2 должен быть чем-то вроде 192.168.2.12, а не 1.12. это означало бы, что ваш пакет вообще не проходит через router2. Я считаю, что вы ищете что-то вроде:

Computer 1  
IP: 192.168.1.11  
Subnet: 255.255.255.0  
Default Gateway: 192.168.1.1  
MAC: 00:00:00:00:00:aa

Router 1  
LAN IP: 192.168.1.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:bb  

WAN IP: 192.168.3.1  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:b1  

Router 2  
LAN IP: 192.168.2.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:cc  

WAN IP: 192.168.3.2  
Subnet: 255.255.255.0  
MAC: 00:00:00:00:00:c1 

Computer 2   
IP: 192.168.2.12  
Subnet: 255.255.255.0  
Default Gateway: 192.168.2.2  
MAC: 00:00:00:00:00:dd

таким образом, у нас есть три сети, компьютер LAN1 находится в (.1.X) сеть между двумя маршрутизаторами (.3.X) и локальной сети, в которой включен компьютер2 (.2.ИКС).

MAC-адреса предназначены для адресации кадров, поэтому они привязаны к реализации каждой локальной сети. вы можете использовать mac address ::aa для отправки фреймов по сети, к которым подключены Computer1 и Router1, но если вы попытались отправить фрейм в ::dd в этой локальной сети, он не достигнет своего места назначения. Таким образом, MAC-адрес хорош только в сети, в которой есть устройство с этим MAC.

Однако IP-адрес предназначен для передачи между сетями, поэтому он остается постоянным. пакет повторно инкапсулируется в новый кадр каждый раз, когда он пересекает маршрутизатор, но сам IP-пакет остается неизменным. это важно, потому что если бы Computer2 в вашем сценарии получил пакет от 192.168.1.1 с MAC ::cc, он не мог бы сказать, что он не пришел от маршрутизатора, и когда ответит computer2, router2 не будет знать кто это отвечает.

Итак, пакет, который принимает компьютер2, имеет исходный IP-адрес 192.168.1.11, но MAC-адрес ::cc.

NAT/PAT делает это немного более запутанным, поскольку для принятия решений об источнике / месте назначения требуется больше информации, поэтому помните, что сценарий с реальными домашними маршрутизаторами немного закончен.

0

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

Программа arp покажет вам, какой MAC-адрес ожидается. На каждом компьютере выполните команду arp -an (или в Windows arp -a . Это отобразит все известные локальные устройства и их mac-адрес. Трафик для удаленных устройств будет направляться на mac-адрес шлюза.

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

Если у вас установлено соединение (ssh работает хорошо), вы можете использовать команду netstat -nat (или в Windows команду netstat ), чтобы вывести список всех соединений. Вы можете отфильтровать или отсканировать список, чтобы найти адрес подключения. В Linux, используя ssh , команда, who am i , перечислит удаленный адрес, с которого вы соединились.

0

УЧ. Маршрутизатор не будет иметь только один IP. Я предлагаю «первый шаг в сети» Уэнделла Одома.

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

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

Не просто говорите "источник" "место назначения". Скажите конкретно, если вы имеете в виду IP-адрес источника или MAC-адрес источника или IP-адрес назначения или MAC-адрес назначения.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .