您的位置:首页 > 理论基础 > 计算机网络

TCP/IP 第9章 IP选路

2012-11-04 21:58 721 查看

第9章 IP选路

IP搜索路由表的几个步骤:

1) 搜索匹配的主机地址;

2) 搜索匹配的网络地址;

3) 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。

先简单看一个例子:







Flags:
U:表示该路由可以使用
G:表示一间接路由,设置表示该路由需要到路由器,否则是直接相连。标志G是非常重要的,因为由它区分了间接路由和直接路由,其区别在于,发往直接路由的分组要有IP地址和链路层地址。当分组被发往一个间接路由时,IP地址指明的是最终的目的地,但是链路层地址指明的是下一站路由器。并且未设置G的,其网关地址则是本机地址。
H:表示主机地址,设置表示目的地址是完整的主机地址,否则表示该路由是到一个网络,目的地址为网络地址:一个网络号或网络号与子网号的组合
D:该路由是由重定向报文创建
M:该路由已被重定向报文修改
Refcnt:(Reference count)列给出的是正在使用路由的活动进程个数。
Use:显示的是通过该路由发送的分组数

路由表构成:

1) 最简单的(也是最不令人感兴趣的)情况是主机根本没有与任何网络相连。TCP/IP协议仍然能用于这样的主机,但是只能与自己本身通信,这种情况下的路由表只包含环回接口一项。

2) 接下来的情况是主机连在一个局域网上,只能访问局域网上的主机。这时路由表包含两项:一项是环回接口,另一项是局域网(如以太网)。

3) 如果主机能够通过单个路由器访问其他网络(如Internet)时,那么就要进行下一步。一般情况下增加一个默认表项指向该路由器。
4) 如果要新增其他的特定主机或网络路由,那么就要进行最后一步。在我们的例子中,到主机slip的路由要通过路由器bsdi就是这样的例子。

路由表项示例:

1) 假定目的地址是主机sun,140.252.13.33。首先进行主机地址的匹配。路由表中的两个主机地址表项(slip和local h ost)均不匹配,接着进行网络地址匹配。这一次匹配成功,找到表项140.252.13.32(网络号和子网号都相同),因此使用emd0接口。这是一个直接路由,因此链路层地址将是目的端的地址。

2) 假定目的地址是主机s l i p,1 4 0 . 2 5 2 . 1 3 . 6 5。首先在路由表搜索主机地址,并找到一个匹配地址。这是一个间接路由,因此目的端的I P地址仍然是1 4 0 . 2 5 2 . 1 3 . 6 5,但是链路层地址必须是网关1 4 0 . 2 5 2 . 1 3 . 6 5的链路层地址,其接口名为e m d 0。

3) 这一次我们通过I n t e r n e t给主机a w . c o m(1 9 2 . 2 0 7 . 11 7 . 2)发送一份数据报。首先在路由表中搜索主机地址,失败后进行网络地址匹配。最后成功地找到默认表项。该路由是一个间接路由,通过网关1 4 0 . 2 5 2 . 1 3 . 3 3,并使用接口名为e m d 0。

4) 在我们最后一个例子中,我们给本机发送一份数据报。有四种方法可以完成这件事,如用主机名、主机I P地址、环回名或者环回I P地址:

ftp svr4

ftp 140.252.13.34

ftp localhost

ftp 127.0.0.1

在前两种情况下,对路由表的第2次搜索得到一个匹配的网络地址1 4 0 . 2 5 2 . 1 3 . 3 2,并把I P报文传送给以太网驱动程序。 I P报文中的目的地址为本机I P地址,因此报文被送给环回驱动程序,然后由驱动程序把报文放入I P输出队列中。在后两种情况下,由于指定了环回接口的名字或I P地址,第一次搜索就找到匹配的主机地址,因此报文直接被送给环回驱动程序,然后由驱动程序把报文放入I P输出队列中。上述四种情况报文都要被送给环回驱动程序,但是采用的两种路由决策是不相同的。

增加路由方法:
route add 目的地址 网关地址 路由度量
route add default sun 1

ICMP重定向差错





1) 我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为R1是该主机的默认路由。

2) R1收到数据报并且检查它的路由表,发现R2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。

3) R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。



注意:这种ICMP报文,只能有路由器生成,并且接收者只能是主机。主机则可以用ICMP重定向报文来完善自己的路由表。

ICMP路由器发现报文
初始化主机路由表的方法,一种方法是在配置文件中配置静态路由,/etc/sysconfig/networking/device/,主机在引导以后广播或多播一份路由器请求报文,或一台或多台路由器响应路由器通告报文,或者路由器周期性的发送路由器通告报文,由主机更新期路由表。





地址数:指的是报文中韩的地址数。

地址项大小:路由器32bit字的数目,始终为2

生存周期:地址有效时间,单位为秒

额。。。。。。。这个ICMP路由器发现报文除了更新默认路由外,还有啥用呢,他仅仅告知路由器IP地址,并没有告知路由方向,如何更新路由表呢,奇怪的很。。。哪位高人知道望告知。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: