TCP/IP协议详解 卷一 IP选路(路由表策略)

在这里插入图片描述
这里说的IP选路不是如何选而是如何将IP 加入到路由表中的选路策略
(IP加入路由表的策略)
IP选路的进程是用户进程来处理的。

路由表建立必须要有的标志

路由表分为简单路由表和复杂路由表
简单路由表:
对于一个给定的路由需要有5种不同的标志显示:
U: 该路由可以使用
G: 该路由是一个网关,如果没有这个标志则说明目的地是直连的
H:该路由是到一个主机,也就是说,目的地是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号和子网号的组合
D: 该路由是由重定向报文创建的
M:该路由已被重定向报文修改

标志G区分了直接路由和间接路由,由数据报的链路层首部做区分,直接路由(不设置G)的分组不但有目的IP地址,还有其链路层地址。但是如果是间接路由,链路层地址指名的是下一跳的路由器地址

H与G的区别:
H标志表明目的地址是一个完整的主机地址还是网络号。如果没有设置H则表明目的地是网络地址。当为某个IP地址搜索路由表时,主机地址必须完全匹配。而网络号只需要匹配目的地的网络号和子网号即可
路由复杂度分为4种(根据网络拓补结构区分):

  1. 没有与任何网络相连,TCP/IP只能与自己通信,路由表只包含环回接口一项,手冲 哈哈哈啊哈哈哈
  2. 主机连在1个局域网上,只能访问局域网上的主机。这时候路由表包括两项:环回接口和局域网
  3. 主机通过单个路由器访问其他网络。路由表除了以上两项之外再加一项默认表指向该路由器
  4. 新增其他主机或路由器,则新增理解到这些主机或路由器的地址。

初始化路由表:
每当初始化1个接口时,就会自动创建一个直接路由。对于点对点链路和环回接口来说,路由是到达主机。对于广播接口来说,如以太网,路由是到达网络。

复杂路由表:
会有一个默认路由表项,是一个到达网络的间接路由

没有目的地的路由:

结果取决于该IP数据是由主机产生的还是转发的(如果主机被设置成路由器)
如果是主机产生的,则给主机的应用程序发送主机不可达或者网络不可达ICMP
如果是转发的则给原始发送端发送主机不可达ICMP

ICMP重定向差错

流程是:R1收到一个需要转发的数据报,转发给R2 然后R1检测到R2发送的接口与数据报到达的接口是相同的那R1会给发送端发送一份ICMP重定向差错。告诉原始发送端以后直接往R2发送数据即可
在这里插入图片描述
重定向ICMP一般用来让具有很少选路信息的主机逐渐完善路由表用 一开始只需要有默认路由。然后通过重定向逐渐完善即可

重定向报文格式:

在这里插入图片描述
重定向代码:
在这里插入图片描述
重定向报文的接受者必须查看3个IP
1.导致重定向的IP(IP首部)
2. 发送重定向路由的IP(IP数据报的源地址)
3. 应该采用的路由器IP地址(4-7字节,应该使用的路由器IP地址)

ICMP重定向报文生成规则

  1. 只能由路由器生成
  2. 报文只能为主机使用

ICMP路由器发现报文

初始化路由表的1种方法是指定静态路由(默认路由)然后再用ICMP重定向报文添加
还有一种方法是使用ICMP路由通告和发现报文
系统引导后多播或广播路由器请求报文, 然后1或多路由器发送一份通告报文以示响应。并且路由器定期多播或广播他们的路由器通告报文,以便主机相应的更新路由表
报文格式由RFC1256确定:
在这里插入图片描述
在这里插入图片描述
通告报文中的地址数表示通告报文中所含的地址数量
地址项大小值是指每个路由器地址32Bit字的数目,始终为2
生存时间是指通告地址有效的时间
优先级是一个有符号的32bit整数。同一子网下值越大说明优先级越高
优先级位0x80000000说明对应的地址不能作为默认路由器地址使用。优先级一般为0

路由器操作

路由器启动后会定期发送通告报文,每次通告报文发送相隔450~600秒钟左右
1份通告报文的默认生命周期位30分钟
当路由器上面某个接口关闭了,路由器可以在该接口上发送最后1份通告报文。生命周期字段设为0
监听请求报文以响应

主机操作

系统引导时每3秒发送一次请求报文,一旦有路由器接受并响应了(正确收到通告报文),则停止发送
监听路由器发起的通告报文,以改变自身的路由表
如果没有收到来自默认路由器的通告报文,则默认路由器则为超时
默认路由器会每10分钟发送通告保温。报文的生命周期为30分钟。这样就不会导致超时了

发现报文一般用用户进程来创建和处理。
不能保证所有的操作系统都支持该ICMP报文

发布了239 篇原创文章 · 获赞 31 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/soulwyb/article/details/103140357