Откуда исходит исходный MAC до инкапсуляции кадров в Layer2?

Пакет приходит из приложения ->... Сеть ->(здесь добавляется IP-инкапсуляция в соответствии с IP-конфигурацией)-> до уровня канала передачи данных. Здесь кадрирование завершено, и для коммутации локальной сети добавлены SourceMac и Dest Mac. Каждый раз SourceMac извлекается из HostNIC и инкапсулируется в пакет перед отправкой интерфейса? или есть какой-то файл конфигурации, из которого он читает?

Я предполагаю, что файл /etc/network/interfaces является пустым и не имеет адреса hw-addr для изменения MAC[ifconfig eth0 hw ether (Macwe хочет изменить команду AA:BB:CC....)]. откуда у него собственный MAC?

он делает Lookup каждый раз, говоря 'ifconfig eth0 |grep HWaddr' и выбирает собственный MAC или аналогичный через системный вызов? Потому что это приведет к огромным накладным расходам на запросы чипсета NIC каждый раз. Или он поддерживает файл, считываемый из него, и просто инкапсулирует пакет, поступающий с верхнего уровня и отправляющий с провода?

1 ответ

Решение

Ни один из вышеперечисленных. MAC добавляет свой собственный адрес к кадрам Ethernet на выходе; программное обеспечение не должно добавлять его.

Однако иногда водителю полезно знать физический адрес чипа, на котором он работает; для этого не требуется каждый раз запрашивать NIC или "поддерживать файл"; 6 байтов оперативной памяти в структуре данных драйвера отлично справляются со своей задачей. Это где значение отображается ifconfig происходит от.

Другие вопросы по тегам