3.9 Internet技术
把不同类型的网络通过不同的互联方法和互联设备构成的网络通常称为Internet(因特网)互联网。泛指由多个计算机网络互联而成的虚拟网络,如图3-61所示。
Internet(因特网)是全球最大的、开放的、由众多网络互联而成的Internet(因特网)体系。它的核心是开放,并且贯穿在整个体系结构中。
Internet可建立在任何物理传输网上,包括电视网、X.25网、ISDN网、以太网、FDDI网、ATM网、无线网和卫星网等。
TCP/IP协议是实现网络互联性和互操作性的关键,它把成千上万个各种网络互联起来,组成相互能进行数据通信的因特网。
图3-61 互联网络的概念
a)实际的互联网络 b)虚拟互联网络(IP网)
Internet(因特网)有5种类型的网络互联:
(1)相同类型的局域网互联。
(2)不同类型的局域网互联。
(3)通过主干网将局域网互联。
(4)通过广域网(WAN)将局域网互联。
(5)局域网上的计算机访问外部网上的计算机系统。
互联在一起的网络要进行通信,会遇到许多需要解决的问题,如:不同的寻址方案、不同的最大分组长度、不同的网络接入机制、不同的超时控制、不同的差错恢复方法、不同的状态报告方法、不同的路由选择技术、不同的用户接入控制、不同的服务方式(面向连接服务、无连接服务)和不同的管理与控制方式等。
将网络互相连接起来要使用一些中间设备(互联设备),ISO的术语称之为中继系统(Relay)。根据中继系统所在的体系结构层次,可以分为以下5种不同的中继系统:
(1)物理层中继系统,即转发器(Repeater)。
(2)数据链路层中继系统,即网桥或桥接器(Bridge)。
(3)网络层中继系统,即路由器(Router)。
(4)网桥和路由器的混合物,桥路器(Brouter)。
(5)网络层以上的中继系统称为网关(Gateway)。
网关连接两个互不兼容的系统,在高层进行协议转换。路由器其实是一台专用计算机,用于互联网的路由选择。用网关进行网络互联会很复杂,因为如果有N个网络要进行互联,那么每两个网络之间就需要一个协议转换器。N个网络共需N(N-1)个协议转换器,当网络数N很大时,所需的协议转换器的数量与网络数量的平方成正比,需要使用非常多的协议转换器。因此网络互联希望能采用大家共同遵守的一种通信协议,这样就可免去网络之间的协议转换器。
采用共同遵守TCP/IP标准化协议的互联网络称为Internet(因特网),又称国际互联网。
请注意,以小写字母i开始的internet(互联网)是一个通用名词,它泛指由多个计算机网络互联而成的虚拟网络。以大写字母I开始的Internet(因特网)是一个专有名词,它指的是全球最大的、开放的、由众多网络相互连接而成的特定计算机网络。采用TCP/IP协议族,它的前身是美国的ARPANET(1969年诞生)。Internet经历了多年的研究和试验,技术日益成熟。1994年后开始进入商业化运行。获得世界各国政府部门、商业企业、学术研究部门和个人的广泛使用。In-ternet技术和应用的超常规发展速度,对信息技术的发展、信息市场的开拓和信息社会的形成起着十分重要的作用。
3.9.1 Internet的层次结构
Internet采用的TCP/IP协议由4个概念性层次构成,即应用层、传输层、IP层和网络接口层。图3-62是这些概念性层次的结构和这些层次之间传送数据的形式。
(1)应用层。位于最高层,用户调用应用程序访问TCP/IP网络,实现多种服务功能。应用程序负责发送和接收数据。每个应用程序选择需要的传送服务类型。应用程序将数据按要求的格式传送给传输层。
(2)传输层。传输层的基本任务是提供两个通信站对应层之间的通信,即端到端的通信。管理信息流量、提供可靠的传输服务,确保数据无差错地按序到达。传输层软件要把传送的数据流划分成分组,并连同目的地址传送至下一层。
(3)IP层。IP层处理机器之间的通信。它接收来自传输层的请求,将有目的地址的分组发送出去。将分组封装到数据报中,填入数据报头,用路由算法决定直接将数据报传送到目的主机还是传送到路由器。IP层还要处理接收到的数据报,检查其正确性,并决定是由本地接收还是通过路由器传送到相应的目的站接收。
(4)网络接口层(数据链路层)。网络接口层又称数据链路层,是TCP/IP的最低层。该层负责接收IP数据报并发送到选定的网络。图3-63是使用路由器的TCP/IP协议分层通信概念。
图3-62 TCP/IP概念性层次的结构
图3-63 使用路由器的TCP/IP分层
3.9.2 Internet的IP网际协议
网际协议IP(Internet Protocol)是TCP/IP体系中两个最主要的协议之一。IP协议是负责网络互联的网络层的核心协议,与它配套使用的还有以下4个协议:
(1)地址解析协议(Address Resolution Protocol,ARP)。
(2)逆地址解析协议(ReverseAddress Resolution Protocol,RARP)。
(3)因特网控制报文协议(Internet Control Message Protocol,ICMP)。
(4)因特网组管理协议(Internet Group Management Protocol,IGMP)。
图3-64是表达这4个协议与IP的关系。传输控制协议(Transmission Control Protocol,TCP),它是IP配套使用的一个运输层协议。TCP虽然和网络互联并没有直接关系,但TCP协议对保证互联网络端到端的可靠传输起到非常重要的作用。
1.IP数据报的格式
互联网的基本传输单元是IP数据报。IP数据报包括数据报报头(首部)和数据区两部分。图3-65是IP数据报的完整格式。在TCP/IP标准中,各种数据格式常以32bit(即4B)为单位来描述。
(1)IP数据报首部的固定部分。
1)版本:指IP协议的版本,占有4bit。通信双方的IP协议版本必须一致。目前广泛使用的IP协议版本号有老版本IPv4和新版本IPv6。
2)首部长度:占4bit。4bit[24即为4bit(二进制)可以表达的最大十进制数]是选择代码,最大可表示15个数值单位(一个单位为4B)。因此IP首部长度的最大值为15×4=60B。当IP分组首部的长度不是4B(32bit)的整数倍时,必须利用最后一个填充字段加以填充,这样在实现IP协议时更方便。最常用的首部长度是20B。
3)服务类型:占8bit。用来获得更好的服务。
①前3个bit表示8个优先等级中的某个优先级。
②第4个bit表示有更低的延时,用Dbit表示。
③第5个bit表示要求有更高的吞吐量,用Tbit表示。
④第6个bit表示要求有更高的可靠性,用Rbit表示。
⑤第7个bit表示选择费用更低的路由器。
⑥第8个bit尚未使用。
图3-64 网际协议IP及其配套协议
图3-65 IP数据报的格式
4)总长度:是指首部与数据之和的长度,单位为字节。数据报的最大长度为65535B(即64KB)。
数据报通过底层物理网络传输。IP数据报封装在一个帧中,物理网络把包括数据报首部(报头)的整个数据报作为IP数据报发送。在理想情况下,将整个数据报封装在一个物理帧中,使物理网络上的传送十分有效。图3-66为IP数据报的封装图。
在IP层下面的每个数据链路层都有自己的帧格式,其中包括数据字段的最大长度,在IP层中称为最大传送单元(Maximum Transfer Unit,MTU)。IP层数据报封装成链路层帧时,它的总长度一定不能超过网络容许的最大传送单元(MTU)的规定值。由于以太网的普遍应用,实际上使用的数据报长度很少超过1500B,有时数据报的长度被限制在576B。如果数据报的长度超过网络容许的最大传送单元(MTU)的数值时,必须将过长的数据报进行分段(或称分片)后才能在网络上传送。此时,数据报的“总长度”是指分段(分片)后每段的首部长度与数据长度之和。
图3-66 IP数据报的封装
5)标志(Flag):占3bit。
①标志字段中的最低位,记为MF(More Fragment)。MF=1,表示后面还有分段的数据报;MF=0,表示分段数据为最后一个分段。
②标志字段中间的一位,记为DF(Don’t Fragment),意指是不能分段,只有当DF=0时才允许分段。
6)标识(Identification):占16bit。它是一个计数器,用来产生数据报的标识。相同的标识字段的数值使分段以后的各数据段最后能正确地重新装成为原来的数据报。
7)片偏移:较长的数据报在分段(片)后,某个分段相对于数据字段起始点的偏移量。分段偏移(片偏移)8B为偏移单位。偏移为5时,表明偏移量为40B。每个分段的长度为8B(64bit)的整数倍。
举例说明:
一个数据报的数据长度为3800B,使用固定首部(即20B长度)。需要分段的长度不超过1420B。我们把3800B的数据报分为3个数据报段,它们的数据长度分别为:1400B、1400B和1000B。原始数据报的首部被复制为各数据报段的首部,但必须修改有关字段的值,如表3-11所示。图3-67是数据报的分段图。
图3-67 数据报的分段(分片)
表3-11 IP数据报首部作为分段数据报首部必须修改的有关字段数值
注:∗标识字段12345是任意给出的,具有相同标识的数据报分段在目的站可无误地重装成原来的数据报。
8)生存时间:生存时间字段(Time To Live,TTL),用来设置该数据报在互联网中允许存在的时间,单位为秒。当源站向互联网输入一个数据报时,就为该数据报设置一个最大生存时间。当数据报通过主机和路由器对该数据报进行处理时,逐步递减其生存时间的数值,当生存时间为0时,路由器会丢弃该数据报,把它从网上删除。
9)协议:占8bit。协议字段指出此数据报携带的数据是使用何种协议,以便让目的主机的IP层知道应将此数据报交给哪个进程(进程是指正在运行的程序)。常用的一些协议和相对应的协议字段数值如表3-12所示。
表3-12 常用的协议与对应的协议字段数值
10)首部检验和:此字段只检验数据报的首部,不包括数据部分。
(2)IP数据报首部的可变部分。IP数据报首部的可变部分是一个选项字段。选项字段用来支持排错、测量及安全等措施。此字段的长度是可变的,从1B到40B,具体长度取决于所选择的项目。某些选项只需1B,它只包括1B的选项代码。另外一些选项需多个字节。
IP首部的可变部分有两个选项是关于源站路由选择的,即不严格的源站路由选择(Loose sour cerouting)和严格的源站路由选择(Strict source routing)。在数据报中加入路由选择选项,可使网络管理者了解网络中的某条通路的通信情况是否正常。一般用户并不使用这一功能。
IP首部还有一个选项是因特网的时间戳。时间戳记录了路由器收到数据报的日期和时间,占用4B。单位为毫秒(ms)。时间戳可用来统计数据报路由器产生的延时和延时的变化。
2.IP数据报的路由选择
(1)IP数据报的直接传送和间接传送。在分组交换系统中,路由选择是指选择一条路径发送分组的过程。路由选择可分为直接和间接传送两种方式。
直接传送方式将一个数据报从一台主机经过物理网络直接传送到目的站点。这是所有因特网的通信基础。只有当两台通信计算机连接在同一个物理传输系统时,才能采用直接传送方式。
如果源站和目的站计算机不是直接连接在同一物理网时,只能采用间接传送方式。发送方只能将数据报发送给一个路由器再进行传送。
在同一个物理网上,两台计算机之间的IP数据报传送可以直接传送,而不涉及路由器。发送方将数据报封装在物理帧中,将IP数据报的目的地址和一个物理硬件地址绑定在一起组成一个帧,直接传送到目的站。由于IP地址中包含网络地址和主机地址两部分,通过判别网络地址就能确定源站和目的站计算机是否同在一个物理网络上。
当源站和目的站通过多个路由器互联时,数据报的传送只能采用间接传送方式。发送主机通过网络将数据报传送给一台路由器。帧一旦到达该路由器,将封装的数据报提取出来,并在通往目的地的路径上选择下一台路由器,直到数据报送到某台可以直接传送至目的站的路由器,如图3-68所示。
(2)IP路由选择表。为了进行路由选择,需要路由选择表。路由表是根据路由选择算法得出的,它存储各个目的站点和如何到达目的站点的信息。为尽可能使用最少的信息进行路由选择,采用了信息隐蔽原理。
IP地址分配规定连接到同一物理网上的计算机具有相同的网络地址。这样路由选择表中只需包含网络地址信息,不需整个IP地址信息,从而大大提高了路由选择效率,使路由选择表变得很小。特定目的主机的信息被限制在主机运行的本地环境中。
图3-68 直接交付(A→B)和间接交付(A→C或D)
路由表包含一系列成对的信息,用N和R分别表示。N为目的网络的IP地址,R是沿着网络N的路径到下一个路由器的IP地址。路由器中的路由选择表只指定了从路由器R到目的网络路径上的一步,路由器并不知道目的站点的完整路径。
路由选择表的大小仅取决于互联网中网络的数量,与连接到主机的数量无关。IP路由选择软件仅需维护有关目的网络地址的信息,而与主机地址的信息无关。
路由选择是个非常复杂的问题,因为它是网络中的所有结点共同协调工作的结果。其次,路由选择的环境往往是不断变化的,而这种变化有时是无法事先知道的,例如,网络中出了某些故障。此外,当网络发生拥塞时,就特别需要能缓解这些拥塞的路由选择。
3.差错与控制报文协议
通过路由器转发数据报,因特网协议软件提供的是不可靠的无连接数据报传送服务。如果路由器不能正确选择路由和数据报,或者它检测到一个异常条件,影响它转发数据报,此时路由器需要通知源站点采取措施避免或纠正出现的问题。为能让互联网中的路由器能报告差错信息或提供有关意外情况,在TCP/IP中设计了一个特殊用途的报文机制,即Internet控制报文协议(Inter-net Control Message Protocol,ICMP)。它是IP的一部分。ICMP报文是放置在IP数据报中数据部分的一个控制报文协议。它允许路由器向其他路由器或主机发送差错或控制报文,为两台主机提供Internet协议软件通信。
ICMP为发生差错的路由器向初始源站点提供报告差错的方法,并没有全部指定解决每个差错的可能措施。数据报产生差错时,ICMP只向初始源站点回送差错情况报告,源站点必须将有关差错交给一个应用程序或采取其他措施来纠正问题。
ICMP报文采取图3-69的两级封装。每个ICMP报文放在IP数据报的数据部分中,数据报本身放在帧的数据部分,通过物理网络传送。携带ICMP报文的数据报与携带用户信息的数据报具有完全相同的路由选择,没有优先级区别。
互联网路由器使用本地路由选择表来计算下一站。为避免数据报在互联网上无止境地循环,每个数据报都包含了一个生存时间计数器。只要路由器处理数据报,它就递减该计数器的值,直到计数器值到达0时丢弃该数据报。同时,路由器向数据报源站点发回一个ICMP超时间报文。
路由算法按网络的通信量可分为静态路由选择策略和动态路由选择策略两类。静态路由选择又称非自适应路由选择,特点是简单和开销较小,但不能及时适应网络状态的变化。动态路由选择又称自适应路由选择,特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也较大。因特网采用的路由选择协议属于自适应的(即动态的)、分布式路由选择协议。
图3-69 ICMP报文的两级封装
3.9.3 TCP
传输控制协议(Transmission Control Protocol,TCP)是TCP/IP体系中面向连接的运输层协议,它提供全双工的可靠的交付服务。协议规定了TCP软件怎样识别给定计算机上的多个目的进程(即正在运行中的多个程序),如何对分组丢失和分组重复差错进行恢复。此外,协议还规定了运行一台计算机上的多个应用程序同时进行通信,也可对接收到的数据进行分解和分别送到多个应用程序。
1.TCP报文段的首部
TCP报文段分为首部和数据两部分,如图3-70所示。TCP的全部功能都体现在它的首部各字段。首部的前20B是固定的,后面有4NB是根据需要可增加的选项(N是整数)。因此TCP首部的最小长度是20B。
图3-70 TCP报文段的首部
首部固定部分各字段的意义:
(1)源端口和目的端口。各占2B。端口是运输层与应用层的服务接口。16bit的端口加上32bit的IP地址,构成了插口(Socket),它相当于运输层服务访问点(Transport Service Access Point,TSAP)的地址,共48bit。
(2)序号。占4B。TCP是面向连接数据流的,它传送的报文可看成为连续的数据流,其中每一个字节都对应于一个序号。首部中的“序号”指的是本报文段发送数据中的第一个字节的序号。
例如,某个报文段的序号为301,携带的数据100B,则本报文段数据的第一个字节的序号为301,最后一个字节的序号为400。这样,下一个报文段的数据序号应从401开始。
(3)确认序号。占4B。它是期望收到对方下一个报文段数据的第一个字节的序号。例如,收到一个序号字段值为501的一个报文段,数据长度为200B,如果响应的报文段中确认的序号值为701,则表明501~701之间的数据均已正确收到。
由于序号字段有32bit长,可对4GB(232bit)的数据进行编号。保证序号具有足够的重复使用空间。
(4)数据偏移。占4个bit,它是指数据开始的地方离TCP报文段的起始处有多远。
(5)保留。占6个bit,保留今后使用,目前应为0。
(6)说明本报文段性质的控制比特(每个性质说明1bit)。
①紧急(Urgent,URG)比特。URG=1时,告诉系统此报文段中有紧急数据,应尽快传送(相当于最高优先级)。
②确认(Acknowledgement,ACK)比特。ACK=1时,确认序号字段有效。ACK=0时,确认序号无效。
③推送(Push,PSH)比特。PSH也可称为急迫比特,即尽快(推送)交付给接收应用进程(进程:正在运行的程序)。
④复位(Reset,RST)比特。RST=1时,表明TCP连接中出现严重差错,必须释放,然后再重新建立运输连接。
⑤同步(Synchronization,SYN)比特。在建立连接时,用来同步序号。
⑥终止(Final,FIN)比特。FIN=1时,释放一个连接。
(7)窗口。占2B。窗口字段用来控制对方发送的数据量。TCP连接的接收端按自己缓存的空间大小确定自己的接收窗口大小,然后通知对方确定的发送窗口大小。
(8)检验和。占2B。检验和字段的范围,包括首部和数据两部分。
(9)选择。长度可变。只有一个选项:告诉对方TCP,缓存能接收的报文段的数据字段的最大长度(Max-SegmentSize,MSS)。当没有选项时,TCP的首部长度为20B。
选择较小的MSS时,网络的利用率降低。
2.TCP的流量控制与拥塞控制
为了提高报文段的传输效率,TCP采用大小可变的滑动窗口进行流量控制。发送窗口在建立连接时由双方商定。但在通信过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口大小。
图3-71表示发送端要发送900B长的数据,划分为9个100B长的报文段,而对方接收端确
图3-71 TCP中的滑动窗口概念
a)发送窗口大小为500B b)发送了400B,收到的确认序号为201,窗口大小不变,还可发送300B c)收到的确认序号为401,窗口大小变为400B,还可发送400B
认的发送窗口为500B。发送端只要收到了对方的确认,发送窗口就可前移。发送端的TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段距离。当指针移动到发送出窗口的最右端(500KB位置)时,就不能再发送报文段了。
实现流量控制并不仅仅为了接收端来得及接收。如果发送端发出的报文过多,会使网络负荷过重,由此会引起报文段的延时增大。报文段延时的增大,会使主机不能及时地收到确认信息,于是会重传更多的报文段,进一步加剧网络的拥塞。因此,主机应当适当地降低发送速率。
3.TCP的重传机制
TCP将数据流看作字节序列,为便于传输,又将这个字节序列划分为若干个报文段。通常,每个报文段又被放置到一个IP数据报中,并通过互联网传送。
TCP的重传机制是每发送一个报文段就设置一次计时器。只要计时器设置的重传时间已到,如果还没有收到确认信息ACK,就要重传这一段报文。
TCP采用了一种自适应算法。这种算法记录每个报文段发出的时间和收到确认报文段的时间,这两个时间差称为报文段的往返延时。显然,计算器设置的重传时间应略大于平均往返延时。
TCP采用滑动窗口传送机制和报文段重传机制,不仅提供了流量控制功能,而且还提供了可靠的传输服务。
3.9.4 UDP
用户数据报协议(User Datagram Protocol,UDP)是TCP/IP体系中运输层两个协议(TCP和UDP)中的一个。根据不同的应用,运输层需要有两种不同的运输协议向上面的应用层提供通信服务。运输层的作用是为应用进程(正在运行的程序)之间提供逻辑通信。
传输控制协议(TCP)提供的是面向连接的全双工可靠的传输信道。用户数据报协议(UDP)提供的是无连接的尽最大努力服务的不可靠的传输信道。图3-72是两种传输协议提供的逻辑通信信道。
图3-72 运输层向上提供可靠的和不可靠的逻辑通信信道
TCP提供面向连接服务,在传输数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。此外,由于TCP要提供可靠的、面向连接的运输服务,因此增加了许多开销,如确认、流量控制、计时器和连接管理等。使协议数据单元的首部增大很多,还要占用许多处理机资源。
UDP在传送数据之前不需要先建立连接。远地主机的运输层收到UDP报文后不需要给出任何确认。虽然UDP不提供可靠的交付,但在某些情况下UDP是一种最有效的工作方式。如域名系统(Domain Name System,DNS)和网络文件系统(Network File System,NFS)使用的就是UDP这种运输方式。此外,UDP还能在主机上识别多个目的地址,允许多个应用程序在同一台主机上工作,并能独立地进行数据报的发送和接收。
1.UDP数据报的格式
用户数据报(UDP)有两个字段:数据字段和首部字段。首部字段共有8B,由4个字段组成,每个字段都是两个字节。4个字段包括:
(1)源端口字段(源端口号)。
(2)目的端口字段(目的端口号)。
(3)长度字段(用户数据报的长度)及检验和字段(防止用户数据报在传输中出错),如图3-73所示。
图3-73 UDP用户数据报的首部和伪首部
计算检验和时,在用户数据报(UDP)之前要增加12B的伪首部。伪首部不是用户数据报(UDP)真正的首部。只是在计算检验和时,临时和用户数据报(UDP)连接在一起,得到一个过渡的用户数据报(UDP),以便能计算出检验和。
2.UDP的封装、复用、分解和端口
用户数据报(UDP)包含首部(UDP报头)和数据区两部分,要让UDP数据报能在互联网中传输还要把UDP封装到IP数据报中。最后网络接口层还要将IP数据报再封装到一个帧中,才能在物理传输通道上传输。封装的过程如图3-74所示。
UDP还提供复用和分解功能。它接收多个应用程序送来的数据,然后再把它们送给IP层去传输。同时,它也接收IP层送来的UDP数据报,把它们分解后再送给对应的应用程序端口。UDP的分解操作如图3-75所示。
图3-74 UDP的封装
图3-75 UDP的分解操作
在运输层与应用层的接口上设置的端口是一个16bit的地址,并标以端口号码。16bit的地址码可允许编排64k个端口号,这个数目对计算机来说足够使用。
端口号可分为两类:一类是由因特网指派名字和号码(Internet Corporation for Assigned Names and Numbers,ICANN)公司负责分配的常用熟知端口,其数值为0~1023。例如,文件传输协议(File Transfer Protocol,FTP),简单的邮件传输协议(Simple Mail Transfer Protocol,SMTP),域名系统(Domain Name System,DNS),超文本传输协议(Hyper Text Transfer Protocol,HTTP)等。另一类为一般端口,用来分配给请求通信客户的运行程序。
表3-13给出了使用UDP和TCP协议的各种应用和应用层协议。
表3-13 使用UDP和TCP协议的各种应用和应用层协议
3.9.5 Internet地址
Internet地址又称IP地址。它能唯一确定因特网上每台计算机、每个用户的位置。IP地址为连接在因特网上的主机分配一个全世界唯一的32bit的标识符。让我们可方便地在因特网上寻找因特网IP地址。
IP地址由因特网名字与号码指派公司进行分配。我国用户可向亚太网络信息中心(AsiaPa-cific Network Information Center,APNIC)申请IP地址。
1.IP地址的结构与分类
在TCP/IP协议中,规定分配给每台主机一个32bit地址作为该主机的IP地址。在因特网上发送的每个数据报都包含有一个32bit的发送方地址(源地址)和一个32bit的接收方地址(目的地址)。每个IP地址又有两部分组成:网络标识Netid和主机标识Hostid。网络标识确定了该台主机所在的物理网络;主机标识确定了在某物理网络上的主机,如图3-76所示。
IP地址具有两个重要特性:
1)每台主机分配了一个唯一的地址。
2)网络标识号的分配必须全球统一。但主机号可由本地分配,不需全球统一。
图3-76 IP地址中的网络字段和主机字段
由于因特网上的各个网络规模大小有很大区别,有的网络拥有很多主机,另一些网络上主机则很少。为更好地满足不同用户的要求,把IP地址划分成A、B、C三类。
A类地址分配给少数规模很大的网络,这些网络有数以百计的主机。在32bit的地址域中,网络标识号占有1B,它第1位为“0”时,表示是A类地址。后面的7bit可提供126个(27-2)网络号。括号中减去2的原因是Netid字段中的全0为IP地址的保留地址,意为“本网络”。Netid字段的127(即01111111)作为本地软件环路的返回测试(Loopback test),为本机使用。A类地址中的其他24bit是主机标识号Hostid。因此,A类地址的每个网路上可设置(224-2)=16777214个主机号。这里减2的原因是全“0”的Hostid字段表示该IP地址是“本主机”所连接到单个网络的地址。全“1”的Hostid字段表示该网络上所有的主机。
整个A类地址的空间共有231(2147483648)个地址。占全部IP地址空间232(4294967296)个地址的50%。A类地址的特点是:网络号数不多,主机号数极多。现在只能申请到B类和C类的IP地址了。
B类地址的Netid网络标识号占有2B(16bit)。前面2bit(“10”)已固定作为表示B类地址的标识。后面14bit作为B类地址的网络编号,共有214=16348个网络号数。B类地址的每个网络上的最大主机数量是(216-2)=65534个。这里减2的原因是要扣除全“0”和全“1”的主机号。
整个B类的地址空间共有230=1073741824个地址,占整个IP地址空间的25%。
C类地址的Netid网络标识号占有3B(24bit)。最前面的3bit是“110”,表示是C类地址。后面21bit为C类地址的网络号数221=2097152。C类地址的每个网络上的最大主机数为(28-2)=254个。整个C类的地址空间共有229=536870912个地址,占整个IP地址的12.5%。图3-77是上述三种IP地址的空间分布。
图3-77 三种类型IP地址的空间分布
除上述三类IP地址外,还有两类很少使用的IP地址,即D类和E类。D类是多播地址,留给因特网体系结构研究委员会IAB使用。E类地址为保留使用地址。
2.IP地址的点分十进制记法
在主机和路由器中存放的IP地址都是32bit的二进制代码,用户很难读数和输入。为提高可读性,采用一种点分十进制记法(Dotted decimal notation)来表示。将32bit中的每8bit分为一组,用“·”分开,并以8bit的等值十进制数字表示。一组内的最小值为0(即8bit全为0),最大值为255(即8bit全为1),因此,32bit用点分十进制记法表示的地址范围为0.0.0.0到255.255.255.255。表3-14是三种IP地址的使用范围。
图3-78是一个B类IP地址,显然128.11.3.31比10000000000010110000001100011111读起来要方便得多。
表3-14 三种IP地址的使用范围
图3-78 采用点分十进制记法的IP地址
3.IP地址的重要特点
(1)IP地址是一种分等级的地址结构。分两个等级的好处是:
①IP地址管理机构在分配IP地址时只分配网络号(第一级),剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样方便了IP地址的管理。②路由器只根据目的主机所连接的网络号来转发分组,而不必考虑目的主机号,减少了路由表占用的存储空间。
(2)IP地址的这种结构和电话号码的等级结构有相似之处,但并不完全一样。固定电话机的地区号和电话机局的编号按该电话机的地理位置去定。但IP地址与主机的地理位置没有这种对应关系。
(3)当一个主机同时连接到两个网络上时,该主机必须同时具有两个相应的IP地址,其网络号Netid也是不同的。这种主机称为多接口主机。
(4)用转发器或网桥连接起来的若干局域网仍为一个网络,因此这些局域网具有同样的网络号Netid。
在IP地址中,所有分配到网络号Netid的网络都是平等的。图3-79是三个局域网(LAN1、LAN2和LAN3)通过三个路由器(R1、R2和R3)互联构成的一个互联网。其中LAN2局域网由两个网段通过网桥B互联。请注意图中各结点的IP地址有以下特点:
图3-79 互联网中的IP地址
1)同一局域网上的主机或路由器的IP地址中的网络号必须是相同的。
2)用网桥互联的网段仍是同一个局域网,只能有一个网络号。
3)路由器(R1、R2和R3)总是具有两个或两个以上的IP地址。
4)两个路由器直接相连时,在连接线路两端的接口处可指明IP地址。
4.IP地址与网卡硬件地址的区别
在局域网中,硬件地址已固化在网卡上的只读存储器(Read Only Memory,ROM)中,因此通常把硬件地址称为物理地址。局域网的媒体访问控制(MAC)帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为MAC地址。硬件地址、物理地址和MAC地址常作为同义词。
图3-80说明了IP地址与硬件地址的区别。IP地址是IP数据报的地址,放在数据报的首部。从层次角度看,IP地址是网络层及其以上各层使用的地址。
发送数据时,数据从高层向下传送到低层,然后再到通信链路上传输。IP数据报一旦交给了数据链路层,就被封装成MAC帧。MAC帧在传送时使用的源地址和目的地址都是硬件地址。
图3-80 IP地址与硬件地址的区别
通信设备(主机或路由器)是根据媒体访问控制(MAC)帧首部的硬件地址接收的。在剥去MAC帧首部和尾部后再将MAC层的数据交给上面的网络层(此时MAC层的数据变成了IP数据报)。网络层才能在IP数据的首部找到源IP地址和目的IP地址。
总之,放在IP数据报首部的IP地址是网络层及以上使用的IP地址。放在MAC帧首部的硬件地址是数据链路层及以下使用的硬件地址。因此在数据链路层是看不见数据报IP地址的。
图3-81a是用两个路由器R1和R2连接三个局域网构成的互联网。主机H1要与H2通信。这两个主机的IP地址分别是IP1和IP2,它们的硬件地址分别为HA1和HA2,这里HA表示Hardware Address(硬件地址)。它们的通信路径是:H1→经R1转发→再经R2转发→H2。
图3-81 从不同层面上看IP地址和硬件地址
a)网络配置 b)不同层次、不同区间的源地址和目的地址
路由器R1因为同时连接到两个局域网上,因此有两个硬件地址,即HA3和HA4。同理,路由器R2也有两个硬件地址HA5和HA6。图3-81b特别表明了IP地址和硬件地址的区别。
5.子网划分和掩码
(1)划分子网。为便于寻找互联网络中的相关网络和连接在该网络上的主机,32bit长度的IP地址分为网络标识地址Netid和主机或路由标识地址Hostid两部分。在传送数据时,首先利用第一部分网络标识Netid找到互联网络中对应的网络,然后再根据第二部分主机标识地址Hostid找到该网络上的目的主机。也就是说,A、B、C三类的地址结构都是两级层次结构,如图3-82所示。
图3-82 两级地址结构的网络
现在看来,IP地址的两级层次结构设计确实还有不够合理之处,例如:
①IP地址空间的利用率有时很低。
每个A类地址网络可连接的主机数超过1000万。每个B类地址网络可连接的主机数也可超过6万。然后有些网络对连接在网络上的计算机数目有限制,不可能达到如此大的数量。如10Base-T以太网规定其最大结点数只有1024个,使用B类地址时,就会浪费6万多个IP地址,地址空间的利用率还不到2%,造成IP地址的浪费,使IP地址资源更早地被用光。
②如果将大量主机安装在同一个网络上往往会影响网络的性能,就有可能会发生网络拥塞。
③每一个物理网络分配一个网络号会使路由表变得太大,使网络性能变坏。
④无法随时增加本单位的网络,因为本单位必须事先到因特网管理机构中去申请并获得批准后,才能连接到因特网上工作。
为此,从1985年起,把两级层次的IP地址网络变成为三级层次的IP地址网络。这种做法叫做划分子网(Subneting)或子网寻址或子网路由选择,并已成为因特网的标准协议。
子网划分是将一个网络进一步划分成若干个子网络(Subnet)。划分子网纯属单位内部的事情,与本单位以外的网络无关,对外仍然表现为一个大网络。子网划分的方法是从网络的主机号中借用若干比特作为子网号Subnetid,而主机号也就相应减少了若干比特。于是两级的IP地址在本单位内部的网络中变成三级的IP地址,即网络号Netid、子网号Subnetid和主机号Hostid。凡从其他网络发送给本单位网络中某个主机的数据报,仍然是根据IP数据报的目的网络号Netid找到连接在本单位网络上的路由器,此路由器在收到IP数据报后,再按目的网络号Netid和子网号Subnetid找到目的子网,将IP数据报交付给目的主机。
图3-83是将一个网络划分成3个子网的例子。IP数据报的目的主机地址是B类地址:144.14.2.21,因特网仍将该数据报送到路由器R1,路由器R1将该目的地址进行解释,知道144.14这个网络在物理上已分成3个子网。根据IP地址中的后两个字节分别确定子网标识Subnetid为2和主机标识Hostid为21。这样就将IP地址改变为3级层次结构,第1级是网路标识144.14,确定网络;第2级是子网标识2,确定子网;第3级是主机标识21,确定在该子网上的主机。
图3-83 具有3级层次结构的网络
图3-84 是上面例子中二级地址(无子网)和三级地址(有子网)的网络地址分配的情况。
图3-84 网络IP地址的层次结构
a)无子网情况 b)有子网情况
(2)子网掩码。当没有划分子网时,IP地址是两级结构,网络号字段是IP地址的“因特网部分”,主机号字段是IP地址的“本地部分”,如图3-85a所示。
划分子网后就成了三级IP地址结构,子网只是将IP地址的本地部分进行再划分,而不改变IP地址的因特网部分,如图3-85b所示。
但是如何能让计算机知道有无子网划分呢?这就是使用另一个长度也是32bit的子网掩码(Maskcode)来解决这个问题。
图3-85 IP地址的各字段和子网掩码
a)两级IP地址 b)三级IP地址 c)子网掩码 d)划分子网时的网络地址 e)不划分子网的网络地址
子网掩码和IP地址一样长,都是32bit,它由一串“1”和跟随的一串“0”组成。
子网掩码中的“1”表示与IP地址中的网络号和子网相对应的部分。子网掩码中的“0”表示与IP地址中的主机号相对应的部分,如图3-85c所示。
在IP地址划分子网的情况下,把子网掩码和划分子网的IP地址进行逐个比特相“与”(AND),便可得出主机号为全“0”的划分子网的网络地址,即<Netid>+<Subnetid>+全“0”的<Hostid>,如图3-85d所示。
如果IP数据报地址为不划分子网的地址,那么子网掩码和不划分子网的IP地址进行逐个比特相“与”(AND)的结果为如图3-85e所示的网络地址,即<Netid>+全“0”的<Hostid>。
这种不管有无子网都适用的子网掩码称为默认的子网掩码。显然:
A类地址的默认子网掩码是255.0.0.0,或0xFF000000。
B类地址的默认子网掩码是255.255.0.0,或0xFFFF0000。
C类地址的默认子网掩码是255.255.255.0,或0xFFFFFF00。
表3-15是B类地址的子网划分选择。可以看出,若适用较少比特数的子网号,则每个子网上可连接的主机数量较大。反之,使用较多比特数的子网号,则子网的数据可以较多,但每个子网上可连接的主机数量较少。可根据网络的具体情况来选择合适的子网掩码。
表3-15 B类地址的子网划分选择(使用固定长度子网)
6.IP多播的基本概念
IP多播(Multicast)又称组播,即一对多的通信,现已成为因特网的一个热门课题,广泛用于交互式会议、软件升级和信息交付(如新闻、股市等)。
图3-86 采用多播路由器的多播系统
局域网的多播是用硬件实现的。在因特网上向多个站发送同样的数据报可以有两种方法:一种是采用单播方式,每次向一个目的站发送数据报,然后连续向各目的站进行多次发送。另一种是采用图3-86中的路由器进行复制转发。主机X在进行多播时只要发送一个数据报,到了路由器R2才进行数据报复制,然后到了R6再复制一次。也就是说,多播数据报仅在传送路径分岔时才将数据报复制后继续转发。能够运行多播协议的路由器称为多播路由器(Multi-cast router)。
在因特网上进行多播称为IP多播。最常用的两种IP多播方式为:
(1)使用组地址多播。IP使用的D类地址支持多播。D类IP地址的前缀是1110,因此地址的范围是224.0.0.0到239.255.255.255。每个D类地址标识一组主机。D类地址可用来标识有28bit的各个主机组(Host group),因此可标识228个多播组(超过2亿5千万个多播组)。显然,多播地址只能用于目的地址,而不能用于源地址。
(2)使用硬件进行多播。因特网是由许多网络互联起来的,其中有些是以太网,这些以太网本身就具有硬件多播能力,因此当多播数据报传送到这些以太网时,以太网就利用硬件进行多播,交付给属于该组成员的主机。以太网硬件地址字段中的第一个字节为0x01时则为多播地址。
因特网号码指派管理局IANA拥有的以太网地址块的最高位为24bit(0x00005E),也就是说,整个以太网硬件的地址范围为0x00005E000000~0x00005E FFFFFF。IANA用其中的一半作为多播地址,因此,以太网多播地址的范围是0x00005E000000~0x00005E 7FFFFF。这样,以太网中只有23bit可用作多播地址。而D类IP地址可供分配的有28bit,可见在这28bit的前5个bit不能用来构成以太网硬件地址,如图3-87所示。
图3-87 D类IP地址与以太网地址的映射关系
7.因特网的域名系统
用户与因特网上某主机通信时,很难记忆和使用长达32bit二进制的主机地址。即使是点分十进制IP地址也并不容易记忆。大家都希望能使用某种容易记忆和便于操作的主机名字。这就是域名系统(Domain Name System,DNS)。
因特网的域名系统(Domain Name System,DNS)采用联机的客户服务器方式组成一个分布式联机的数据库系统。用域名服务器把主机域名和IP地址一一对应。连接在因特网上的任何一个主机或路由器,都有一个唯一的层次结构的名字,即域名(Domain name)。当用户要和因特网上某台计算机交换信息时,只需使用域名,网络会自动转换成IP地址,找到该台计算机。
每台计算机的域名由一系列的字母和数字组成。例如,清华大学计算机科学与技术系的域名为cs.tsinghua.edu.cn,其中cn代表中国,edu表示教育部门,tsinghua表示清华大学,cs表示计算机科学与技术系。由此可见,域名是有层次的,域名中的最末部分通常都表示国家,最左部分代表该台计算机的名字。域名是一个逻辑概念,它不必与物理地址相一致。
下面是对域名的分级以及域名和IP地址的映射的具体介绍。
(1)域名的分级。早期的因特网使用的是非等级的名字空间来描述域名,其优点是名字简短,缺点是不能推广到具有大量计算机的网络。由于名字取自单一的标识字符集,随着网点数量的增加,潜在的冲突也随之增多。为此,因特网国际特别委员会(Internet International Ad Hoc Committee,IAHC)决定不采用集中命名的机制,而是采用分布的名字空间管理机构,使名字和地址的映射任务分布执行。
域名的结构由若干分量组成,各分量之间用点隔开,这些分量分为顶级域名、二级域名、三级域名……每一级由英文字母和数字组成(最多不超过63个字符,字母不分大小写)。级别最低的域名写在最左边,级别最高的顶级域名写在最右边。完整的域名不超过255个字符。域名系统不规定一个域名需包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,最高的顶级域名由因特网有关机构管理。用这种方法可使每一个名字都是唯一的,并且容易查找域名。
顶级域名有3类:
1)国家顶级域名:如cn表示中国、us表示美国和uk表示英国。
2)国际顶级域名:采用int。
3)通用顶级域名:com表示公司企业、net表示网络服务机构、org表示非盈利性组织、edu表示教育机构、gov表示政府部门、mil表示军事部门、firm表示公司企业、shop表示销售公司和企业、web表示万维网活动单位、arts表示文化娱乐单位、info表示信息服务单位和nom表示个人。
二级域名均由各国自行确定,我国把二级域名划分为“类别域名”和“行政区域名”两类。类别域名为:ac表示科研机构,com表示工、商和金融企业,edu表示教育机构,gov表示政府部门,net表示互联网络,NIC表示接入网络的信息中心和运行中心(NOC),org表示各种非盈利性组织。“行政区域名”共34个,适用于我国各省、自治区、直辖市。如bj为北京市、sh为上海市和js为江苏省等。
二级域名下面的三级域名可向中国互联网网络中心CNNIC申请。
(2)域名和IP地址的映射。域名方案应包括一个高效、可靠、通用的分布系统,实现名字与IP地址的映射,特点是
1)系统应是分布的。由分布在多个网点的一组服务器协同操作解决映射问题。
2)系统应是高效的。大多数名字映射在本地操作,只有少数名字映射需要在互联网上通信。
3)系统应是可靠的。单台计算机故障不会影响系统正确运行。
4)系统应是通用的。它不仅限于使用机器名。
图3-88是一个树形结构的域名服务器的概念布局。树的根是识别顶层域名的服务器。它是一个能解析每个域名的服务器,并为该名字选择一个正确的服务器,然后逐级往下搜索,最后将结果返回。
每一个域名服务器不但能够进行一些域名到IP地址的转换,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,就能够知道到什么地方去找其他的域名服务器。
图3-88 域名服务器的树形概念布局
因特网上的域名服务器系统是按照域名的层次来安排的。每一个域名服务器都只对域名系统中的一部分进行管辖。现在共有3种不同类型的域名服务器。
(1)本地域名服务器。每个因特网接入服务商(Internet Service Provider,ISP)、一个大学或大学里一个系,都可拥有一个本地域名服务器(Local name server),有时也称默认域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离。如果需要查询的主机也属于同一个本地ISP时,则本地域名服务器立即就能将查询的主机名转换为它的IP地址,而不需要去询问其他的域名服务器。
(2)根域名服务器。当本地域名服务器不能立即回答某主机的查询时,该本地域名服务器就以DNS域名系统客户的身份向某一个根域名服务器(Root name server)查询。如果根域名服务器具有被查询主机的信息,就把DNS回答的报文发送给本地域名服务器,然后本地域名服务器再回答发起查询的主机。如果根域名服务器没有被查询主机的信息时,它就一定知道某个保存被查询主机各自映射的授权域名服务器的IP地址。
根域名服务器通常用来管辖顶级域(如.com)的域名转换,而不直接对顶级域下面所属的域名进行转换,它能够找到下面所有的二级域名服务器。
(3)授权域名服务器。每个主机都必须在授权域名服务器(Authoritative name server)处注册登记。通常一个主机的授权域名服务器就是它的本地的因特网接入服务商ISP的一个域名服务器。为了更加可靠的工作,一个主机最好至少有两个以上的授权服务器。许多域名服务器同时充当本地域名服务器和授权域名服务器。
3.9.6 Internet地址空间的扩展(IPv6)
IP协议是因特网的关键协议。现在使用的IP协议是在20世纪70年代末期设计的Internet协议第4版,故称IPv4。从70年代末21世纪初,处理器的性能提高了两个数量级,存储器的容量提高了32倍以上,因特网主干网的带宽提高了1000倍。因特网上的主机数量已达亿万数量级。
虽然IPv4的设计比较完善,但随着因特网用户的飞速增加,32bit的IP地址空间已难以满足日益增加的需求。
除了地址空间需要扩展外,还有增加的各种新的应用要求,例如实时话音和图像通信要求低的延时,安全通信保障等,要求新版的IP设计能为特定应用预留资源。
为此,因特网工程特别工作组(Internet Engineering Task Force,IETF)在1992年6月提出要制定下一代IP协议版本,即IPv6。1998年12月发表了IPv6的草案标准。
IPv6保持了IPv4许多成功的优点。它仍支持无连接发送,允许发送方选择数据报大小,要求发送方指明数据报到达目的站前的最大跳数等。于是IPv6对IPv4协议细节作了许多修改,这些修改可分为下面5大类:
(1)具有更大的地址空间。IPv6将原来IPv4的32bit的地址空间增大到128bit地址空间。它的地址空间达到永远不会耗尽。
(2)灵活的报头格式。IPv6使用一种全新的、可任选的扩展报头格式。路由器不处理扩展报头,提高了路由器的处理效率。
(3)增加选项,提供新的应用功能。IPv6允许数据报包含可选的控制信息。
(4)支持资源分配。提供新的机制支持实时话音和图像等要求保证一定带宽和延时的应用。
(5)支持协议扩展,允许新增特性,满足未来发展。
1.IPv6数据报格式
图3-89 IPv6数据报的基本格式
图3-89是IPv6数据报的基本格式。数据报有一个基本报头(base header),其后可以有多个扩展报头(extension header),也可没有扩展报头,扩展报头之后是数据。所有的扩展报头(或称扩展首部)和数据合起来构成有效载荷(payload)。
IPv6基本报头的内容和格式如图3-90所示。IPv4数据报中的选项和一些固定字段移到了IPv6的扩展报头。
图3-90 IPv6数据报头的格式
每个IPv6数据报都从基本报头开始,基本报头后面是有效载荷,它包括高层的数据和可能选用的扩展报头(或称首部)。下面是IPv6基本报头中的各字段。
(1)版本(Version)。它占4bit。指明协议版本,对于IPv6,该字段为6。
(2)通信量分类(Traffic class)。它占8bit。区别不同的IPv6数据报的类别。
(3)数据流标号(Flow label)。它占20bit。IPv6的新机制是为支持资源预定而提出的在互联网上单播或多播的一系列数据报(如实时音视频传输)“流”所经过的路径上的路由器都能保证达到指明的服务质量。所有属于同一个“流”的数据报,都具有同样的数据流标号。
(4)有效载荷长度(Payload length)。它占16bit。标明IPv6数据报除基本报头以外的全部字节数。这个字段的最大长度为64kB。
(5)下一个报头(Next header)。它占8bit。
1)当IPv6数据报没有扩展报头时,下一个报头字段的作用和IPv4的协议字段一样。
2)当IPv6数据报出现扩展报头时,下一个报头字段的值,标识后面第一个扩展报头的类型。
(6)跳数限制(Hoplimit)。它占8bit。用来防止数据报在网络中无限期存在。每个路由器转发一次数据报,限制数字段中的跳数限制数值减一,直至跳数限制值到0时被丢弃。
(7)源地址。它占128bit(16B)。数据报发送站的IP地址。
(8)目的地址。它占128bit(16B)。数据报接收站的IP地址。
2.IPv6的地址空间
(1)128bit的地址空间。在IPv6中,每个地址占128bit,即2128=3.4×1038个地址。如果整个地球表面(包括陆地和水面)都覆盖着计算机,那么IPv6可给予每平方米7×1023个IP地址。如果地址的分配速率为每微秒分配100万个地址,那么需要1019年的时间才能将这些IP地址分配完毕。因此,IPv6的IP地址是不可能用完的。
一般来讲,一个IPv6数据报的目的地址可以是以下3种基本类型之一。
1)单播(Unicast):单播就是传统的点对点通信。单播地址指明计算机或路由器发送的数据报选择一条最短的路径到达目的站。
2)多播(Multicast):多播是一点对多点的通信。数据报交付到一组计算机中的每一个。多播又称组播,组播的目的站可以在不同的地方。
3)任播(Anycast):这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付给其中一个距离最近的一个计算机。
在IPv6中,每个128bit的地址占有16个8bit,是IPv4地址长度的4倍。对于如此巨大的地址空间,维护互联网的人们如何阅读、输入和管理呢?显然,用二进制表示是不可取的。IPv4使用的点分十进制表示方法也不能简洁地表示这些地址。于是IPv6的设计者决定采用冒号十六进制的表示方法。即把16bit的值用十六进制表示。8组16bit的十六进制数值之间用冒号将其分隔。例如128bit的地址,用点分十进制表示为:104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255。上述同样的IPv6地址用冒号十六进制表示时,则为:68E6:8C64:FFFF:FFFF:0:1180:96A:FFFF。冒号十六进制表示与点分十进制表示相比,只需更少的数字和更少的分隔符,具有明显的优点。
(2)地址空间的分配。同IPv4一样,IPv6将一个地址与一个特定的网络连接相关联,而不是与一个特定的计算机相关联。地址的分配也类似于IPv4,IPv4对一个物理网分配一个地址前缀,即网络地址,IPv6保留了这种地址体系,且有所扩展。为了地址分配和修改方便,IPv6允许对给定的网络分派多个前缀,也允许对一个主机的给定接口同时分配多个地址。
3.从IPv4向IPv6过渡
20世纪70年代正式开发建设第一代互联网,并于1994年投入商业运行和统一使用TCP/IP协议。当时设计的IPv4协议的IP地址约有40多亿个。由于美国掌握绝对控制权,IP地址分配上明显偏袒美国。加上部分IP地址未能得到合理利用,所以,IPv4的IP地址已面临枯竭。
目前,我国6000多万上网用户只有3000多万个IP地址可供使用。飞速增长的IP地址需求与现有地址不足的问题正逐渐成为制约国内互联网发展的瓶颈。我国计划在4~6年时间内,将原来的IPv4网络改造成IPv6网络。实施IPv6的网络不仅可解决IP地址紧缺问题、传输质量问题,而且网络传输的速度将可提高1000~10000倍。
要解决IPv4向IPv6的过渡不是一件容易的事情。因为现在整个因特网上使用的IPv4路由器的数量实在太大,要在一个短时间内一律改成IPv6路由器,显然是不可能的,因此只能采用逐步演进的办法。此外,新安装的IPv6系统能够向后兼容。即它们必须还能接收和转发IPv4的分组,并且能为IPv4分组选择路由。从IPv4向IPv6过渡的策略有两种:
(1)双协议栈。双协议栈(Dualstack)是指在完全过渡到IPv6前,把一部分主机和路由器改成装有IPv4和IPv6两个协议栈,如图3-91所示。这种主机既能和IPv6系统通信,又能和IPv4系统进行通信。显然双协议栈的主机或路由器应具有两个IP地址:与IPv6主机通信时采用IPv6地址,与IPv4主机通信时采用IPv4的地址。
双协议栈主机怎样知道目的主机采用哪种地址呢?它是使用域名系统(DNS)来查询确认。若DNS返回的是IPv4地址,双协议栈的源主机就使用IPv4地址。当DNS返回的是IPv6地址时,源主机就使用IPv6地址。
图3-91 双协议栈工作原理
(2)隧道技术。隧道技术(Tunneling)的原理是通过转换两种协议的数据包实现通信的方法。即把源主机的IPv6数据报在进入IPv4区域时,把它封装成IPv4的数据报(整个IPv6变成了IPv4数据报的数据部)。
当IPv4数据报离开IPv4区域时,再将其数据部分(即原来的IPv6数据报)交给主机的IPv6协议栈。整个过程好像打通了一个“IPv6隧道”。要使协议栈的主机知道IPv4数据报里面封装的数据是一个IPv6数据报,就必须将IPv4报头的协议字段值设置为41,41表示数据中的数据部分是IPv6数据报。图3-92a是隧道技术过渡的工作原理图。图3-92b是双协议栈过渡的工作原理图。
图3-92 使用双协议栈和隧道技术进行IPv4到IPv6的过渡
a)隧道技术过渡 b)双协议栈过渡
近期我国第一个IPv6主干网CERNET2试验网正式开通,并开始提供服务,成为第一个全国性下一代互联网的主干网,标志着IPv6在我国已正式步入应用阶段。
3.9.7 路由技术
路由选择是一个非常复杂的问题,因为它是网络中所有结点共同协调工作的结果。其次,路由选择的环境往往是不断变化的,这种变化有时是无法事先知道的,例如,网络中出现了某些故障或网络发生拥塞等情况。
路由算法如果按网络的通信量或网络的拓扑情况进行自适应的调整,可分为静态路由选择和动态路由选择两类。静态路由选择又称非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。动态路由选择又称自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也较大。
因特网采用自适应动态的、分布路由选择协议。由于下面两个原因,因特网采用分层次的路由选择协议:
(1)因特网的规模非常大,有几百万个路由器互连在一起。如果让所有的路由器知道所有的网络怎样到达的,则这种路由表将会非常大,处理时间也很长,这些路由器之间交换路由信息所需线路的带宽会使因特网通信链路达到饱和。
(2)各单位不愿意外界了解本单位网络的布局细节和采用的路由选择协议,但希望能够连接到因特网上。
为此,因特网将整个互联网划分成许多较小的自治系统(Autonomous System,AS)。一个自治系统是一个互联网,它的特点是有权自主决定在本系统内采用何种路由选择协议。一个自治系统所有路由器都必须在本自治系统内是连通的。如果一个部门管辖两个网络,但这两个网络要通过其他主干网才能互连起来,那么这两个网络就不能构成一个自治系统。这样因特网就把路由选择协议划分为如图3-93所示的两大类:内部网关协议(Interior Gateway Protocol,IGP)和外部网关协议(External Gateway Protocol,EGP)。
自治系统之间的路由选择也称为域间路由选择(Interdomain Routing);自治系统内部的路由选择称为域内路由选择(Intradomain Routing)。
图3-93中每个自治系统的路由器运行本自治系统的内部网关协议IGP(Interior Gateway Proto-col),还有一些边界路由器(图中的R1、R2和R3)除运行本自治系统的内部网关协议IGP外,还要运行自治系统之间的外部网关协议EGP(External Gateway Protocol)。
图3-93 自治系统和内部网关协议、外部网关协议
内部网关协议(IGP)的具体协议有多种,常用的有路由信息协议(Routing Information Protocol,RIP)和开放最短路径优先协议(Open Shortest Path First,OSPF)。
外部网关协议EGP目前使用的协议是边界网关协议(Border Gateway Protocol,BGP)。
3.9.8 内部网关协议
最常用的内部网关协议(IGP)有路由信息协议(RIP)和开放最短路径优先协议(OSPF)两种。注意,因特网的早期文档中未使用“路由器”,而是使用“网关”这一名字。现在的因特网文档都使用了“路由器”这个名字。因此内部网关协议(IGP)可改为内部路由协议(Interior Routing Protocol,IRP),外部网关协议(EGR)可改为外部路由协议(Exteral Routing Protocol,ERP)。
1.路由信息协议
路由信息协议(Routing Information Protocol,RIP)是内部网关协议(IGP)中使用得最广泛的一种协议,它是一种分布式的距离向量的路由选择协议。它的最大优点是简单。
RIP协议中的“距离”称为“跳数”(Hopcount),每经过一个路由器,跳数就加1。RIP认为一个最好的路由就是它通过的路由器数目最少,即距离最短,RIP允许一条路径中最多只能包含15个路由器(直接连接的网络因为不经过另外的路由器,所以它的“网络距离”可定义为0),因此RIP只适用于小型互联网。
相邻的路由器之间按固定的时间间隔(如30s)交换路由信息,更新路由表。路由表更新的原则是找到各目的网络的最短距离。这种更新算法称为距离向量算法。
RIP的主要问题是当网络发生故障时,需经过较长的时间才能将故障信息传送到全部路由器。但如果一个路由器发现了更短的路径路由,那么这种更新信息就会传得很快。
2.开放最短路径优先协议
开放最短路径优先协议(OSPF)是为克服RIP协议的这些缺点在1989年开发出来的。OSPF最主要的特征是使用分布式的链路状态协议(Link state protocol),而不是像RIP那样的距离向量协议。OSPF协议与RIP协议相比有3个不同要点:
(1)向本自治系统中的全部路由器发送路由信息。
(2)发送的信息是说明本路由器与哪些路由器相邻的“链路状态”及用来表示链路“度量”(表示费用、距离、延时、带宽等)的信息。
(3)只有当链路状态发生变化时,路由器才向其他所有路由器发送更新信息,由于各路由器之间频繁地交换链路状态信息,所以所有路由器最终都能建立一个链路状态数据库(Link state database),这个数据库实际上就是全网的拓扑结构图。
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统中的各个子网划分成若干个区域(Area),每个区域都设有一个32bit的区域标识符(用点分十进制表示)。
OSPF不用用户数据报协议(User Datagram Protocol,UDP),而是直接用IP数据报传送。OSPF构成的数据报很短,可减少路由信息的通信量。
为确保链路状态数据库与全国的状态保持一致,OSPF还规定每隔一段时间,如30min,要刷新一次数据库中的链路状态。
3.9.9 外部网关协议
两个选择路由信息的路由器如果分别属于两个自治系统,则称为外部邻站。外部邻站使用的向其他自治系统通知可达信息的协议称为外部网关协议(External Gateway Protocol,EGP)。EGP支持自治系统(AS)之间的邻站路由器交换可达信心、路由器持续地测试其邻站是否有响应以及周期地传送路由更新报文传送来的交换网络信息。
为适应因特网发展的需要,因特网工程组于1995年发布了边界网关协议(Border Gateway Pro-tocol,BGP)作为不同自治系统的路由器之间交换路由信息的协议。
BGP力求寻找一条能够到达目的网络、且比较好的(不能兜圈子)路由,BGP-4(简称BGP)采用了路径向量(Pathvector)的路由选择协议。它与距离向量协议和链路状态协议有很大的区别。
BGP协议交换的路由信息结点数与自治系统的数量相等,因此,这些网络数比自治系统内部的网络数要少很多,即边界路由器的数量是很少的。这样就可简化路由选择。
3.9.10 Internet接入
Internet用户可通过计算机数字网、公用电话交换网(Public Switched Telephone Network,PSTN)、不对称数字用户线(Asymmetric Digital Subscriber Line,ADSL)、CATV有线电视网、因特网接入服务商(Internet Service Provider,ISP)和无线通信网等多种方式接入。
1.拨号接入
因特网最普通的接入方法是通过电信系统拨号接入终端。拨号接入都要利用公用电话交换网(PSTN)、通过电路交换和时分复用系统(Time Division Multiplex,TDM)进行。它的本地环路本质上是模拟系统,用调制解调器进行信号变换和传输。
这种接入的缺点是:误码率高、带宽限制、网络资源浪费和占用呼叫时间等。
综合业务数字网(Integrated Service Digital Network,ISDN)具有数字本地环路的优点,它明显地改善了网络性能,提高了吞吐量。通过一个终端适配器(Terminal Adapter,TA),ISDN的基本速率接口可提供完全对称的带宽,其数据速率可达64kbit/s或128kbit/s,可用于远程视频会议系统和数字会议系统。
ISDN也是一种电路交换接入技术,必须由因特网接入服务商(Internet Service Provider,ISP)提供支持,采用基群速率接口的形式,聚合速率为1.544Mbit/s,分成23个信道。
2.XDSL宽带数字用户线接入
XDSL(Digital Subscriber Line)数字用户线的统称,它又可分为对称数字用户线(Symmetric Digital Subscriber Line,SDSL)(上行和下行速率对称相等)和不对称数字用户线(Asymmetric Digital Subscriber Line,ADSL)(上行速率低于下行播放速率)。数据传输的速率根据采用的技术不同而不同。大多数情况下,接入的速度是非对称的,下行提供更大的带宽。因此,ADSL获得了更广泛的应用,无论是接入因特网还是内部局域网都是完全合适的。
ADSL接入是一直打开的,因此不需建立呼叫,也就没有呼叫延时问题了。
3.有线电视系统接入
因特网也可通过CATV有线电视供应商提供接入服务。20世纪末期,一些大中型城市的CATV供应商开始用光纤升级他们传统的同轴电缆网络,从而进一步地提高了全国的传输性能。即使在未升级的同轴电缆网络上,不仅可以播放下行电视,而且还可支持双向Internet的存取及其他数据传输应用。设备的升级可支持有线电视的双向传输和上、下行专用数据通道传输,而且可以以比XDSL更优惠的费用向终端用户提供高速的因特网接入。用于电缆传输的调制解调器标准的开发成功,促进这种接入方案的实现。
与ADSL一样,电缆调制解调器的接入也是不对称的,这对用户使用更合理。
4.卫星电视网接入
卫星电视网络是接入因特网络的另一种方案。通过赤道上空约36000km高的地球同步通信卫星上的转发器接入因特网是很有前景的,因为同步通信卫星的通信覆盖范围可达到整个地球,而且还提供相当大的带宽。它的最大缺点是双向连接会产生相当大的延时,因为信号往返传输至少需要0.64s。