美文网首页转载部分
47 | 接收网络包(上)

47 | 接收网络包(上)

作者: AndyWei123 | 来源:发表于2020-05-24 12:00 被阅读0次
image.png
  • 硬件网卡接收到网络包之后,通过 DMA 技术,将网络包放入 Ring Buffer。
  • 硬件网卡通过中断通知 CPU 新的网络包的到来。网卡驱动程序会注册中断处理函数 ixgb_intr。
  • 中断处理函数处理完需要暂时屏蔽中断的核心流程之后,通过软中断 NET_RX_SOFTIRQ 触发接下来的处理过程。
  • NET_RX_SOFTIRQ 软中断处理函数 net_rx_action,net_rx_action 会调用 napi_poll,进而调用 ixgb_clean_rx_irq,从 Ring Buffer 中读取数据到内核 struct sk_buff。
  • 调用 netif_receive_skb 进入内核网络协议栈,进行一些关于 VLAN 的二层逻辑处理后,调用 ip_rcv 进入三层 IP 层。在 IP 层,会处理 iptables 规则,然后调用 ip_local_deliver,交给更上层 TCP 层。在 TCP 层调用 tcp_v4_rcv。

NAPI:,就是当一些网络包到来触发了中断,内核处理完这些网络包之后,我们可以先进入主动轮询 poll 网卡的方式,主动去接收到来的网络包。如果一直有,就一直处理,等处理告一段落,就返回干其他的事情。当再有下一批网络包到来的时候,再中断,再轮询 poll。这样就会大大减少中断的数量,提升网络处理的效率。

相关文章

  • 47 | 接收网络包(上)

    image.png 硬件网卡接收到网络包之后,通过 DMA 技术,将网络包放入 Ring Buffer。 硬件网卡...

  • NFD开发指南-2.Face系统

    Face 是广义的网络接口。与物理网络接口类似,可以在 Face 上发送和接收数据包。Face 比网络接口更通用。...

  • 监控网络

    Linux 网络收发流程 网络包的接收 当一个网络帧到达网卡后,网卡会通过 DMA 方式,把这个网络包放到收包队列...

  • 48 | 接收网络包(下)

    image.png 硬件网卡接收到网络包之后,通过 DMA 技术,将网络包放入 Ring Buffer; 硬件网卡...

  • Charles抓包

    使用Charles抓包 概念 什么是抓包 抓包(packet capture)就是将网络传输发送与接收的数据包进行...

  • 第十二、十三单元 Charles

    一、抓包概述 1. 抓包概念 抓包是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安...

  • Windows下Charles安装使用

    一、抓包概述 1. 抓包概念 抓包是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安...

  • Charles

    一、抓包概述 1. 抓包概念 抓包是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安...

  • Charles

    一、抓包概述 1. 抓包概念 抓包是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安...

  • 如何抓取手机端和PC端的HTTP包(抓包工具简介)

    本文主要介绍HTTP抓包。 抓包是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全...

网友评论

    本文标题:47 | 接收网络包(上)

    本文链接:https://www.haomeiwen.com/subject/zgidahtx.html