数据包从应用程序到达 - > ...网络 - >(根据IP配置在此处添加IP封装) - >转到数据链路层此处框架已完成,并且为LAN添加了SourceMac和Dest Mac交换。是否每次从HostNIC中提取SourceMac并在发送接口之前将其封装到数据包中?或者它有一些配置文件从中读取?
我假设/ etc / network / interfaces文件为空并且没有任何hw-addr地址来更改MAC [ifconfig eth0 hw ether(Macwe想要改变AA:BB:CC ....)命令]。它在哪里获得自己的MAC?
每次执行查找'ifconfig eth0 | grep HWaddr'并通过系统调用获取自己的MAC或类似信息吗?因为每次都会增加查询NIC芯片组的巨大开销。或者它是否保持文件读取并简单地封装来自上层的数据包并从线路发出?
答案 0 :(得分:1)
以上都不是。 MAC在出路时将自己的地址添加到以太网帧中;该软件不必添加它。
但有时, 对驱动程序有用,可以知道它正在驱动的芯片的物理地址;这不需要每次都查询网卡或“维护文件”;驱动程序数据结构中的6个字节的RAM可以很好地完成工作。这是ifconfig
显示的值来自的地方。