首页 > 代码库 > IP路由选择

IP路由选择

IP路由选择

 
 
 
 
IP协议提供了一种不可靠、无连接的数据传输服务:
1、不可靠(unreliable):不能保证IP数据报能成功到达目的地;如果发生某种错误,比如路由器的缓冲区已满,会直接丢弃该数据报,然后发送ICMP消息给信源端;
2、无连接(connectionless):每个数据报的处理是相互独立的,IP数据报可以不按发送顺序接收;每个数据报都是独立地进行路由选择,可能选择不同的线路;
 
 
IP数据报格式

 

IP的目的就是要提供一个可以包含多个物理网络的虚拟网络,并提供无连接的数据报交付服务。

当一个主机A要向另一个主机B发送数据报时,先要检查目的主机B是否与源主机A连接在同一个网络上:

如果是,就将数据报直接交付给目的主机B而不需要通过路由器;

如果不是,则应该将数据报发送给本网络上的某个路由器,由该路由器按照转发表指出的路由将数据报转发给下一个路由器,这叫做间接交付

 

 

 综上:

1、连接在同一个网络上的两台服务器(具有相同的网络地址)之间的IP数据报传输不涉及路由器,发送方把数据报封装在物理帧中,把目的IP地址和一个物理地址绑定在一起,把产生的帧直接发送到目的站。

2、间接交付比直接交付要困难一些,因为发送方必须标识数据报要发送到的一个路由器,这个路由器必须把数据报转发到它的目的网络。

下面将重点讨论间接交付,也就是IP数据报的路由选择问题。

 

 

TCP/IP互联网中的路由器形成了一个协作的互连结构,数据报从一个路由器传输到下一个路由器,直到到达某个可以直接交付数据报的路由。

下面是一个典型的路由器结构:

 

 

 

路由器工作在网络层,数据链路层剥去帧首部和尾部后,将数据报送到网络层的队列中排队等待处理(会产生一定的延时)

 

通常的IP选路算法是利用每台机器中的一个IP选路表,该表存放着有关可能的目的站以及怎样到达目的站的信息;
在进行分组投递时,路由器分两个阶段:1、如何到达目标主机的网络;2、分组到了目标网络后,由终端路由器将分组送到目标主机。
一般来说,第一个阶段是路由的实质阶段,它关系到分组穿越不同网络间的路径。所以,在网络上路由是以目标IP地址中的网络号为依据的,这样可以只关心目标网络的信息,而不用关心目标主机的信息,从而简化路由表,提高路由效率。

典型地,路由表包含许多(N,R)向量,其中N是目的网络的IP地址,R是为了到达相应目的网络要经过的下一个路由器(next hop)的IP地址。

 

 

如上图,IP层在内存中有一个路由表,它包含
1、目的IP地址,可以是一个完整的主机地址(有非0 的主机号),也可是一个网络地址(即网段,主机号为0);
2、next-hop router的IP地址,或者有直接连接的网络IP地址;
3、标志,指明下一站路由是路由器,还是一个直接相连的接口;
4、网络接口(网卡);
 
注意:在路由表中,一般还有默认路由(网络号为0.0.0.0)。当表中没有到达目标网络的下一跳时,分组将送到默认路由器。使用默认路由器有助于保持选路表较小,特别是对于那些只能访问到一个路由器的主机。
 
转发数据报时,搜索路由表,寻找能与目的IP地址匹配的表目,优先级:主机地址匹配-->网络地址匹配-->默认表目(default);
如果上述匹配都不成功,那么该数据报就不能被传送,此时一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误;
 

IP选路只会修改IP报文中的ttl字段(每经过一跳,ttl减1,值为0时抛弃该分组),但不改变报文其它内容。

当路由器收到待转发的数据报,不是将下一跳路由器的IP填入IP数据报,而是送交下层的网络接口;

网络接口根据ARP负责将下一跳路由器的IP地址转换成MAC地址,并将此MAC地址放在链路层的MAC帧的首部,然后根据这个MAC地址找到下一跳路由器。

 
 
 
 

IP路由选择