Я занимался в лаборатории и написал программу на C, которая читает все AF_PACKET
SOCK_RAW
пакеты, то есть кадры Ethernet уровня 2 OSI.Программа записывает содержимое заголовка Ethernet (MAC-адреса), заголовка IP, заголовка TCP и т. Д.
Это подняло вопрос - если уровень Ethernet является самым низким перед физическим уровнем, какMAC-адреса разрешены на уровне ниже уровня IP-адреса?Например, если моя машина в Калифорнии отправляет пакеты TCP / IP на ваши в Нью-Йорке, соответствуют ли MAC-адреса в заголовках Ethernet нашим фактическим MAC-адресам или только MAC-адресам между нашими отдельными компьютерами и их соответствующими маршрутизаторами?
Мне известно, что есть транзакция, в которой машина идентифицирует себя через MAC-адрес маршрутизатора и получает IP-адрес, но каждый отдельный пакет Ethernet имеет MAC-адрес источника и назначения, и я запутался в том, чтос какими машинами соотносятся эти MAC-адреса, потому что моя машина не может иметь MAC-адрес вашей машины до того, как сначала свяжется с вашей машиной по IP-адресу.