收发包流程

收包流程

  • 数据包到达网卡NIC

  • 非混杂模式NIC校验Mac地址

    • 即目的Mac地址不是本机的数据包直接丢弃,不会处理
    • 混杂模式一般适用于存在虚拟机时,虚拟机daemon会把物理网卡设置为混杂模式
    • 抓包时也需要混杂模式
  • 校验数据帧的校验字段FCS,丢弃校验失败的错误帧

  • NIC通过DMA方式将数据帧放入提前映射好的内存区域

  • NIC等待超时或者接受区满了后出发硬件中断指令

  • CPU执行硬件中断并运行网卡的驱动程序,对网卡进行轮询收包

  • 把数据包送入协议栈

  • 调用netfilter(iptables对应的内核程序)的PREROUTING

  • 查找路由表,进行转发或者进入本机

  • 对进行本机的包调用netfilterLOCAL_IN

  • 调用四层协议栈,例如tcp_v4_rcv

  • 查找到对应的socket,运行TCP状态机

  • 通过epoll或者其他轮询方式通知应用程序

  • 应用程序读取数据</

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值