您的位置 首页 > 游戏加速攻略 >

TCP/IP详解卷一笔记之ip选路和动态路由协议

IP选路http://www.jisujiasuqi.com/

 

选路是IP最重要的功能之一。是IP层处理过程的简单流程。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。在后一种情况下,主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就要被直接丢弃。(悄无声息)

 

1. 路由表

路由操作对于运行TCP/IP的系统来说是最基本的,不管是主机还是路由器。路由表项的内容很简单,包括:5bit标志、目的IP地址(主机、网络或默认)、下一站路由器的IP地址(间接路由)或者本地接口的IP地址(直接路由)及指向本地接口的指针。主机表项比网络表项具有更高的优先级,而网络表项比默认项具有更高的优先级。

TCP/IP详解卷一笔记之ip选路和动态路由协议

 

 

U 该路由可以使用。G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。D 该路由是由重定向报文创建的。M 该路由已被重定向报文修改。

标志G是非常重要的,因为由它区分了间接路由和直接路由(直接路不设置标志G)。

其区别在于,发往直接路由的分组中不但具有指明目的端的IP地址,还具有其链路层地址。当分组被发往一个间接路由时,IP地址指明的是最终的目的地,但是链路层地址指明的是网关(即下一站路由器).

 

路由匹配规则

先精准匹配表项,寻找和目标ip所在网络相同的网络地址。

如果找不到,则会使用默认路由。

如果数据报是由本地主机产生的,那么就给发送该数据报的应用程序返回“主机不可达差错”或“网络不可达差错”。如果是被转发的数据报,就给原始发送端发送一份ICMP主机不可达的差错报文。

 

icmp 重定向差错

 

当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。 例如,设A为源主机,B,C为网关/路由器,A经过 B发往C ,B发现A可以直接发给C,就会发起icmp重定向差错? 那么 B如何得知 A可以直接连C 呢 ?

我们假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为R1是该主机的默认路由。R1收到数据报并且检查它的路由表,发现R2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。TCP/IP详解卷一笔记之ip选路和动态路由协议

 

 

上面的例子和图片是卷一的原文,我的理解是(以ABC为例),B发数据给R2时,发现数据也正从同一网络接口流入。也就是说,BC作为网关在同一个子网,那么A也可以直接发给C,又因为B是A的默认路由,那么其实ABC在同一个子网内。

 

重定向差错的作用是在 主机没有完善的路由表时,可以通过重定向差错逐步建立起 完善的路由表

 

系统产生的或转发的每份IP数据报都要搜索路由表,它可以被路由守护程序或ICMP重定向报文修改。系统在默认情况下不转发数据报,除非进行特殊的配置。用route命令可以进入静态路由,可以利用新ICMP路由器发现报文来初始化默认表项,并进行动态修改。主机在启动时只有一个简单的路由表,它可以被来自默认路由器的ICMP重定向报文动态修改。

 

icmp 路由发现

在主机引导的时候,一般会发送在网内广播一个路由请求的ICMP报文,而路由器则会回应一个路由通告报文。此外,路由其本身不定期的在网络内发布路由通告报文。根据这些报文,主机可以建立并完善路由表。路由器在一份通告报文中可以通告多个地址,并且给出每一个地址的优先等级,这个优先等级是该IP作为默认路由的等级,至于怎么算的就不深究了。

路由器一般会在450-600秒的时间间隔内发布一次通告,而一个给定的通告报文的寿命是30分钟。而主机在引导的时候会每三秒发送一次请求报文,一旦接受到一个有效的通告报文,就停止发送请求报文。

ip选路 流程图

这张图是我自己根据理解的TCP/IP 协议 所画的,如有不合理的地方请帮忙指出。

TCP/IP详解卷一笔记之ip选路和动态路由协议

 

 

动态选路协议

这一章真的看不懂

动态选路只是将 路由信息进行更新,ip选路的机制仍然没有变。

RIP:选路信息协议

先介绍RIP 协议

初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。目的UDP端口号是520(这是其他路由器的路由守护程序端口号)。 这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为16。这是一种要求另一端完整路由表的特殊请求报文。接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为16(度量为16是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由)。然后发回响应。接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。定期选路更新。每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。

缺点

由于每个路由器要将自己整个路由表发送给所有相邻路由器,路由信息量大,占较大的网络开销;好路由消息传播快,坏路由信息传播速度慢。网络出现故障,传播时间往往需要较长的时间(数分钟);存在路由同步(我的计算结果依赖于你,你的计算结果依赖于我),算法收敛速度慢,容易引发更新不一致;可扩展性不好,只能适用于小规模网络,一条路径上最多15个路由器;可产生路由环路,为避免路由环路需要特殊处理;RIP 中没有子网的概念

 

OSPF:开放最短路径优先

OSPF是除RIP外的另一个内部网关协议。它克服了RIP的所有限制。OSPF与RIP(以及其他选路协议)的不同点在于,OSPF直接使用IP。也就是说,它并不使用UDP或TCP

与采用距离向量的RIP协议不同的是,OSPF是一个链路状态协议。距离向量的意思是,RIP发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表。http://www.jisujiasuqi.com/

热门文章