在Internet这个大规模网络中,将千万个网络互联起来,其中网络互联协议起着关键作用。在TCP/IP体系中,网络层协议的主要任务是实现网络的互联,网络互联是通过网络设备把不同的网络连接起来,并通过网络协议实现数据包的转发。为了实现网络互联,必须考虑不同网络的拓扑结构、选择路径、数据传输等问题。本章以路由设备为核心,介绍路由的协议和最佳路径的算法等内容。
【本章主要内容】
路由器的作用和应用。
路由协议OSPF。
网络互联举例。
5.1 网络互联的基础
本小节的主要内容是讨论网络互联的目的、网络之间的差异以及必须解决的问题。
5.1.1 网络之间的差别
以国际互联网为例,网络之间存在以下差别:①不同的寻址方案;②不同的最大分组(数据的载体)长度;③不同的网络接入机制;④不同的超时控制;⑤不同的差错恢复方法;⑥不同的状态报告方法;⑦不同的路由选择技术;⑧不同的服务;⑨不同的管理与控制方式等。
5.1.2 需要解决的网络互联问题
跨越网络,实现服务和资源的共享,必须首先将网络间的差异屏蔽起来,使其不被接受服务的用户感知。
1.网络之间互联必须实现的目标
(1)提供的服务与每个网络没有直接关系。
(2)网络的数量、类型和拓扑结构对于数据传输来说是透明的。
(3)无论跨越多少网络,对所传输的数据源和目的网络应该采用统一的地址格式。
2.网络互联需要解决的问题
主要是“发送节点的分组如何被高效、快速传输到接收节点”,具体如下:
(1)网络寻址,寻找数据分组发送的源和目的地计算机地址;(2)路由搜索和选择,网络环境复杂,需要在数据发送前或发送过程中确定合适的路径;(3)路由信息交换,网络的结构和状态是靠路由信息帮助了解的,交换路由信息是必要的;(4)转发数据包,从一个网络把数据分组/包转发到另一个网络,直至到达目的网络;(5)给高层提供服务质量,为数据传输和应用服务提供良好的网络连接服务。
5.2 网络互联设备——路由器
在不同网络互联时,主要考虑以下问题:一是数据传输的路径,要把网络的负载(数据传输的压力)均衡起来,避免出现局部流量过大,导致网络拥塞;二是要考虑安全问题,哪些数据包允许通过,过滤掉哪些包。目前这两个问题的最佳解决方案就是依靠路由器这个网络设备。
5.2.1 认识路由器
路由器(Router)是用于连接多个在逻辑上分开的网络设备,逻辑网络往往代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器来完成。
因此,路由器具有判断网络地址和选择路径的功能,它能在多网络互联环境中,建立灵活的连接。它不关心各子网使用的硬件设备,但要求运行与网络互联层协议相一致的软件。
路由器的主要工作是:为经过路由器的每个数据包(网络互连协议中的数据载体)寻找一条最佳传输路径,并将该数据包有效地传送到目的站点。
由此可见,选择最佳路径的策略,即路由算法是路由器的关键所在。
为了完成这项工作,在路由器中保存着路由表(Routing Table),其中包括与各种传输路径相关的数据,供路由选择时使用。路由表中还保存着网络标志信息、网上路由器的数量和下一个路由器的名字等内容。
路由表可以是系统管理员静态设置好的,也可以由系统动态修改;可以是路由器自动调整的,也可以由计算机主机控制。
路由器的软件在路由选择和网络安全方面起到很重要的作用,所以一个好的路由器不但硬件配置要好,而且软件配置也要好。
5.2.2 典型路由器的结构
1.“转发”和“路由选择”
路由器的功能包括转发和路由选择两部分。
在数据传输过程中,数据包到达路由器之后,即由路由器根据转发表将用户的数据包从合适的端口“转发”(Forwarding)出去。
“路由选择”(Routing)是按照分布式算法,根据从其他路由器得到的网络拓扑的变化情况,动态地改变所选择的路由。
那么,路由选择和转发是什么关系呢?典型路由器结构,可知路由器的功能包括路由选择和转发两部分。路由表是根据路由选择算法得出的,转发表是从路由表得出的。也就是说,路由确定了向哪儿转发数据包。
2.输入端口对线路上收到包的处理
在数据链路层协议中,数据包剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理,并会产生一定的时延。
3.缓存包(分组)
缓存包将交换结构传输过来的包先进行缓存,然后由数据链路层协议将包加上链路层的首部和尾部,交给物理层后发送到外部线路。
4.处理速度
若路由器处理包的速率赶不上包进入队列的速率,队列的存储空间将逐渐减少到零,并导致后面进入队列的包由于没有存储空间而被丢弃。
路由器中输入或输出队列产生溢出是造成包丢失的重要原因。
5.2.3 IP路由器的工作过程
目前的国际互联网络是由成千上万个IP网通过路由器互联起来的大型网络。路由器不但负责对IP包的转发,还负责与其他路由器进行网络信息共享,共同确定路由选择并维护路由表。
以因特网的路由器为例,路由器的具体工作过程如下。
(1)IP网络中的一台主机发送IP包给同一IP子网的另一台主机时,只需直接把IP包送到网络上,对方即可收到。
(2)转发到外网的包,路由器转发时,是根据IP包的目的IP地址选择合适端口,把IP分组送出去。为此,路由器要判定端口所连接的是否是目的网络。如果是,就直接把包通过端口送到本地网络;否则,要选择下一个路由器转发包。
(3)路由表中具有默认网关,用来传送不知道下一个路由器的IP包。这样,知道下一跳的IP包通过路由器正确转发出去,不知道下一个路由器的IP包则被传送给“默认网关”路由器。这样逐级传送,IP包最终被送到目的地,送不到目的地的IP包将被网络丢弃。
5.3 网络地址
对于Internet网络来说,IP地址是一个十分重要的概念,它是Internet上每个计算机和路由设备的身份证,许多服务和特点都是通过IP地址提供的。
5.3.1 IP地址的概念
连接在Internet网络上的两台计算机之间在相互通信时,在它们所传送的数据包里都会附加发送数据的计算机地址和接受数据的计算机地址。为了通信的方便,需要给每一台计算机都事先分配一个类似电话号码一样的标识地址——IP地址。根据TCP/IP第4版(IPv4)协议规定,IP地址由32位二进制数组成,而且在Internet范围内是唯一的。
例如,某台计算机的IP地址:11010010010010001000110000000011。
为了方便记忆,将IP地址32位二进制分成4个字节,每字节8位,中间用小数点隔开,再将每8位二进制转换成十进制数,这样上述计算机的IP地址就变成了:210.72.140.3,这个方法被称作点分法。
对于网络地址:
(1)网络地址必须唯一。
(2)网络标识不能以数字127开头。在A类地址中,127被保留给内部回送函数。
(3)网络标识的第一个字节不能为255(全1)。数字255是作为广播地址的。
(4)网络标识的第一个字节不能为“0”。“0”表示该地址是本地主机,不能传送。
对于主机标识:
(1)主机标识在同一网络内必须是唯一的。
(2)主机标识的各位不能全为“1”,如果所有位都为“1”,则该地址是广播地址,而非主机的地址。
(3)主机标识的各位不能全为“0”,如果都为“0”,则表示“只有这个网络”,而这个网络上没有任何主机。
5.3.2 IP地址的分类
一个电话号码为64495073,这个号码中的前四位表示该电话是属于哪个分局的,后面的数字表示该局下面的某个电话号码。与电话类似,计算机的IP地址的4个字节也分成两部分,分别为网络标识和主机标识,网络标识表示地址属于哪个网络,主机标识表示是哪个网络中的哪个计算机或路由设备,运行两层协议的交换机没有IP地址。同一个物理网络上的所有主机都用同一个网络标识,网络上的每个工作站、服务器和路由器都具有一个主机标识与其对应。
例如,一个网络中的服务器的IP地址为202.210.175.12,对于该IP地址,就可以写成:
网络标识:202.210.175.0
主机标识:12
IP地址:202.210.175.12
按照网络规模的大小,把32位地址分成五种方式,分别对应于A、B、C、D和E类IP地址。
1.A类IP地址
在IP地址的4个字节中,第一字节号码为网络标识,剩下的3个字节为本地计算机的标识。如果用二进制表示IP地址的话,A类IP地址就由1个字节的网络地址和3个字节的主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位。A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。
2.B类IP地址
在IP地址的4个字节中,前两字节为网络标识,B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络标识长度为14位,主机标识的长度为16位。B类网络地址适用于中等规模的网络,每个网络所能容纳的计算机数为6万多台。
3.C类IP地址
在IP地址的4个字节中,前3个字节为网络号码,另一个字节号码为本地计算机标识。如果用二进制表示IP地址的话,C类IP地址就由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为21位,主机标识的长度为8位。C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。
除了A、B、C三种类型的IP地址外,还有两种特殊类型的IP地址。TCP/IP协议规定,凡是IP地址中的第1个字节以“1110”开始的地址都是多点广播或组播地址。因此,任何第1个字节大于223小于240的IP地址都是多点广播地址;凡是IP地址中的第1个字节以“1111”开始的地址都是保留地址。
5.特殊的IP地址
IP地址中的每一个字节都为0的地址(“0.0.0.0”)对应于当前主机。
IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址。
IP地址中127.0.0.0用于回路测试,例如测试本机的网卡情况,可使用127.0.0.1。
IP地址中10.0.0.0与192.0.0.0只能用于内部网络,不能在Internet中使用。
IP地址中第四字节为全0,表示其为网络地址。
IP地址中第四字节为全1,表示其为本地网络的广播地址。
5.3.3 地址掩码
1.认识掩码
掩码是一个32位地址,作用是屏蔽IP地址主机标识部分,以区别网络标识和主机标识,并说明该IP地址是在本地局域网上,还是在其他网络上。
使用掩码时,目的地址与掩码做“与”运算,“与”的结果就是目的网络地址。例如,一个数据包到达路由器后,路由器要决定是把包转发给另一个路由器还是直接投放到连接的网络,就必须通过“与”的运算结果和路由表的条目比较来确定目标网络的出口。
2.默认掩码
1.认识子网编址
划分子网是将一个大的网络分成若干较小的网络,对于标准的A、B与C类IP地址,都可以进行子网划分。划分子网是在IP地址编址的二层结构中增加一个中间层次,使IP地址变成三级层次结构,即网络地址子网地址主机地址。
子网编址让一个网络地址演变成若干个网络地址,可以较好地解决网络地址不足的问题。
2.确定子网掩码
利用子网掩码的位数可以决定可能的子网数目和每个子网的主机数目。在定义子网掩码前,必须弄清楚本来使用的子网数和主机数目。定义子网掩码的步骤如下:
(1)确定地址。例如,申请到的IP为“200.100.10.Y”,该网络地址为C类IP地址,网络标识为“200.100.10”,主机标识为“Y”,其默认的子网为255.255.255.0。
(2)根据所需的子网数以及将来可能扩充到的子网数,用主机的高位定义子网编码。
例如,现在需要10个子网,将来可能扩展到15个,用Y字节的前四位做子网编码,还有低4位继续作为主机地址标识。
(3)将第4个字节的子网掩码高4位置“1”,即“11110000”,则子网掩码的点分二进制形式为“11111111.11111111.11111111.11110000”。
(4)把这个数转化为点分十进制形式为:255.255.255.240,它就是该网络的子网掩码。