从网卡收到电信号到应用层拿到数据

不考虑零拷贝这种优化技术

总体的流程应该是这样的

  1. 网卡收到电信号,转成信息,传入网卡缓存
细节见书,《网络是怎样连接的》 ,6.2节对于网卡接收数据的描述
  1. 网卡中断cpu,cpu调用网卡驱动程序讲数据读入内核,对应的数据结构是input_pkt_queue
    见链接博客

  2. 当操作系统一直运行在中断上下文中时,也就是说一直处于内核态,每层协议栈可能会将下层的数据复制到自己的空间,也可能只是操作指针就好了。我比较倾向于第二种,当然ip分片重组不可避免地要copy数据。

  3. 数据从内核中copy到用户空间。

总的来看,一共是两次次copy,分别发生在网卡缓存 --> 内核,内核到用户空间。

考虑零拷贝技术时的数据转移流程

网卡到内核使用的DMA, 内核到用户就没了,它使用了共享内存.所以叫做零拷贝。
见链接博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值