Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1214575
  • 博文数量: 122
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4004
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-20 08:27
文章分类
文章存档

2016年(1)

2015年(21)

2014年(100)

分类: LINUX

2014-02-20 15:42:38


=============================================================
 TCP收包流程
=============================================================

 
网卡收包中断

  网卡驱动处理中断netif_rx(非NAPI)-- 使用softnet_data->input_pkt_queue公共队列,用backlog_dev替换dev
    NAPI使用设备内存,驱动程序使用自定义的poll方法从设备(ring buffer)中直接取帧。不调用neif_rx方法直接走下面的流程
     netif_rx_schedule
      触发软中断

软中断处理-->net_rx_action
dev->poll 
  process_backlog(非NAPI),从softnet_data->input_pkt_queue公共队列中取数据处理
  驱动自定义的poll函数,从设备(ring buffer)中直接取帧

netif_receive_skb
ip_rcv
  ip_rcv_finish
    dst_input
      skb->dst->input(skb)=ip_local_deliver或ip_forward
        ip_local_deliver
          ip_local_deliver_finish
            ipprot->handler(skb)=tcp_v4_rcv
              tcp_v4_rcv
                tcp_v4_do_rcv
                  tcp_rcv_established
        ip_forward

 

阅读(2754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~