Chinaunix首页 | 论坛 | 博客
  • 博客访问: 692208
  • 博文数量: 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-19 19:55:44

第十四章 数据包的分段与重组
14.1 数据包的分段发送
        ip_finish_output()-->ip_fragment()-->ip_finish_output2()
        ip_fragment()发送前分段及发送
        ip_finish_output2()发送分段数据包
14.2 数据包的分段接收和重组
        do_softirq()-->net_rx_action()-->process_backlog()-->netif_receive_skb()-->deliver_skb()-->ip_rcv()-->ip_rcv_finish()-->dst_input()-->...
        ...-->ip_local_deliver()-->ip_defrag()-->ip_find()
                                                                 -->ip_frag_queue()-->ip_frag_reasm()
        ip_defrag()接收重组,将数据包传递给TCP层
        ip_find()查找或创建ip分段队列
        ip_frag_queue()将分段数据包链入到分段队列中的正确位置.
        ip_frag_reasm()重组数据包

14.3 分段数据包的接收队列
        struct ipq {    //ip分段队列结构
             ......
        };
        struct inet_frag_queue {    //inet分段队列头结构
             ......
        };
        struct netns_frags {    //网络空间的分段管理结构
            ......
        };
        struct inet_frags {    //inet的分段管理结构
            ......
        };
14.4 查找与创建分段队列
        ip_defrag()-->ip_find()-->inet_frag_find()-->ip4_frag_match()
                                                                       -->inet_frag_create()-->inet_frag_intern()
        inet_frag_find()在ip4_frags结构队列中查找或创建INET分段队列头
        ip4_frag_match()查找比对
        inet_frag_create()创建INET分段队列头
        inet_frag_intern()将新建的INET分段队列头链入哈希队列和老化队列

14.5 释放和销毁分段队列
        ip_defrag()-->ip_evictor()-->inet_frag_evictor()-->inet_frag_kill()
                                                                                 -->inet_frag_destory()
        ip_evictor()清除分段队列
        inet_frag_evictor()清除分段队列
        inet_frag_kill()将INET分段队列头摘链

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