5.2.10 IP分组的转发(一)
我们已经知道对于IP协议来说提供的是无连接、不可靠、尽力而为的IP分组交付服务,这里我们就学习一下一个IP分组是如何从源主机交付给目的主机的。如果在因特网上有两台主机发送数据的时候,分组究竟是如何经过若干台路由器的转发到达目的地的呢?首先我们要先认识一下工作在网络层中的一个非常重要的网络设备----路由器。
一、路由器
-
路由器实际上就是一种通信专用的计算机,具有和计算机类似的结构
-
每台路由器与两个或两个以上的物理网络有直接的连接。路由器的每个网络接口(network interface)都提供了双向通信,包含输入和输出端口。
-
接口:路由器的接口又可以分为控制台接口、局域网接口、广域网接口等。
-
整个路由器的结构可分为两大部分:路由选择部分和分组转发部分。如图
路由选择部分简单的说就是按照选定的路由选择协议构造并且维护路由表(这个后面介绍)
-
分组转发部分由三部分组成:如上图,位于中间的交换结构、一组输入端口和一组输出端口。
如图
路由器在输入端口接收分组,从分层的角度来看,
- 首先按照物理层协议进行比特流的接收
- 再按照数据链路层协议接收并封装了IP分组的帧
- 再经过数据帧中的帧校验序列检测该帧如果是正确的情况下再将该帧中封装的IP分组交由网络层处理,此时如果网络层模块在忙,数据报或者是IP分组被暂存在输入队列中等待处理
- 排队结束之后网路层模块再根据IP分组首部中的目的主机IP地址来查找路由表,根据查找到的下一跳路由器的IP地址,以及本路由器对应的输出端口,经过交换结构再把该IP分组送到刚刚查找到的输出端口。
如图:
- 与输入端口一样,输出端口也设置有队列,当交换结构传送过来的分组到达速率超过输出链路的发送速率时,就把来不及发送的IP分组先暂存在队列中。
- 排队结束以后,输出端口中的数据链路层处理模块再把IP分组加上帧的首部和尾部,也就是把它封装在一个新的数据帧里面
- 封装之后通过网卡的RJ45接口交给物理层实体之后发送到传输线路上
在实际应用中对于路由器中输入或者是输出队列产生溢出是造成分组丢失的重要原因。
二、直接交付与间接交付
刚刚我们也说过在互联网中每台路由器至少要互联两个物理网络,也就是至少与两个物理网络有直接的联系,对于主机来说通常都是只与一个物理网络连接,或者说主机只属于一个物理网络,但实际上不管是主机也好、路由器也好都要参与到IP分组的传送的过程,当一个主机上的应用程序试图进行通信的时候,TCP/IP协议将会产生若干个IP分组,对于主机来说就要做出最初的转发决策,也就是决定将这一个IP分组发往何处,在学习转发策略之前,我们先学习熟悉一下直接交付和间接交付的概念。
(一)直接交付
如图
当源主机A和目的主机B他们是在同一个物理网络中的时候不需要通过路由器转发这种方式就称为直接交付。
(二)间接交付
如图
源主机A和目的主机C不是连接在同一个物理网络,此时就应该将IP分组发送给本网络上的某一个路由器,路由器再按照转发表指出的路由将IP分组转发给下一台路由器如此以来就被成为间接交付。
当IP分组可以直接交付的时候,可以通过我们学习过的地址解析协议ARP去获取,比如说对于A主机来说,根据ARP协议获取目的主机B的MAC地址,再将IP分组封装在物理帧中直接发送给目的主机。
如果不在同一个物理网络中的时候,就将IP分组交给本地路由器的一个本地网络连接,此时我们通过ARP获取的是第一跳,也就是默认路由器的MAC地址,然后再将IP分组封装到帧中,发动给路由器。每个路由器都将IP分组间接交付给下一台路由器,直到IP分组到达路径上最接近目的主机的路由器,然后由该路由器将IP分组通过直接交付的方式送达给目的主机,也就是说对于TCP/IP互联网中的路由器形成了一个相互协作的互联结构,对于源和目的主机不在一个物理网络上的IP分组先被源主机传送给本地路由器,再经过若干次间接交付,最后抵达的是可以进行直接交付的路由器,也就是到达最后一跳,最后再被直接交付,也就是说直接交付是任何IP分组传输的最后一步。
根据以上内容我们知道路由转发的关键问题是
-
关键问题,对源主机来说如何判断源主机和目的主机是否在同一个物理网络中?
-
采用分类IP地址分析:如果采用最初的分类的IP地址,我们可以根据分类编址规则,很容易地从目的IP地址中抽取目的网络地址,在于本机IP地址所对应的网络地址作比较。如源主机202.119.224.201和目的主机202.119.224.8,首先他们都是C类地址,两个IP地址中高24位都是一样的,很容易判断这两个主机都是属于同一个网络,那这两者进行通讯的时候就是直接交付。
-
采用子网划分或无分类编址分析,对于进行了子网划分或者无分类编址的网络,也是类似,仍然是根据目的IP地址、源IP地址分别和源主机所在的子网的子网掩码相与的结果是否相等来判断。
如:源 192.168.23.184,目的主机192.168.23.66,子网掩码255.255.255.224
分析:源IP地址和子网掩码相与的结果是 192.168.23.184 AND 255.255.255.224=192.168.23.160
目的IP地址和源主机子网掩码相与的结果是192.168.23.66 AND 255.255.255.224 =192.168.23.64
前面三个十进制与255相与之后没有变化,只有最后一位十进制转换成二进制之后与224 对应的二进制进行相与,可见二者相与的结果是不一样的,说明这两台主机他们是分属于不同的子网,既然是分属于不同的子网,所以这两天主机之间要进行通信就需要采用间接交付的方式。
在明白了直接交付和间接交付的概念之后我们学习一下统一的IP分组的转发算法。