1.3 因特网控制报文协议(ICMP)
ICMP被主机和路由器用来彼此沟通网络层的信息,最典型的用途是差错报告。通常遇到的如目的网络不可达之类的错误报文就是在ICMP中产生的。ICMP通常被认为是IP的一部分,但是从体系结构上它是位于IP之上的,因为ICMP报文是承载在IP分组中的。即ICMP报文是作为IP有效载荷承载的,就像TCP和UDP报文段一样。ICMP报文类型如下图:
另一种ICMP报文是源抑制报文,拥塞的路由器向主机发送一个该报文,以强制主机减小其发送速率。但TCP有自己在运输层操作的拥塞控制机制,所以该报文在实际中很少使用。
1.4 IPV6
1.4.1 IPV6数据报格式
IPV6最重要的变化显示在数据报格式中
- 扩大的地址容量:将IP地址的长度从32比特增加到128比特。除了单播和多播地址外,还引入了任播地址,该地址可以使数据报交付给一组主机中的任意一个。
- 高效简化的40字节首部:允许更快处理IP数据报。
- 流标签与优先级:IPV6有流的定义,该字段可以给属于特殊流的分组加上标签。
- 版本:注意并不是将该字段置为4就创建一个合法的IPV4数据报。
- 流量类型:与IPV4中的TOS字段(服务类型)类似。
- 有效载荷长度:该16比特作为一个无符号整数。
- 下一个首部:标识数据报中的内容需要交付给哪个协议(如TCP或UDP)。
- 跳限制:转发数据报的每台路由器将对该字段内容减1。
可以看到下面几个字段在IPV6中不存在了:
- 分片/重新组装:IPV6不允许在中间路由器上进行分片和重新组装,只能在源和目的地上执行。如果路由器收到的IPV6数据报太大就丢弃,并发送分组太大的ICMP差错报文。
- 首部校验和:在运输层和数据链路层协议执行了校验操作,网络层中在有该功能就多余了。
- 选项:不再是标准IP首部的一部分了。
1.4.2 从IPV4到IPV6的迁移
IPV6可以向后兼容,即可以发送,路由和接收IPV4数据报,但是IPV4是不能处理IPV6数据报的。
最直接的方法是双栈方法,即使用该方法的IPV6结点还具有完整的IPV4的实现,这样的结点被称为IPV6/IPV4结点,它具有发送和接收IPV4和IPV6两种数据报的能力。如下图所示:
其中,结点B要生成一个IPV4数据报给C,但是在执行转换时,IPV6数据报中的一些IPV6特定的字段会在IPV4数据报中无对应部分,所以这些字段的信息会被丢失。D到E的IPV4数据报将不含A发出的初始IPV6数据报的所有字段。
另一种双栈方法是建隧道,可以解决上述问题。如下图所示:
假设B要和E使用IPV6数据报进行交互。两台IPV6路由器间的中间IPV4路由器的集合称为一个隧道。借助于隧道,B可以将整个IPV6数据报放在一个IPV4数据报的数据字段中,隧道中间的路由器完全不知道IPV4数据报中含有一个IPV6数据报。
2.路由选择算法
主机通常直接与一台路由器相连接,该路由器为该主机的默认路由器,又称第一跳路由器。将源主机的默认路由器称为源路由器,目的主机的叫目的路由器。路由选择算法的目的就是找到一条从源路由器到目的路由器的好路径。
对路由选择算法的广义分类是根据该算法是全局式还是分散式的来区分:
- 全局式路由选择算法:该算法具有关于连通性和链路费用方面的完整信息。具有全局状态信息的算法被称为链路状态(LS)算法。
- 分散式路由选择算法:以迭代式,分布式的方式计算出最低费用路径。每个结点只有有其直接相连链路的费用信息。通过与相邻结点交换信息来计算到目的结点的最低费用路径。距离向量(DV)算法就是分散式的算法。
另一种广义分类是根据算法是静态的还是动态的分类:
- 静态路由选择算法:路由的变化非常缓慢,通常需要人工干预。
- 动态路由选择算法:能够当网络拓扑和流量负载变化时改变路由选择路径。
第三种分类是根据它是负载敏感还是迟钝的进行划分:
- 负载敏感算法:当前的拥塞链路与高费用相联系,拥塞的链路费用就高,如ARPAnet。
- 负载迟钝算法:费用不明显反应出当前的拥塞水平,如RIP,OSPF和BGP。
2.1 链路状态路由选择算法(LS算法)
常见的算法有Dijkstra算法和Prim算法。在运行Dijkstra算法前需要知道网络的完整信息。当LS算法终止时,对于每个结点,都能得到从源结点沿着它的最低费用路径的当前结点。下图是结点u的转发表:
2.2 距离向量路由选择算法(DV算法)
DV算法是一种迭代的,异步的和分布式的算法,LS算法是一种使用全局信息的算法。说它是分布式的是因为每个结点都要从一个或多个直接相连邻居接收某些信息,然后将计算结果分发给邻居。说它是迭代的是因为此过程要持续到邻居间无更多信息要交换为止。异步是因为它不要求所有结点间步伐一致地操作。
该算法的结点具有的唯一信息是它到直接邻居的链路费用和它从这些邻居接收到的信息,每个结点等待来自任何邻居的更新 。
2.3 层次路由选择
随着路由器数目变得很大,涉及的开销也将变得相当高,且某些公司想按自己意愿运行路由器或对外隐藏其网络的内部组织。这两个问题可以通过自治系统(AS)来解决。每个AS由一组通常处在相同管理控制下的路由器组成,在相同的AS中的路由器全都运行相同的路由选择算法,且拥有彼此的信息。在一个AS内运行的路由选择算法叫自治系统内部路由选择协议。负责向本AS外的目的地转发分组的路由器叫做网关路由器。