В настоящее время я занимаюсь «самостоятельным изучением» сетей с коммутацией пакетов, включая TCP, UDP и другие протоколы. Я подтвердил, что MAC-адрес отправителя не может быть отправлен напрямую получателю, поскольку пакеты, как правило, проходят через несколько маршрутизаторов (где есть глобальная сеть).
Но в локальной сети я предположил аналогичный сценарий, давайте предположим, что есть один маршрутизатор для двух терминалов, которые связываются с простым «TCP-чатом», разработанным на Java. (код давать не буду). Я разработал простой «сниффер пакетов» в java (с помощью jpcap), который извлекает MAC-адреса из каждого «заголовка пакета» и помещает их в текстовый файл следующим образом...
Destination MAC: ##:##:##:##:##:## /*My Terminal's MAC*/
Source MAC: ##:##:##:##:##:## /*Sender's Terminal's MAC*/
В ПОРЯДКЕ..? Теперь... Я сомневаюсь... в приведенных выше данных я обнаружил, что MAC-адрес маршрутизатора не включен...! Когда мой терминал является получателем, у которого есть этот анализатор пакетов, поэтому я могу напрямую видеть MAC-адрес отправителя выше..!
Но мой аргумент заключается в том, что между отправителем и получателем нет маршрутизатора (в локальной сети)? Тогда почему приведенный выше код не показывает MAC-адрес этого маршрутизатора вместо MAC-адреса отправителя?
Но когда я выполнил свой «анализатор пакетов» при подключении к Google через браузер, я заметил, что приведенные выше данные просматриваются следующим образом...
Destination MAC: ##:##:##:##:##:## /* My LAN-Router's MAC */
Source MAC: ##:##:##:##:##:## /* My Terminal's MAC */
Здесь я вижу MAC-адрес моего LAN-маршрутизатора...!
Кто-нибудь может объяснить, почему я не вижу MAC-адрес LAN-маршрутизатора, когда связываюсь через TCP-чат с узлом в локальной сети...?
Заранее спасибо..!