当路由器接收到HTTP信息时,从网卡开始到包处理结束,涉及到网卡、内存、CPU、内核协议栈等多个部分的处理。详细流程如下:
网卡接收以太网帧:
网卡接收到物理层传来的比特流,识别出是以太网帧。
网卡检查以太网帧的目的MAC地址,如果匹配自己的MAC地址,则接受该帧。
网卡将接收到的以太网帧存储在自己的接收缓冲区中。
网卡通过DMA将以太网帧复制到内存:
网卡通过DMA(直接存储器访问)技术,将接收缓冲区中的以太网帧复制到事先指定的内存缓冲区中。
这个过程不需要CPU的参与,提高了数据传输效率。
网卡通过中断通知CPU处理以太网帧:
网卡在完成以太网帧复制到内存后,会向CPU发出一个硬件中断信号。
CPU接收到中断信号后,会保存当前执行的上下文,并跳转到中断处理程序。
内核中断处理程序处理中断:
内核的中断处理程序会检查中断的来源,确定是网卡触发的中断。
中断处理程序会调用网卡驱动程序的中断处理函数。
网卡驱动程序处理以太网帧:
网卡驱动程序的中断处理函数会从内存缓冲区中读取以太网帧。
驱动程序会对以太网帧进行必要的检查和处理,如校验帧的完整性等。
驱动程序将以太网帧传递给内核协议栈的网络层。
内核协议栈处理IP数据包:
网络层接收到以太网帧后,会识别出是IP协议的数据包。
IP模块会对数据包进行解析,提取出源IP地址、目的IP地址、协议类