-2

数据包从应用程序到达->...网络->(根据 IP 配置在此处添加 IP 封装)-> 进入数据链路层此处完成帧并为 LAN 交换添加 SourceMac 和 Dest Mac。是否每次将SourceMac从HostNIC中提取并封装到数据包中,然后再发送接口?或者它读取了一些配置文件?

我假设 /etc/network/interfaces 文件为空并且没有任何 hw-addr 地址来更改 MAC [ifconfig eth0 hw ether (Macwe want to change AA:BB:CC....) 命令]。它在哪里获得自己的 MAC?

它是否每次都说“ifconfig eth0 |grep HWaddr”并通过系统调用获取自己的 MAC 或类似内容时进行查找?因为这将增加每次查询 NIC 芯片组的巨大开销。还是它维护一个从中读取的文件并简单地封装来自上层的数据包并从线路发送出去?

4

1 回答 1

1

以上都不是。MAC 将自己的地址添加到出路的以太网帧中;该软件不必添加它。

但有时,驱动程序知道它所驱动的芯片的物理地址是有用的。这不需要每次都查询网卡或“维护文件”;驱动程序数据结构中的 6 字节 RAM 可以很好地完成这项工作。这就是 by 显示的值的ifconfig来源。

于 2014-11-30T05:59:18.793 回答