4.4 IP数据报的发送和转发过程
# 4.4 IP数据报的发送和转发过程
本节课我们介绍IP数据报的发送和转发过程,IP数据报的发送和转发过程包含以下两部分,一部分是主机发送IP数据报,另一部分是路由器转发IP数据报。
需要说明的是为了将重点放在TCP协议站的网际层,发送和转发IP数据报的过程上,在本节课的举例中,我们将忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程,以及以太网交换机自学习和转发帧的过程。下面我们就来举例说明,IP数据报的发送和转发过程。
在下图所示的小型互联网中,路由器的接口0直连了1个交换式以太网,接口1也直连了一个交换式以太网,我们给该网络分配了这样的网络地址和子网掩码,给网络中的各主机和路由器的接口,配置了相应的IP地址和子网掩码。如图所示,
我们给另一个网络分配了这样的网络地址和子网掩码,给网络中的各主机和路由器的接口,配置了相应的IP地址和子网掩码,如图所示。
我们知道从一个网络中的主机之间可以直接通信,这属于直接交付。不同网络中的主机之间的通信,需要通过路由器来中转,这属于间接交付。
那么源主机如何判断出目的主机是否与自己在同一个网络中?我们来举例说明,假设主机C要给主机F发送IP数据报,主机C将自己的IP地址和子网掩码相与,就可以得到主机C所在网络的网络地址。
既然主机C要给主机F发送IP数据报,主机C肯定知道主机F的IP地址,否则就没法发送了。主机C将主机F的IP地址与自己的子网掩码相遇,就可得到目的网络地址,
该地址与主机C的网络地址不相等,因此主机C就知道了主机F与自己不在同一个网络,他们之间的通信属于间接交付,主机C需要将IP数据报传输给路由器,由路由器将IP数据报转发给主机F。
那么主机C又是如何知道应该把IP数据报交给哪个路由器进行转发,实际上用户为了让本网络中的主机能和其他网络中的主机进行通信,就要必须给其指定本网络中的一个路由器,由该路由器帮忙进行转发,所指定的路由器也被称为默认网关。
对于本例我们可以将路由器接口0的IP地址指定给该接口所直连网络中的各个主机作为默认网关。
同理可将路由器接口1的IP地址指定给该接口所直连网络中的各个主机作为默认网关,这样当本网络中的主机要和其他网络中的主机进行通信时,会将IP数据报传输给默认网关,由默认网关帮主机将IP数据报转发出去,
假设本例中的主机A要给主机D发送IP数据报,这属于间接交付,主机A会将该IP数据报传输给自己的默认网关,也就是图中所示的路由器。那么当路由器收到IP数据报后,又是如何转发的呢?路由器首先会检查IP数据报的首部是否出错,若出错则丢弃该IP数据报,并通告源主机,若没有出错则进行转发。
路由器根据IP数据报首部中的目的地址,在自己的路由表中查找匹配的路由条目,若找到匹配的路由条目,则转发给路由条目中指示的下一跳,若找不到则丢弃该IP数据报,并通告源主机。
为了简单起见,我们假设本地中的IP数据报首部没有出现差错,路由器取出IP数据报首部各地址字段的值,源地址字段的值为主机A的IP地址,目的地址字段的值为主机D的IP地址,接下来路由器就要对该IP数据报进行查表转发了,这是路由器的路由表。
当我们给路由器的接口配置IP地址和子网掩码时,路由器就知道了自己的该接口与哪个网络是直连的。例如在本例中接口0所直连的网络是192.168.0.0,相应的地址源码为255.255.255.128,不需要下一跳路由器,因为接口0与该网络是直连的,接口1所直连的网络是192.168.0.128,相应的地址源码为255.255.255.128,不需要下一跳路由器,因为接口1与该网络是直连的,
需要说明的是路由表中可能还会有其他路由条目,这可以是用户或网络管理员手工配置的静态路由,也可以是路由器使用路由协议自动获取到的动态路由。我们将在后续课程中详细介绍这部分内容,本节课就不再赘述了。
接下来路由器根据IP数据报的目的地址,在自己的路由表中查找匹配的路由条目,逐条检查路由条目,将目的地址与路由条目中的地址掩码相与得到目的网络地址,该目的网络地址与路由条目中的目的网络地址不相同,则这条路有条目不匹配。
再检查下一条路由条目,将目的地址与下一条路由条目中的地址源码相遇,得到目的网络地址,该目的网络地址与路由条目中的目的网络地址相同,则这条路由条目就是匹配的路由条目,按照他的下一跳指示,也就是从接口1转发该IP数据报,这样主机D就可以收到路由器转发来的该IP数据报。
需要说明的是我们这里所介绍的路由器查表转发IP数据报的过程,只是为了让同学们理解其最基本的工作原理,在路由器的实际研发过程中,需要设计很好的数据结构,以便提高查找速度。
再来看这种情况,假设主机A给本网络上的各设备发送了一个广播IP数据报,在数据报首部中的目的地址字段,可以填写的目的地址为192.168.0.127,这是本网络的广播地址,也可以填写255.255.255.255,这是受限的广播地址。该网络中的各设备都会收到该广播IP数据报,但是路由器收到后并不会转发该数据报,也就是说路由器是隔离广播域的,这是很有必要的。
试想一下,如果因特网中数量巨大的路由器,收到广播IP数据报后都进行转发,则会造成巨大的广播风暴,严重浪费因特网资源。同理,主机A给另一个网络发送广播IP数据报,在数据报首部中的目的地址字段,填写的目的地址为192.168.0.255,这是网络192.168.0.128的广播地址。主机A将该广播IP数据报传输给路由器,希望由路由器帮其转发,但路由器判断出这是广播IP数据报,不会转发。
接下来我们来做几个相关的练习题,这是计算机专业考研全国统考,计算机网络部分2010年的提38,
答案是选项D。中继器和集线器工作在物理层,既不隔离冲突域,也不隔离广播域。
网桥和交换机工作在数据链路层可以隔离冲突域,不能隔离广播域。
路由器工作在网络层即隔离冲突域,也隔离广播域。
因此本题的答案是选项D
再来看2012年的题37,
答案是选项C。IP路由器工作在TCPIP体系结构的网际层,TCPIP体系结构的网际层,并不负责可靠传输,也就是不能确保传输的IP分组不丢失。
IP路由器对收到的IP分组头进行差错校验,当发现错误时会丢弃该IP分组,并向原主机发送ICMP差错报告报文。
综上所述,题目中的描述三是错误的,利用排除法可知选项C正确,题目中的其他描述项都是正确的。
再来看2015年的题47的第三问,我们将题目所给的主机一的配置信息标注在它的旁边,从子、网掩码和主机一的IP地址的CIDR表示方法都可以看出网络前缀为24个比特,而3W服务器的IP地址的网络前缀也是24个比特,并且与主机一的网络前缀相同,因此主机一可以访问3W服务器,因为从IP地址配置以及物理连接方面看,主机1和WWW服务器在统一网络中,
但是主机一不能访问INTERNET,因为他的默认网关错误的配置成了DHCP服务器的IP地址。
DHCP服务器不具备路由器的功能,无法将IP分组转发到INTERNET,
如图所示主题一的默认网关,错误的指定为了DHCP服务器的IP地址,正确的配置应该指定为路由器该接口的IP地址。
将本节课的内容小结如下