tcp/ip学习笔记--第9章 ip routing(选路)

 

参考:

https://download.csdn.net/download/qq_31567335/10213200

感觉这章比较难,虽然用心读了很久,但是很多细节还是没有理解清楚。

 

我们都知道,一个ip数据包是通过路由器,逐跳发往目的地的。这一章,讲的就是如何选择下一跳路由器的知识。首先讲了选路原理,简单来说是通过维护一张路由表,并在选路的时候搜索这张路由表。然后讲到,在搜索路由表的过程中,可能发现没有匹配的选项,这时候就会产生ICMP主机或网络不可达错误。还介绍了用于优化路由表的ICMP重定向,以及发现路由器的路由发现协议。

 

1.选路原理。

在搜索ip路由表确定下一跳地址的时候步骤如下:

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

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

3)使用默认项。

这个选路的操作步骤可以称之为路由机制(routing mechanism),而路由策略(routing policy)是用来决定哪些路由项应该被加入这个表中,路由策略一般是由路由守护进程提供的。

使用”netstat -nr“命令可以查看主机上的路由表,作者的网络上的一个简单的路由表,如下图:

说说其中的flag项,比较重要,总共有5种标志。

U:表明这个路由器活着

G:表明下一跳是到一个网关,而不是与目的地直接相连。

H:表明最终的目的地是一个主机,如果没有这个标志则说明最终目的地是一个网络。上面提到在搜索ip路由表确定下一跳地址的时候,会先匹配主机,再匹配网络号,就是通过这个标志来区别是主机还是网络号的。

D:是由ICMP重定向报文创建起来的

M:被ICMP 重定向报文修改过

 

???对于这个路由表中的最后一条记录实在是不太理解:13.34就是svr4自己,为什么发往13.32这个网络的下一跳地址都是发给自己呢?而且没有G标志,也就是说认为这是直达的。比如说svr4要发送13.35,他就发给自己就行了吗?不需要知道13.35的mac地址?

 

2.路由表的初始化

route 命令显式操作:

一般在系统启动的时候会执行route add命令显示的操作路由表,用法如下:

route add destination gateway metric

最后一个参数代表路由的度量 ( m e t r i c )。r o u t e命令在度量值大于0时要为该路由设置G标志,其他则不设置G标志 。

路由发现协议:

一般认为,主机在引导以后要广播或多播传送一份路由器请求报文。一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送它们的路由器通告报文,允许每个正在监听的主机相应地更新它们的路由表。 
请求和通告报文格式如下:

需要注意的是,ICMP路由发现协议只会修改默认条目。(???为什么呢)

 

 

3.ICMP主机或网络不可达错误

在搜索路由表选择下一跳的过程中,如果默认路由选项被删除,同时主机号和网络号都没有匹配的条目,那么路由器将会产生一个主机或网络不可达的错误,以ICMP报文的形式发送给源主机。

 

4.ICMP 重定向错误

当I P数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送I C M P重定向差错报文给I P数据报的发送端。同时路由器也会把初始数据包向它的目的地转发。ICMP重定向报文的格式如下:

书上写到,在产生ICMP重定向报文报文以前,以下条件必须全部满足:

1) 出接口必须等于入接口。

2) 用于向外传送数据报的路由不能被 I C M P重定向报文创建或修改过,而且不能是路由器的默认路由。
3) 数据报不能用源站选路来转发。
4) 内核必须配置成可以发送重定向报文

 

 

首先,不太明白第二三个条件。更重要的是,书中似乎没有说明,是只要满足这些条件就一定产生ICMP重定向报文,还是说是别人负责产生重定向报文,只是发送之前检查这些条件即可。如果是后者,也并没有提到由谁来产生。

接收到重定向报文的主机也要进行一些检查,这是为了防止路由器或主机的误操作,以及恶意用户的破坏,导致错误地修改系统路由表。
1) 新的路由器必须直接与网络相连接。
2) 重定向报文必须来自当前到目的地所选择的路由器。
3) 重定向报文不能让主机本身作为路由器。
4) 被修改的路由必须是一个间接路由。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值