IP转发

当主机通信的目的地是直接相连的主机(例如点到点链接)或共享网络(例如以太网),IP数据报直接发送到目的地,不需要或者不适用路由器。否则,主机将数据报发送到一台路由器,由该路由器将数据报交付到目的地,这个过程可能要经过多个路由。这就是IP转发。

大多数主机既可配置为路由器,也可配置为主机。主机与路由器的处理IP数据报的区别在于:主机不转发那些不是由它生成的数据报,路由器会这样做。在整个IP转发方案中,IP协议可接收一个数据报,它可来自同一主机上的其他协议(TCP、UDP等),也可来自一个网络接口。IP层包括一些位于内存中的信息,通常称为路由表或转发表,每次转发一个数据报时需要从中查找信息。当一个网络接口接收到一个数据报时,IP模块首先检查目的地址是否为自己的IP地址(与自己的某个网络接口相关的IP地址),或是它可以接收其流量的一些其他地址,例如IP广播或组播地址如果是的话,数据报交付给由IPv4头部的协议字段或IPv6头部的下一个头部字段中指定的协议模块(IP头部内容详见→传送门1: IP数据报,传送门2: IPv6扩展头部)。如果不是:(1) 如果IP层配置为一台路由器,则作为输出的数据报处理,转发该数据报;(2) 数据报被丢弃。在某些情况下,ICMP消息可能发送回源节点,以表明发生了一个错误。

转发表

IP协议标准并没有规定转发表所需的精确数据,这个选择工作留给IP协议的实现者。但IP转发表通常需要包含几个关键信息:

·目的地:一个32位IPv4地址字段或128位的IPv6字段,用于与一个掩码操作结果相匹配。针对涵盖所有目的地的“默认路由”的情况,目的地可以简单地设为零;对于仅描述一个目的地的“主机路由”的情况,目的地可设为完整长度的IP地址。

·掩码:一个32位IPv4字段或128位的IPv6字段,用作数据报目的IP地址按位与操作的掩码。掩码结果与转发表条目中的多个目的地进行比较。

·下一跳:它是下一个IP实体(路由器或主机)的32位IPv4地址或128位IPv6地址,数据报将被转发到该地址。下一跳实体通常在一个网络中由执行转发查找的系统所共享,这意味着它们共享同一网络前缀。

·接口:接口包含一个由IP层使用的标识符,以确定将数据报发送到下一跳的网络接口。例如802.11无线接口、有线的以太网接口或一个与串行端口的PPP接口。如果转发IP系统也是IP数据报的发送方,该字段用于选择输出数据报的源IP地址。

目的地 掩码 网关(下一跳) 接口
0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.100
10.0.0.0 255.255.255.255 10.0.0.100 10.0.0.100

IP转发逐跳进行,路由器和主机不包含到任何目的地的完整转发路径(除了那些直接连接主机或路由器的目的地)。IP转发只提供数据报发送的下一跳实体的IP地址。它假设下一跳比当前“更接近”目的地,并且自己与下一跳实体之间没有环路。路由协议有多种,例如RIP、OSPF、BGP和IS-IS。

转发过程

当一台主机或路由器中的IP层需要向下一跳的路由器或主机发送一个数据报时,它首先检查数据报中的目的IP地址,在转发表中使用该地址来执行最长前缀匹配算法:对转发表的每一个条目,将其中的掩码m与目的地址D进行按位与操作,得到的结果与条目中的目的地字段d进行比较,若相等则满足匹配条件。所有条目中选出最长前缀(掩码m中设置1的位数最多)作为下一跳IP地址。如果在转发表中没有发现匹配的条目,则这个数据报无法交付。

通常情况下,如果在本地出现无法交付的数据报,则向生成数据报的应用程序返回一个“主机不可达”错误。在一台路由器上,ICMP消息通常返回给发送数据报的主机。

在某些情况下,可能有多个条目是匹配的(即1的位数一样)。在这种情况下,协议标准没有规定终端系统的具体行为,而是由具体操作系统的协议实现来决定。通常是简单地选择第一个匹配的结果。更复杂的系统可能尝试在多个路由上平衡负载或拆分流量。

直接交付和间接交付

当所有系统使用相同的网络前缀(例如处于同一以太网中),可以采用直接交付;另一种为间接交付。

直接交付不需要路由器,IP数据报封装在一个链路层帧中,它可以直接识别数据来源或目的地。间接交付涉及路由器,数据转发到这台路由器,并使用该路由器的链路层地址作为目的地址。直接交付中,路由器的IP地址没有出现在IP数据报中(除非路由器自己是源主机或目的主机,或者使用源路由时)。

在直接交付中,匹配路由条目中的网关(下一跳地址)包含发送主机的网络接口(没有涉及路由器),说明采用直接交付来发送数据报。这个数据报被封装在一个低层帧中,并发送给目的主机。如果目的主机的低层地址未知,可能需要使用ARP协议(对于IPv4)或邻居发现协议(对于IPv6)操作,以确定正确的低层地址。如果已经知道该地址,数据报中的目的地址是目的主机的IP地址,并将其放入低层头部的目的IP地址字段中。

在间接交付中,IP地址对应于前面的源主机和目的主机,但低层地址不对应。实际上,低层地址决定哪台机器在每跳的基础上接收包含数据报的帧。在使用源路由的情况下,路由器对数据报进行网络地址转换(NAT),以使它在Internet中可路由。对数据报进行NAT处理,目的是生成新的源地址以便转发。

IP单播转发关键

·前面说到过默认路由的设置,实际上在Internet边缘,大多数主机和路由器会使用一个对所有地址而不是而不是本地网络中的目的地址的默认路由,这是因为只有一个借口可连接Internet的其他部分。

·在传统的Internet中,数据报中的源IP地址和目的IP地址从不改变。除非是在使用源路由的情况下(间接交付中有提到),或沿着传输路径遇到其他功能(例如NAT),否则情况永远如此。

·不同的低层头部用于每种链路上的寻址,低层的目的地址(如果存在)总是包含下一跳的低层地址。因此,当数据报沿着到目的地的每个跳步移动时,低层头部经常发生变化。

 

                                                                                             本文部分内容摘自《TCP/IP详解:卷1(中文版)第2版》

你可能感兴趣的:(学习笔记,计算机网络)