Chinaunix首页 | 论坛 | 博客
  • 博客访问: 692267
  • 博文数量: 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-07-28 21:23:52

第四章 路由
4.1 路由函数表结构及关系图
        a. 图: 略
        b. 从图可看出,路由函数表fib_table是路由的总根, 从此出发可找到各个路由区结构fn_zone, 也可以找到路由节点结构fib_node或者路由信息结构fib_info
4.2 路由函数表的初始化
          ......
4.3 通过路由函数表查找路由信息
          ......前一篇
4.4 路由设置及相关结构的初始化
          ......前一篇

4.5 基于输出方向的路由表查找与创建
          以tcp_v4_connect()函数调用ip_route_connect()的过程分析输出方向的路由表查找与创建. tcp_v4_connect()函数在客户端向服务器发出连接请求的过程中被调用
          sys_socketcall()-->sys_connect()-->inet_stream_connect()-->tcp_v4_connect()-->ip_route_connect()-->__ip_route_output_key()-->ip_route_output_slow()
                                                                                                                                                                          -->ip_route_output_flow()

            ip_route_output_slow()的后续调用关系如下:
            ip_route_output_slow()-->ip_dev_find()
                                                -->inet_select_addr()
                                                -->fib_select_multipath()
                                                -->fib_select_default()-->fn_hash_select_default()-->fib_detect_death()
                                                -->ip_mkroute_output()-->__mkroute_output()-->rt_set_nexthop()
                                                                                     -->rt_intern_hash()

          带参数如此: ip_route_connect(&rt, nexthop, inet->saddr,
                                                            
RT_CONN_FLAGS(sk), sk->sk_bound_dev_if,
                                                            IPPROTO_TCP, 
                                                            inet->sport, usin_port, sk, 1
)
            此中: rt是路由表,用来返回给tcp_v4_connect()使用
                     nexthop是跳转地址(也可能是服务器地址)
                     inet->saddr是源地址(即发送方的IP地址)
                     RT_CONN_FLAGS(sk)是服务类类型
                     sk->sk_bound_dev_if是socket所使用的网络设备的ID
                     IPPROTO_TCP指定使用TCP传输控制协议
                     inet->sport是客户端的端口
                     usin->sin_port是服务器端口, 即目标端口.
            !!!!!!!!!!!!!!!!!!!!!理解待续

4.6 基于输入方向的路由表查找与创建
          ......
阅读(1012) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~