Допустим, у меня 2 компьютера подключены к маршрутизатору. Один из них является беспроводным, а другой - проводным. Не совсем уверен, если это имеет значение здесь, в этом вопросе. Я могу пинговать 1 шт. От другого. Но когда я делаю tracert, я вижу, что он общается напрямую друг с другом без маршрутизатора в качестве шлюза. Насколько я знал, что все коммуникации должны проходить через маршрутизатор? Тогда как ПК напрямую пингуют друг друга?
2 ответа
Хотя ваш маршрутизатор функционирует как маршрутизатор IP (сетевой уровень), он также функционирует как коммутатор Ethernet (канальный уровень). Сообщения сетевого уровня всегда заключаются в сообщения канального уровня.
Любой хост, подключенный напрямую к вашему коммутатору, может связаться с любым другим напрямую подключенным хостом через канальный уровень, указав MAC-адрес получателя при отправке. Хост-отправитель обнаруживает MAC-адрес, используя протокол разрешения адресов (ARP). См. Http://en.wikipedia.org/wiki/Address_Resolution_Protocol для получения дополнительной информации.
Поток в основном идет так:
Отправитель (скажем, 192.168.1.10) хочет отправить получателю (скажем, 192.168.1.11). Отправитель знает, что получатель находится в одной подсети из-за маски сети (255.255.255.0). Отправитель отправляет широковещательное ARP-сообщение (которое отправляется всем хостам в локальной сети через канальный уровень) с запросом ответа для 192.168.1.11. Хост получателя ответит своим MAC-адресом. Теперь, когда отправитель знает MAC-адрес получателя, он создает IP-пакет и отправляет его непосредственно получателю, указав MAC-адрес получателя на канальном уровне.
Поскольку указан MAC-адрес получателя, коммутатору не нужно выполнять маршрутизацию IP (на сетевом уровне); он просто выполняет переключение канального уровня, отправляя пакеты на правильный MAC-адрес. Пакет, идущий от проводного к беспроводному, в значительной степени не имеет значения на уровне канала передачи данных - это проблемы физического уровня, а уровень канала передачи данных располагается поверх физического уровня.
Следовательно, что касается сетевого уровня (что касается проверки связи), пакет передается напрямую от отправителя к получателю. Что касается уровня канала передачи данных, пакет переключается с одного канала на другой с помощью коммутатора.
Обратите внимание, что фактический поток немного сложнее; Например, MAC-адреса кэшируются, но в целом все работает так, как описано.
Они не пингуют друг друга напрямую, это прошло через роутер.
Они могут только пинговать друг друга напрямую, если они подключены напрямую.
Вот пример из моей сети
Они прошли через так называемый «home /Nat router», коммутатор внутри устройства, хотя вывод не показывает, что
C:\Users\user1>ping acomp
Pinging acomp.lan [192.168.1.66] with 32 bytes of data:
Reply from 192.168.1.66: bytes=32 time<1ms TTL=128
Reply from 192.168.1.66: bytes=32 time<1ms TTL=128
Reply from 192.168.1.66: bytes=32 time<1ms TTL=128
Reply from 192.168.1.66: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.1.66:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\Users\user1>tracert acomp
Tracing route to acomp.lan [192.168.1.66]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms acomp.lan [192.168.1.66]
Trace complete.
C:\Users\user1>
Действительно, хотя вы должны включить вставку некоторого вывода из вашего ping и tracert, который привел вас к вашему выводу