请问处理帧要占用CPU时间吗?
一位前辈在他的文章中说:
在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。CPU得到中断信号产生中断,操作系统就根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。
我的理解为:如果目的mac地址不为本网卡的MAC的话,就由网卡把帧过滤掉,跟本不会由CPU处理。但我修改mac地址后,仍能正常通信。mac地址是放在注册表中。这就产生一个问题:到底是收到帧后取注册表中的mac地址与收到的帧比较还是由网卡处理?用ipconfig看到的mac地址确实已经修改成功,而且其他机器arp表的本机mac地址也是修改后的地址。是每收到一帧就读注册表比较,还是网卡中就有一个缓存在系统启动时就把注册表中的mac读入,以后处理帧就用这个了。前者好象效率很低吧。
敬请各位大侠指点~