选路是IP最重要的功能之一。IP层工作流程如下:
选路的原理
IP层进行的选路实际上是一种选路机制,它搜索路由表,并决定向哪个网络接口发送分组。这区别于选路策略,它只是一种决定把那些路由放入路由表的规则。IP执行选路机制,而路由守护程序一般提供选路策略。
在命令提示符窗口输入netstat -rn命令可以查看路由表。
动态选路协议
以静态选路配置接口时,以默认生成路由器表项(对于直接相连的接口),或通过ICMP重定向生成表项。在网络很小,且与其它网络只有单个连接点且没有多余路由时,可以采用这种方法,否则使用动态选路。
当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,就出现了动态选路。路由器上有一个进程称为路由守护程序,它运行选路协议,并根据它从相邻路由器接收到的信息,更新内核中的路由表。
RIP:选路信息协议
RIP报文包含在UDP数据报中,其报文格式如下:
命令字段为1表示请求,2表示应答。采用这种20字节格式的RIP报文可以通告多达25条路由。上限25是用来保证RIP报文的总长度为20*25+4=504,小于512字节。由于每个报文最多携带25个路由,因此为了发送整个路由表,经常需要多个报文。
RIP的问题:
- RIP没有子网地址的概念;
- 在路由器或链路发生故障后,需要很长时间才能稳定下来;
- 度量最大值为15限制了使用RIP的网络大小;
OSPF:开放最短路径优先
OSPF是除了RIP外的另一个内部网关协议,它克服了RIP所有限制。与采用距离向量的RIP协议不同的是,OSPF是一个链路状态协议。距离向量是指RIP发送的报文包含一个距离向量(跳数),每个路由器都根据它所接受到邻站的这些距离向量来更新自己的路由表。在一个链路状态协议中,路由器并不与其邻站交换距离信息,它采用的是每个路由器主动测试与其邻站相连链路的状态,将这些信息发送给它的其它邻站,而邻站将这些信息在自治系统中传播出去,每个路由器接受这些链路状态信息,并建立起完整的路由表。
OSPF与RIP的不同点在于,OSPF直接使用IP,即它并不使用UDP或TCP。
BGP:边界网关协议
BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。
BGP使用TCP作为其传输层协议。
CIDR:无类型域间选路
CIDR的基本观点是采用一种分配多个IP地址的方式,使其能够将路由表中的许多表项总和成更少的数目。