路由与交换(第二版)
上QQ阅读APP看书,第一时间看更新

3.1 IP路由概述

3.1.1 IP路由过程

在TCP/IP网络中,大多数是通过路由器互连起来的,Internet就是成千上万个IP子网通过路由器互连起来的国际性网络。这种网络称为以路由器为基础的网络,形成了以路由器为结点的“网间网”。在“网间网”中,路由器不仅负责对IP分组进行转发,还负责与其他路由器进行联络,共同确定“网间网”的路由选择和维护路由表。

路由动作包括两项基本内容:寻址和转发。

寻址即判定到达目的地的最佳路径,由路由选择算法来实现。为了判定最佳路径,路由选择算法必须启动并维护包含路由信息的路由表,路由表中的路由信息依赖于所用的路由选择算法不同而不同。路由选择算法将收集到的不同信息填入路由表中,根据路由表可将目的网络与下一站(Nexthop)的关系告诉路由器。路由器间互通信息进行路由更新,更新维护路由表使之正确反映网络的拓扑变化,并由路由器根据度量来决定最佳路径。这就是路由选择协议。例如,路由信息协议(RIP)、开放式最短路径优先协议(OSPF)和边界网关协议(BGP)等。

转发是按寻址的最佳路径传送数据分组。当路由器从某个接口中收到一个数据包时,路由器根据数据包中的目的网络地址,若不在此接口的同一网络中,则查找路由表中查找,找到路由表中最匹配的表项,取出目的网络所对应的接口,并从此接口转发出去。如果路由器没有相应的表项,它就不知道如何发送分组,只能将该分组丢弃。这就是路由转发协议。有些教材把此协议称作被路由协议,它以寻址方案为基础,为分组从一台主机发送到另一台新主机提供充分的第三层地址信息的网络协议。它定义了分组所包含的字段格式,为确保数据能正确地传输到目的地,对数据进行分组、封装、传输。被路由协议是在源和目标终端系统中,为接收和处理这些信息,所定义的规则标准集合。常见的被路由协议有Internet协议(IP)、网间分组交换(IPX)、AppleTalk。

路由转发协议和路由选择协议是相互配合又相互独立的概念,前者使用后者维护的路由表,后者要利用前者所提供的功能来发布路由协议数据分组。通常在本书中所提到的路由协议,大都指路由选择协议。

下面根据图3-1详细说明主机A发送ping命令到主机B后,不同网络之间的IP的路由过程。

图3-1 IP路由过程

1.在主机A上

(1)因特网控制报文协议(ICMP,由ping命令产生)创建一个回应请求数据包。

(2)ICMP把这个有效负荷交给因特网协议(IP),IP协议会创建一个数据包。此数据包将包含源IP地址192.168.1.1、目的IP地址192.168.2.2。

(3)数据包创建好后,IP协议比较源和目的IP地址是否在同一网络,不同网络时,主机A将把此数据包发送到自己的默认网关192.168.1.254(Windows TCP/IP协议中设定的默认网关)。

(4)主机A要能够发送这个数据包到默认网关,必须知道路由器的F0/0(其IP地址被配置为192.168.1.254)的MAC地址,以便将数据包下传到数据链路层,并形成数据帧,数据帧头中有源MAC、目标MAC地址。

(5)怎样根据路由器的F0/0的IP地址找到其对应的MAC地址呢?通过在主机A中查找ARP缓存(Windows中用arp –r命令查看ARP表,将显示IP地址Internet Address、与MAC地址Physical Address的对应关系),如果已经被解析,把192.168.1.254所对应的MAC地址(假定为0000.0000.0000)取出产生数据帧。

(6)如果主机的ARP缓存中尚未被解析,主机A将在本地网络中发一个ARP广播以搜索192.168.1.254的MAC地址。路由器F0/0收到此广播,并响应这个请求提供F0/0的MAC地址,主机A缓存此地址到ARP表中,同时路由器也缓存主机A的MAC地址(假定为AAAA.AAAA.AAAA)到自己的ARP表中。

(7)主机A把数据包、源和目标的MAC地址交给数据链路层,局域网驱动器通过局域网提供媒体访问,形成以太网数据帧(此帧的目标MAC:AAAA.AAAA.AAAA,源MAC:0000.0000.0000,目标IP:192.168.2.2,源IP:192.168.1.1)。

(8)主机A把此数据帧交给物理层,以一次一个比特的方式从物理媒体双绞线上送到路由器。

2.路由器

(1)路由器从物理媒体双绞线上收到一个个比特后,按帧进行CRC校验,若不匹配,将丢弃此数据帧。

(2)路由器从帧中抽出数据包,传给IP层。

(3)IP层收到数据包后,取出其目标IP地址192.168.2.2,查找路由表,找到其路由条目,属于目标网络192.168.2.0,由F0/1接口转出。

(4)路由器将此数据包发到F0/1的缓冲区内。

(5)路由器需要了解目标192.168.2.2的MAC地址,才能封装成数据帧,从F0/1接口发向目标(假定F0/1的MAC为:1111.1111.1111),因此路由器首先检查自己的ARP缓存表(在路由器上用show arp命令查看ARP表),如果主机B的硬件地址已经被解析,表中有主机B的IP地址192.168.2.2所对应的MAC地址(如BBBB.BBBB.BBBB),路由器就将此数据包、源和目标的MAC地址传给数据链路层以便形成以太网数据帧,此帧的目标MAC:BBBB.BBBB.BBBB,源MAC:1111.1111.1111,目标IP:192.168.2.2,源IP:192.168.1.1)。

(6)如果没被解析,路由器将从F0/1向目标网络192.168.2.0广播一个ARP请求,主机B响应后,返回其MAC地址(BBBB.BBBB.BBBB),路由器将其放到自己的ARP缓存中。

(7)路由器将此数据帧从F0/1接口,通过物理媒体双绞线一个比特一个比特发送到主机B。

3.主机B

(1)主机B接收到此帧并进行CRC校验。如果结果与FCS字段中的内容不匹配,将丢弃此帧,匹配时,再检查MAC地址,取出其IP包,交给网络层。

(2)网络层根据数据包的协议字段,交给ICMP。

(3)ICMP应答这个请求,通过丢弃收到的数据包,并随后产生一个新的回应应答。

(4)在此应答中,新创建一个数据包,其源方(主机B)和目的方(主机A)的IP地址、协议字段,同样按照前面的步骤进行发送。

4.主机A

主机A收到应答后,ICMP发送一个惊叹号(!)到显示器来表示它已经接收到一个回复。之后ICMP尝试继续发送4个应答请求到目的主机。