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

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

文章分类

全部博文(192)

文章存档

2024年(8)

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-15 20:39:56

第十二章 建立连接的过程
        分析服务器, 如何为数据块建立数据包, 并从底层向上层传递到服务程序的过程.
12.1 驱动程序接收并建立数据包
         ......上一章
12.3 接收或转发IP数据包
        do_softirq()-->net_rx_action()-->process_backlog()-->netif_receive_skb()-->deliver_skb()-->ip_rcv()-->ip_rcv_finish()-->ip_rcv_options()-->ip_options_rcv_srr()
                                                                                                                                                                                                -->dst_input()-->ip_local_deliver()
        ip_rcv_finish()明确数据包是本地接收还是转发(明确网络设备和出口), 处理ip选项内容. 
        ip_rcv_options()处理ip选项内容.
        ip_options_rcv_srr()确定如何处理和数据包. 沿着源路由的每一个跳转地址查找或者建立路由表. 浏览源路由的全部跳转地, 逐个查找路由表, 没有路由表就创建新的路由表.
                对本地地址,创建本地路由表设置输入处理函数为ip_local_deliver()
                对转发地址, 它会创建转发路由表设输入处理函数为ip_forward().
               如果中间检查出错. 则调用icmp_send()函数向客户端发送icmp数据包
                ip_local_deliver()处理数据包. 检查ip头部,如果是分段数据包,就调用ip_defrag()将分段数据包插入分段队列. 如果接收的是最后一个分段数据包,则重组数据包

12.4 TCP数据包的处理
12.5 3次握手过程
阅读(648) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~