在过去的20多年的时间里,网络技术不断发展,从最初的X.25、帧中继,到以太网、FDDI,再到目前流行的ATM,不同的技术提供了多样化的网络选择。为了能够在众多不同类型的局域网和广域网之间实现网络的互操作性,就需要使用网络协议。
Internet所采用的网络协议栈不仅具有低层次的协议规范,如TCP和ip协议等,而且还对象电子邮件、模拟终端和文件传输这样的高层次应用也制定了相应的规范。下图中显示了较为重要的Internet协议和OSI参考模型之间的对应关系。
本文将主要讲述TCP、IP协议,以及其它一些相关协议和协议使用环境。本文的重点将放在对第三层IP协议和路由功能的介绍上,而对于第四层的TCP协议只做简单说明。
TCP协议
TCP,即传输控制协议,是一种面向连接的传输层协议。通过使用序列号和确认信息,TCP协议能够向发送方提供到达接收方的数据包的传送信息。当传送过程中出现数据包丢失情况时,TCP协议可以重新发送丢失的数据包直到数据成功到达接收方或者出现网络超时。TCP协议还可以识别重复信息,丢弃不需要的多余信息,使网络环境得到优化。假如发送方传送数据的速度大大快于接收方接收数据的速度,TCP协议可以采用数据流控制机制减慢数据的传送速度,协调发送和接收方的数据响应。TCP协议能够把数据传送信息传递给所支持的更高层次的协议或应用使用。
IP协议
IP协议位于Internet协议栈的第三层,最早于1970年在UNIX系统平台上开发成功。今天,IP协议已经发展成为网络操作系统相互之间进行通讯的标准机制,是HTTP和TCP等高层协议的基础。除了可以提供网络路由之外,IP协议还具有错误控制以及网络分段等众多功能,是整个Internet协议栈的核心。
一个完整的IP地址由4字节,即32位数字组成,为了方便人们的使用,IP地址经常被写成10进制的形式,中间使用符号“.”分开不同的字节。例如采用32位形式的IP地址如下:
00001010000000000000000000000001
假如使用十进制的形式则为:
10.0.0.1
IP地址可以被划分成不同的类,根据最左边4个地址位的值决定具体的网络类型。例如,所有的A类网络的地址最左边一位的值均为0,而其它剩余31位的值既可以取0也可以取1。即:
0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(x代表0或1)
根据A类网络地址的规定,我们可以推算出该类型网络的有效地址范围是从0.0.0.0到127.255.255.255。
B类网络地址从左向右第一位必须为1,第二为必须为0,其它30位则可以自由取值。例如:
10xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
因此,B类型网络地址的有效取值范围是从128.0.0.0到191.255.255.255。同样的,除第一位必须为1之外,C、D和E类网络地址的第二、三和四位都应当分别为1。我们在下表中对不同网络类型IP地址的划分进行了总结:
域名
域名是一种更加方便,更易于记忆的可以唯一标识网络上任何一台计算机的方法。Internet使用域名系统(即DNS)给IP地址指定名称,并且可以根据不同的命令在域名和IP地址之间进行映射和转换。域名系统采用类似目录树的等级结构,所有的域名和地址信息都被保存在遍布Internet的分布式数据库中。
作为公用网络的Internet,所有的域名和地址都必须在使用前向授权域名注册商注册,然后才能使用。象.com,.net,和.org这样的顶级域名只有那些具有顶级域名注册权的注册商才能够注册。
IPv4和IPv6
目前所普遍采用的IP协议又被成为IPv4,即版本4。更高版本的IPv6已经开始在小范围的网络环境内开始试用,将在今后的几年内逐步取代IPv4。IPv6对整个地址分配系统进行了改进,支持128位(32字节)的地址长度,在性能和安全性上有所增强。
我们已经知道IPv4只能支持32位(8字节)的地址长度,因此所能分配的地址数目也是有限的,大致相当于4,294,967,296,即2的32次方。当然,在IP协议最早开始使用的时候,这个数字还是相当可观的,但是随着近几年全球范围内计算机网络的爆炸性增长,可以使用的IPv4地址空间已经越来越有限。虽然目前可以暂时采用类似操作系统虚拟内存的虚拟地址技术,但是还是不能缓解日益增长的压力。因此,为了从根本上解决IP地址空间不足的问题,提供更加广阔的网络发展空间,人们对IPv4进行改进,推出功能更加完善和可靠的IPv6。
网络地址
由于受到网线电气性能上的局限,计算机网络一般都是由一些单独的网段组成。路由器和网桥等网络设备则被用来连接不同的网段。除了使用网线在物理上划分网络之外,还可以使用更高层次的软件协议来划分子网。子网不仅可以与物理网段一一对应,还可以跨网段划分。
即使不划分子网,任何IP网络上的主机都属于一个由网络地址决定的对等网络(多宿主主机因为具有多块网卡可以同时属于多个对等网络)。具有相同网络地址上的主机既可以位于同一个物理网段也可以分散在不同的地方,通过网络地址组合在一起,可以方便相互之间进行通讯。
网络地址和IP地址非常相似,但是我们不能把两者混为一谈。网络地址由主机的IP地址和网络类型决定。例如,对于10.0.0.1这个主机地址,默认情况下最左边的8位代表网络地址,其它各位为0,即网络地址为10.0.0.0。
我们在下表中给出了A、B和C类网络的网络地址划分方法。因为D和E类网络只用于网络治理目的,我们在这里就不进行说明了。
子网
除了由主机地址和网络类型决定的网络地址之外,IP协议还支持用户根据自己网络的实际需要,创建子网络。子网与网络地址相结合,不仅可以把位于不同物理位置的主机组合在一起,还可以通过分离要害设备或者优化数据传送等措施提高网络安全性能,降低网络流量。
子网掩码
子网一个最显著的特征就是具有子网掩码。与IP地址相同,子网掩码的长度也是32位,也可以使用十进制的形式。例如,以下二进制形式的子网掩码
11111111111111111111111100000000
采用十进制的形式为:255.255.255.0
掩码规则
子网掩码既不能作为IP地址使用,也不同单独存在,必须结合IP地址一起使用。子网掩码的作用就是对IP地址进行划分,形成扩展网络地址和主机地址两部分。
一个有效的子网掩码由两部分组成,分别是左边的扩展网络地址位(用数字1表示)和右边的主机地址位(用数字0表示)。象下面这两个子网掩码都是无效的。
00000000000000000000000000000000
11111111111111111111111111111111
扩展网络地址由我们上文所讲的基本网络地址和多出的子网地址组成。通过使用子网地址可以在主机地址空间内划分出一部分地址位作为子网络的地址。举例来说,一个小型企业计划使用192.168.1.0网络建立企业内部网,并且希望为不同的部门分配不同的网段,这就需要使用子网掩码对网络进行划分。我们已经知道这是一个C类网络,网络地址为24位,假如要对其进行分段,必须要求扩展网络地址的位数超过24。例如,假如我们决定使用25位的子网掩码255.255.255.128,就会创建两个新的子网络,而原先用于主机的地址位则会相应减少。具体可见下表:
假如我们在主机地址中取两位作为子网掩码,可以创建4个子网;假如取三位作为子网掩码,可以建立8个子网,按此类推。用户可以根据需要创建子网数和每个子网上可以连接的主机数权衡决定设置多少位的子网掩码。
ARP和RARP
在一些象以太网这样的网络结构中,可以使用Internet协议栈中的两个子协议ARP(地址解析协议)和RARP(逆向地址解析协议)动态的获得网络主机的IP地址。ARP协议可以通过发送网络广播信息的方式,确定与某个网络层IP地址相对应的物理层地址(即MAC地址)。RARP是ARP的反向协议,同样通过网络广播的方式决定与某个硬件地址相对应的网络层IP地址。RARP协议对于无盘工作站尤为重要,因为无盘工作站系统启动时不知道本机的网络层地址,但是可以通过RARP协议找到与本机硬件层地址相对应的IP地址。
路由
Internet是由遍布全球的无数个大大小小的网络相互连接而成,可以在不同的网络之间进行数据的传送。作为连接不同网络的接口设备,路由器已经得到了非常广泛的应用,其主要功能就是连接多个独立的网络或子网,实现互联网间的最佳寻径及数据传送。根据路由器作用范围的不同,我们可以将其分为内部路由器和外部路由器两种。其中,内部路由器主要用于网络内部(又称自主系统)信息的交换,而外部路由器则主要用于网络之间的信息传送。
IP路由协议是一种动态协议,要求路由设备能够根据网络环境计算路由,并且当网络发生变化时可以自动选择最佳路径。与动态路由不同,静态路由则要求网络治理人员手动配置路由信息,当网络环境改变时,除非网管人员更改路由,否则静态路由保持不变。
路由信息一般被保存在路由表中,其中每一条都包含目标接收方地址和下一个路由器的地址等信息。因为网络环境的状况随时随地都在发生变化,数据在传送过程中所经过的完整路径很难事先预知,所以不可能在路由表中罗列出所有的路径信息。因此,路由表一般只给出可以到达数据接收方的下一台路由器的路径,这样就可以通过网络上每一台路由器之间形成的连续关系,为数据传送提供最终的最佳完整路径。
当路由过程中出现异常情况时,IP协议本身并不提供任何的错误监控措施,而主要由ICMP(Internet控制信息协议)负责错误情况的报告和处理。ICMP协议具有多项功能,除了可以向数据发送方传回路由错误信息之外,还可以检测网络节点的可达性(使用ICMPEcho和Reply信息),提高路由效率(使用ICMPRedirect信息),以及提醒发送方数据包超出存活时间(使用ICMPTimeExceeded信息)等。总之,ICMP协议是整个IP网络必不可少的组成部分,尤其对那些运行路由器的网络环境来说作用更为重要。
最后,我们来简单介绍一下各种路由协议。
内部路由协议
内部路由协议又称IGP(内部网关协议),主要在自主系统内部使用。目前,TCP/IP网络中较为常用的IGP主要有以下几种:
RIP
假如要谈到IP网络的路由协议,就不能不提到RIP(路由信息协议)。RIP协议最早是由施乐公司在80年代推出,当时主要用于施乐公司自己开发的一种网络系统。如今,RIP协议已经被众多的计算机网络所采用,成为一种基本的路由协议。
RIP主要适用于小规模的网络环境,假如应当到大型网络中则存在很多限制。例如,RIP协议规定任何两台网络主机之间的路由跳跃次数(每通过一台路由器定为跳跃一次)不得超过16。此外,RIP的聚敛速度很慢,这就意味着当网络发生变化时,变动信息需要经过很长时间才能传送到所有的路由器。最后,RIP是通过查看两个节点之间的路由跳数来确定最佳路由,而不考虑线路速度、使用率等其它因素,从而导致结果往往不是最佳路径。正是基于上述原因,许多原先采用RIP协议的大型网络已经逐步转向其它功能更加完善的路由协议。
IGRP
IGRP(内部网关路由协议)是由Cisco公司在80年代开发的一种内部路由协议,对RIP协议中存在的一些问题进行了改进。IGRP可以通过查看路由器之间的网络带宽和延迟来确定最佳路径。IGRP的聚敛速度要明显快于RIP,因而可以有效的避免由于路由信息的不一致而导致的路由回路。此外,IGRP不存在RIP对路由长度的限制,更加适合那些大型、复杂的网络拓扑结构。
为了更好的满足运行要害任务的大型网络的需要,Cisco对IGRP协议的功能进行了加强,将传统距离向量路由协议易于使用的特点和链路状态路由协议的高速度结合在一起,优化了路由信息的传送,降低了网络带宽的占用量。此外,除了IP路由之外,增强型IGRP协议还可以支持AppleTalk和NovellIPX路由信息。
OSPF
OSPF即最短路径优先协议由Internet工程任务组(IETF)推出以取代RIP。OSPF是一种基于链路状态,采用分级结构的域间路由协议,支持自主系统内部的分级路由。自主系统可以被划分成多个路由区域,其中每一个路由区域都是由相互连接的一个或多个子网组成,并且都与主干区域连接。此外,OSPF协议支持可变长度子网延码(VLSM),提供网络地址空间转换和基于带宽的量的计算。
外部路由协议
外部路由协议提供了自主系统之间的路由,在TCP/IP网络中最为常用的主要有以下两种:
EGP
第一代广为使用的外部路由协议就是EGP(外部网关协议)。EGP可以提供动态连通性,但是要求所有连接的自主系统都必须采用树形结构,这在Internet发展的初期还是可以使用的。
虽然EGP是一种动态路由协议,但是其设计原理非常简单,没有采用任何形式的度量标准,因而也就无法真正做出智能化的路由决定。由于EGP协议已经无法满足当今复杂网络的需要,因此正逐渐被另一种协议�BGP所替代。
BGP
BGP协议对EGP中的很多要害性问题进行了改进。与EGP一样,BGP也是一种域间路由协议,主要用于网络核心路由器。但是与EGP不同,BGP被设计成可以在任何网络拓扑结构工作,对网络结构的支持更加灵活。