从空间来看,从网卡到内核空间,再到用户空间,整个过程就是内核将网卡中的数据包拷贝到应用程序。
1.网卡
网卡收到的是数据包的电信号,收到该电信号之后,会将该电信号转化为数字信息,然后进行FCS校验,最后检查数据包的MAC地址是否匹配。
网卡将电信号转化为数字信息之后包含的数据包的信息如下所示:
还原后的数据信息会在网卡上,根据 FCS(帧校验序列,Frame Check Sequence)校验数据,判断数据在传输过程是否因噪音等影响导致信号失真,从而导致数据错误,需要丢弃这种无效的数据包。
FCS校验后对数据包的MAC地址进行匹配,不匹配的包也会丢弃。
没有丢弃的数据包就被网卡存放到了网卡的缓冲区中,该缓冲区就是一个FIFO队列。
2.内核空间
内核空间的处理过程包含了三部分,网卡驱动程序处理,cpu处理,内核协议栈处理。
(1)网卡驱动
系统以及驱动共同为该网卡在内核的使用一段连续的物理内存中实现了一个r