Chinaunix首页 | 论坛 | 博客
  • 博客访问: 657993
  • 博文数量: 185
  • 博客积分: 1875
  • 博客等级: 上尉
  • 技术积分: 2107
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 23:21
个人简介

有时候,就是想窥视一下不知道的东东,因为好奇!

文章分类

全部博文(185)

文章存档

2024年(1)

2023年(3)

2020年(1)

2019年(1)

2018年(1)

2017年(2)

2016年(69)

2015年(53)

2014年(14)

2013年(1)

2012年(5)

2011年(25)

2010年(9)

分类: LINUX

2015-08-13 20:49:02

第十二章 建立连接的过程
        分析服务器, 如何为数据块建立数据包, 并从底层向上层传递到服务程序的过程.
12.1 驱动程序接收并建立数据包
        struct softnet_data {
                ......
        };
        struct napi_struct {
                ......
        };
        驱动程序是如何将中断程序登记到内核
        cs8900网卡的初始化函数: cs89x0_probe1()-->register_netdev(), 将网卡设备的open()函数指定为net_open(). 为cs8900网卡为内核登记中断程序net_interrput(). 涉及软中断的处理
        dm9000及RTL8169网卡中断代码与之大致相同.
        当使用ifconfig eth0 up启动网卡时会执行系统调用sys_ioctl(), 最终内核会执行dev_open()函数
        net_interrput()-->net_rx()-->eth_type_trans()
                                                -->netif_rx()-->netpoll_rx()
                                                                   -->napi_schedule()
        do_softirq-->net_rx_action()-->process_backlog()
        netif_rx()通知内核接收的数据包.
        netpoll_rx()判断是否网络控制台内容?使用UDP协议传输的.
        napi_schedule()将软中断数据结构的NAPI结构链入到队列
        process_backlog()处理数据包我函数, 返回处理后的压力值.

12.2 查找数据包类型且调用其处理函数
12.3 接收或转发IP数据包
12.4 TCP数据包的处理
12.5 3次握手过程
阅读(594) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~