1、 第21章IP通信及IP通信网21.1TCP/IP协议协议21.2IPv6 简介简介21.3路由器与路由器与IP通信的路由选择协议通信的路由选择协议本章小结本章小结 21.1 TCP/IP协议协议21.1.1 TCP/IP模型及各层功能模型及各层功能开放系统互联(OSI)参考模型是一个分层模型,分层模型包括各层功能和各层协议描述两方面的内容。每一层提供特定的功能,层与层之间相对独立,当需要改变某一层的功能时,不会影响其他层。采用分层技术,可以简化系统的设计和实现,提高系统的可靠性和灵活性,因此TCP/IP也采用分层体系结构。TCP/IP模型与OSI参考模型的对应关系如图21.1.1所示。图21
2、.1.1 OSI与TCP/IP模型的对应关系TCP/IP仅有四层,网络接口层对应OSI参考模型的物理层和数据链路层;网络层对应OSI参考模型的网络层;运输层对应OSI参考模型的运输层;应用层对应OSI参考模型的5、6、7层。应注意的是,TCP/IP模型并不包括物理层,网络接口层下面是物理网络。1.网络接口层在网络接口层中,数据传送单位是物理帧,网络接口层的主要功能包括:(1)发送端接收来自网络层的IP数据报,将其封装成物理帧并且通过特定的网络进行传输。(2)接收端从网络上接收物理帧,将数据帧的IP数据报取出上交给网络层。网络接口层没有规定具体的协议。2.网络层网络层的作用是提供主机间的数据传送
3、功能,其数据传送单位是IP数据报。网络层的核心协议是IP协议,它非常简单,提供的是不可靠、无连接的IP数据报传送服务。网络层的辅助协议可协助IP协议更好地完成数据报传送,主要包括:(1)地址转换协议(ARP):用于将IP地址转换成物理地址。网络中的每一台主机都应有一个物理地址,物理地址也叫硬件地址,即MAC地址,它被固化在计算机的网卡上。(2)逆向地址转换协议(RARP):与ARP的功能相反,用于将物理地址转换成IP地址。(3)Internet控制报文协议(ICMP):用于报告差错和传送控制信息,其控制功能包括差错控制、拥塞控制和路由控制等。3.运输层TCP/IP运输层的作用是提供应用程序间端
4、到端的通信服务,以确保源主机传送的数据正确到达目地的主机。运输层提供了如下两个协议:(1)传输控制协议(TCP):提供可靠性高的面向连接的数据传送服务,主要用于一次传送数据量大的报文,如文件传送等。(2)用户数据报协议(UDP):提供高效率的、无连接的服务,用于一次传送数据量较小的报文,如数据查询等。运输层的数据传送单位是TCP报文或UDP报文。4.应用层TCP/IP应用层的作用是为用户提供访问Internet的高层应用服务,如文件传送、远程登录、电子邮件、WWW服务等。为了便于传输与接收数据信息,应用层要对数据进行格式化。应用层的协议就是一组应用高层协议,即一组应用程序,主要有文件传送协议F
5、TP、远程终端协议Telnet、简单邮件传输协议SMTP、超文本传送协议HTTP等。21.1.2 IP及辅助协议及辅助协议1.IP协议的特点及IP地址目前Internet广泛采用的IP协议是IPv4,为了解决IPv4的地址资源紧缺问题,最近IPv6逐渐推广应用。本节将主要介绍IPv4的相关内容。IP是网络层的核心协议,IP协议的主要特点为:仅提供不可靠、无连接的数据报传送服务;IP协议是点对点的,所以要提供路由选择功能;IP地址的长度为32 bit。IP地址是指Internet为每一上网的主机分配一个唯一的标识符。IP地址是分等级的,其结构如图21.1.2所示。IP地址的长度为32 bit,现
6、在由Internet名字与号码指派公司ICANN分配。IP地址由两部分构成:网络地址(也称为网络号),用于标示连接Internet的网络;主机地址(也称为主机号),用于标示特定网络中的主机。图21.1.2 IP地址的结构IP地址分为两个等级的优点是:IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由该网络号的单位(或机构)自行分配,这样就方便了IP地址的管理;另外,路由器仅根据目的主机所连接的网络号来转发分组,而不用考虑目的主机号,这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。IP地址用点分十进制表示。点分十进制是32 bit长的IP地址,以格式表示,为
7、8 bit其值为0255,共28=256。IP地址的表示如图21.1.3所示。图21.1.3 IP地址的表示例如,某IP地址的二进制值为10011000 0101000l 1000000l 00000011则其十进制为(27+24+23=152).(26+24+1=81).(27+1=129).(21+1=3)即152811293用点分十进制表示的方法可以提高IP地址的可读性,而且可以很容易地识别IP地址的类别。根据网络地址和主机地址各占多少位,IP地址分为AE类,如图21.1.4所示。图21.1.4 IP地址类别IP地址格式中,前几位用于标识地址是哪一类。A类地址的第一位为0;B类地址的前两
8、位为10;C类地址的前三位为110;D类地址的前四位为1110;E类地址的前五位为11110。由于IP地址的长度限定为32 bit,类的标识符占用位数越多,则可使用的地址空间就越小。Internet的5类地址中,A、B、C三类为主类地址,D、E为次主类地址。目前Internet中一般采用A、B、C类地址。表21.1.1为各类特性的汇总。需要注意以下事项:(1)起始地址是指前8位表示的地址范围。(2)A类地址标识的网络个数为27-2,减2的原因是IP地址中的全0表示“这个”(this),网络号字段为全0的IP地址是个保留地址,意思是“本网络”;网络号字段为127(即01111111)保留作为本地
9、软件环回测试本主机用(后面三个字节的二进制数字可为任意,但不能全部是0或1)。(3)每网主机数2n2,减2的原因是全0的主机号字段表示该IP地址是本主机所连接到的“单个网络”地址(如主机的IP地址为118.17.34.6,该主机所在网络的ID地址就是118.0.0.0);而全1表示“所有的”(all),因此全1的主机号字段表示该网络上的所有主机。(4)实际上IP地址是标示一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多接口主机,也就是实际中的路由器。由于一个路由器至少应当连接两个网络,这样它才能将
10、IP数据报从一个网络转发到另一个网络,因此一个路由器应至少有两个不同的IP地址。(5)D类地址不标识网络,起始地址为224239,用于特殊用途;E类地址的起始地址为240255,该类地址暂时保留,用于进行某些实验及将来扩展之用。两级结构的IP地址存在一些缺点:一是IP地址空间的利用率有时很低,如A类和B类地址每个网络可标识的主机很多,如果这个网络中同时接入网络的主机没那么多,显然主机地址资源空闲浪费;二是两级的IP地址不够灵活,为了解决这个问题,Internet采用子网地址,于是IP地址结构由两级发展到三级。2.子网地址和子网掩码为了便于管理,一个单位的网络一般划分为若干子网,子网按物理位置划
11、分,为了标示子网和解决两级IP地址的缺点而采用了子网地址技术。子网地址技术是指在IP地址中,对于主机地址空间采用不同的方法进行细分,通常另将主机地址的一部分分配给子网作为子网地址。采用子网地址技术后,IP地址结构变为三级,如图21.1.5所示。图21.1.5 三级IP地址的结构子网掩码是一个网络或一个子网的重要属性,其作用有两个:一个是表示子网和主机地址位数;二是将某台主机的IP地址和子网掩码相与,可确定此主机所在的子网地址。子网掩码的长度也为32 bit,与IP地址一样用点分十进制表示。已知一个IP网络的子网掩码,将其点分十进制转换为32位的二进制,其中“1”代表网络地址和子网地址字段,“0
12、”代表主机地址字段。例如,某网络IP地址为168.5.0.0,子网掩码为255.255.248.0。由于该IP地址的起始地址在128191间,所以为B类地址。B类地址网络地址空间为14位,再加2位标识位,共16位。后16位为子网地址和主机地址字段。子网掩码对应的二进制为11111111 11111111 11111000 00000000,子网地址占5位,主机地址占11位。此网络最多能容纳的主机数为(252)(2112)61 380。又例如,某主机IP地址为165.18.86.10,子网掩码为255.255.224.0。此主机IP地址所对应的二进制地址为10100101 00010010 01
13、010110 0001010,子网掩码255.255.224.0的二进制为11111111 11111111 11100000 00000000,将主机的IP地址与子网掩码相与,可得此主机所在的子网地址为10100101 00010010 01000000 00000000,即165.18.64.0。在Internet中,为了简化路由器的路由选择算法,不划分子网时也要使用子网掩码。此时采用默认的子网掩码是:1 bit的位置对应IP地址的网络号字段;0 bit的位置对应IP地址的主机号字段。另外,在一个划分子网的网络中可同时使用几个不同的子网掩码,称为可变长子网掩码。划分子网在一定程度上缓解了I
14、nternet在发展中遇到的地址资源紧缺的困难,但Internet 用户数急剧增长,使得整个IPv4的地址空间最终将全部耗尽。为了提高IP地址资源的利用率,研究出无分类编址方法,它的正式名字是无分类域间路由选择(Classless InterDomain Routing,CIDR)。3.无分类编址(无分类域间路由选择)无分类编址(CIDR)的主要特点是:IP地址不再划分A类、B类和C类地址,也不再划分子网,因而可以更加有效地分配IPv4的地址空间;CIDR使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号;IP地址采用无分类的两级编址。CIDR一般可表示为IP地址:网络前缀,主机号CI
15、DR也可以使用“斜线记法”,具体为:在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的比特数。例如,CIDR地址为196.28.65.30/22,二进制地址为11000100 00011100 01000001 00011110,表示网络前缀为22 bit,为11000100 00011100 0100,主机号为10 bit,为0100011110。需要注意的是,上例CIDR的斜线记法指的是单个的IP地址。CIDR将网络前缀都相同的连续的IP地址组成CIDR地址块。一个CIDR地址块是由起始地址和地址块中的地址数来决定的。CIDR虽然不再使用子网,但仍然使用“掩码”这一名词。掩码表示为:
16、网络前缀所占的比特数均为1,主机号所占的比特数均为0。例如,对于/22地址块,它的掩码是22个连续的1,接着有10个0,斜线记法中的数字就是掩码中1的个数。例如,76.0.0.0/12地址块的掩码,其掩码的二进制形式可为11111111 11110000 00000000 00000000,点分十进制的形式为255.240.0.0。4.IP数据报格式IP数据报的格式如图21.1.6所示,由报头和数据两部分组成,其中报头由20个字节长度的固定长度字段及可变长度的可选字段组成。图21.1.6 IP数据报格式IP数据报头的各部分含义如下:版本:占4 bit,数码IP协议的版本,目前的IP协议版本号为
17、4,即IPv4。报头长度:占4 bit,以32 bit(4 B)为单位,指示IP数据报报头的长度。如果报头只有固定长度的字段,则首部最短为20 B;报头长度字段占用4 bit,报头的最大长度为154=60 B。因此,报头的长度在2060 B。服务类型:占8 bit,用来表示用户所要求的服务类型,具体包括优先级、可靠性、吞吐量和时延等。总长度:占16 bit,以字节为单位,指示数据报的长度,数据报的最大长度为65 535 B。标识、标志和片偏移字段:共占32 bit,用来控制分片和重组。生存时间:占8 bit,记为TTL,用来控制数据报在网络中的寿命,其单位为s。协议:占8 bit,用来指出此数
18、据报携带的数据使用何种协议,以使目的主机的网络层决定将数据部分上交给到哪个处理。报头检验和:占16 bit,仅用于对数据报的头部进行差错检验。源地址和目的地址:各占4 B,即发送主机和接收主机的IP地址。可选字段:用来支持排错、测量以及安全等措施。填充:IP数据报报头长度为32 bit的整倍数,假如不是,则由0填充补齐。5.IP数据报的传送在发送端,源主机在网络层将运输层送下来的报文组装成IP数据报,在这期间还要对数据报进行路由选择,得到下一个路由器的IP地址,即IP数据报报头的目的地址,然后将IP数据报送到网络接口层。在网络接口层对IP数据报进行封装,将数据报作为物理网络帧的数据部分,并在数
19、据部分前面加上帧头,形成可以在物理网络中传输的帧,如图21.1.7所示。图21.1.7 IP数据报封装示意图每个物理层的网络都规定了物理帧的大小,物理层网络不同,对帧的大小要求也不同,物理帧的最大长度称为最大传输单元(MTU)。一个物理网络的MTU由硬件决定,通常情况下是保持不变的;而IP数据报的大小由软件决定,在一定范围内可以任意选择。可通过选择适当的IP数据报大小来适应Internet中不同物理层网络的MTU。另外,在网络接口层由网络接口软件调用地址解析协议(Address Resolution Protocol,ARP)得到下一个路由器的硬件地址(将IP地址转换为物理地址),再送到物理网
20、络上传输。源主机所发送的已封装成物理帧的IP数据报,在到达目的主机前,可能要经过多个相互连接的不同种类的物理层网络,这些连接由路由器来完成,为此路由器对IP数据报要进行以下处理:(1)路由选择,即每个路由器都要根据路由选择协议对IP数据报进行路由选择。(2)传输延迟控制。为避免由于路由器路由选择错误,致使数据报进入死循环的路由,IP协议对数据报传输延迟要进行特别的控制。为此,每当产生一个新的数据报,其报头中“生存时间”字段均设置为本数据报的最大生存时间,单位为秒(s)。随着时间的增加,路由器从该字段减去消耗的时间。一旦TTL小于0,便将该数据报从网中删除,并向源主机发送出错信息。(3)分片。I
21、P数据报要通过许多不同种类的物理层网络传输,而不同的物理网层络中MTU大小的限制不同。为了选定最佳的IP数据报大小,以实现所有物理层网络的数据报封装,IP协议提供了分片机制,在MTU较小的网络上,将数据报分成若干片进行传输。当所传数据报到达目的主机时,首先在网络接口层识别出物理帧,然后去掉帧头,抽出IP数据报后送给网络层。在网络层需对数据报目的IP地址和本主机的IP地址进行比较。如果相匹配,那么IP软件接收该数据报并将其交给本地操作系统,由高级协议的软件进行处理;如果不匹配,则IP要将数据报报头中的生存时间减去一定的值,当结果大于0时,需为其进行路由选择,否则丢弃该数据报。如果IP数据报在传输
22、过程中进行了分片,则目的主机须进行重组。6.Internet控制报文协议由于IP协议提供不可靠、无连接的数据报传送服务,因此在实际传送过程中可能会出现差错,为此需要建立差错检测与控制机制,用来报告传送错误和提供控制功能,以保证Internet的正常工作。控制功能主要有差错控制、拥塞控制和路由控制等。Internet控制报文协议(Internet Control Message Protocol,ICMP)指的是TCP/IP用来解决差错报告与控制的协议,它是IP协议正常工作的辅助协议。当IP数据报在传输过程中产生差错或故障时,ICMP允许路由器和主机发送差错报文或控制报文给其他路由器或主机。IC
23、MP作为IP报文,也与IP数据报文一样由一定的格式构成。ICMP报文由报头和数据两部分构成。当作为IP数据报的数据部分发送时,应加上数据报的首部,组成IP数据报后发送出去,ICP不是IP的高层协议,仅是网络层中的协议,其封装格式如图21.1.8所示。图21.1.8 ICMP数据报封装ICMP报文的格式如图21.1.9所示,它由报头和数据区两大部分构成。报头由类型字段、代码字段及校验和字段构成。图21.1.9 ICMP报文格式各字段的含义如下:类型:占8 bit,表示ICMP报文类型,类型字段不同的数值所表示的ICMP报文类型如表21.1.2所示。代码:占8 bit,用于进一步区分某种类型中的几
24、种不同情况。校验和:占16 bit,用于对整个ICMP报文的差错进行校验。参数字段:占32 bit,这部分内容与ICMP的类型有关,可以没有,也可不用。数据字段:ICMP报文数据区含有出错IP数据报报头及其前64 bit数据,这些信息将由ICMP提供给发送主机,以确定出错数据报。ICMP报文的类型为两种:ICMP差错报告报文和ICMP询问报文。ICMP差错报告报文主要有目的不能到达、源站抑制、数据报超时、数据参数问题、重定向(改变路由)等类型;ICMP询问报文有回送请求和回送应答报文、时间戳请求和时间戳应答报文、掩码地址请求和掩码地址应答报文、路由器询问和路由器通告报文等。7.ARP与RARP
25、在Internet中,每一个物理层网络中的主机都具有自己的物理地址,并且这些主机不能直接识别IP地址,IP地址也不能直接用来通信。在实际链路上传送数据帧时,须使用物理地址。在Internet中要求提供实现物理地址与IP地址转换的协议,为此TCP/IP提供了地址转换协议(ARP)和逆向地址转换协议(Reverse Address Resolution Protocol,RARP)。地址转换协议(ARP)的作用是将IP地址转换为物理地址。为此,在每台使用ARP的主机中,都保留了一个专用的高速缓存,存放着ARP转换表。表中登记有最近获得的IP地址和物理地址的对应关系。当某台主机要发送IP数据报时,查
26、找ARP表得到目的主机IP地址对应的物理地址,然后由物理层网络的驱动程序通过网络将已封装成物理帧的IP数据报传送给该物理层网络地址所对应的目的主机。ARP表中的表项是通过发送和接收ARP报文而获得的。首先ARP将带有源主机的物理地址和目的主机IP地址的报文向网络广播,当目的主机收到该报文后,由物理网络的驱动程序检查帧类型并交付给ARP。若ARP识别出自己的IP地址,则根据发送者的物理地址向发送者发出应答报文,说明自己的物理地址。源主机将所收到的目的主机IP地址和物理地址登记到ARP转换表中。此后在发送报文时,通过查ARP转换表,可以实现地址转换。逆向地址转换协议(RARP)的作用是将物理地址转
27、换为IP地址,并使知道自己硬件地址的主机能够获取其IP地址。RARP协议目前已很少使用。21.1.3 TCP和和UDP协议协议TCP/IP协议模型的运输层定义了两个并列TCP、UDP协议,它们均与一个“协议端口”的概念有关。1.协议端口协议端口简称端口,它是TCP/IP模型运输层与应用层之间的逻辑接口,即运输层服务访问点(Transport Service Access Point,TSAP)。当某台主机同时运行几个TCP/IP协议的应用进程时,需将到达特定主机上的若干应用进程相互分开。因此,TCP/IP提出协议端口的概念,同时对端口进行编址用于标示应用进程。也就是让应用层的各种应用进程都能将
28、其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。TCP和UDP协议规定,端口用一个16 bit的端口号进行标志。每个端口拥有一个端口号,表21.1.3为一些常用的端口号。可见,在Internet中,从一个主机向另一个主机发送信息时,需要三种不同的地址:第一个是硬件地址,用来标示网络上的一个唯一主机;第二个是IP地址,用来指定主机所连的网络;第三个是端口地址,用来唯一标示产生数据消息的特定应用协议或应用进程。2.用户数据报协议UDP由于UDP提供了协议端口以及不可靠的无连接的数据传输,因此UDP适用于高效率、低延迟的网络环境,可满足用户的
29、高效数据传输需求。在不需要TCP全部服务的时候,可以用UDP代替TCP。在Internet中UDP协议主要有简单传输协议(TFTF)、网络文件系统(NFS)和简单网络管理协议(SNMP)等。UDP报文由UDP报头和UDP数据组成,其中UDP报头由4个16 bit字段组成,其格式如图21.1.10所示。图21.1.10 UDP报文格式各字段的含义如下:信源端口:用于标示信源端应用进程的地址,即对信源端协议端口编址。信宿端口字:用于标示信宿端应用进程的地址,即对信宿端协议端口编址。长度:以字节(8 bit)为单位表示整个UDP报文长度,包括报头和数据,最小值为8字节,即仅为报头长。校验和:此为任选
30、字段,其值为“0”时表示不进行校验和计算,全为“1”时表示校验和为“0”,UDP校验和字段对整个包括报头和数据的报文进行差错校验。数据:该字段包含由应用协议产生的真正的用户数据。3.传输控制协议ICPTCP协议是Internet中最重要的协议之一,它提供了协议端口来保证进程通信的正常运行,提供了面向连接的全双工数据传输,保证了通信的可靠性。TCP的数据通信需要经历连接建立、数据传送和连接释放三个阶段。TCP提供高可靠的按序传送数据的服务,提供了确认与超时重传机制、流量控制、拥塞控制等服务。TCP报文由报文字段和数据字段构成,其格式如图21.1.11所示。图21.1.11 TCP报文格式各字段的
31、含义如下:源端口:占2 B,用于标示信源端应用进程的地址。目的端口:占2 B,用于标示目的端应用进程地址。序号:占4 B,TCP连接中传送数据流中的每一个字节都编号,序号字段值指的是本报文段所发送数据部分的第一个字节的序号。确认号:占4 B,用来标示期望收到对方的下一个报文段的数据部分第一个字节的序号。数据偏移:占4 bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多少个字节,即指示报头的长度,以4 B为单位进行指示。保留:占6 bit,保留为今后使用,但目前应置为0。6个比特集:说明报文段性质的控制比特。紧急比特(URG):当URG1时,表明紧急指针字段有效。它告诉系统此报文
32、段中有紧急数据,应尽快传送,它表示有相当于高优先级的数据要发送。确认比特(ACK):只有当ACK1时确认号字段才有效,当ACK0时确认号无效。推送比特(PSH):接收端TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。复位比特(RST):当RST1时,表明TCP连接中出现严重差错。例如,由于主机崩溃或其他原因,必须释放连接,然后重新建立运输连接。同步比特(SYN):当SYN=1时,表示连接请求或连接接收报文。终止比特(FIN):用来释放一个连接,当FINl时,表明此报文段的发送端数据已发送完毕,并要求释放运输连接。窗口:占2 B,用来控制对方发
33、送的数据量,单位为Byte。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口上限。校验和:占2 B,用来对整个包括报头和数据部分的TCP报文段进行差错检验。紧急指针:占2 B,用来指出在本报文段中紧急数据的最后一个字节的序号。选项:长度可变,TCP只规定了一种选项,即最大报文段长度(MSS),MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。4.TCP通信的三个阶段TCP协议数据通信时需经历连接建立、数据传送和连接释放三个阶段。1)建立阶段TCP通信时,连接建立的过程如图21.1.12所示。主机A的TCP向主机B发
34、出连接请求报文段,其报头中的同步比特SYNl,序号SEQx,向主机B表明传送数据时的数据部分第一个字节的序号是x+1。图21.1.12 TCP通信连接建立过程主机B的TCP收到连接请求报文段后,若同意建立连接,则发回连接接收报文段。在连接接收报文段中SYN、ACK均应置为l,其确认号应为x+1。同时主机B也为自己选择序号SEQ=y,向主机A表明传送数据时数据第一个字节的序号是y+1。主机A收到此连接接收报文段后,再向主机B返回确认报文段,ACK=1,确认号应为y+1,而自己的序号SEQx+1。同时主机A的TCP通知上层应用进程,运输连接已经建立。主机B的TCP收到主机A的确认后报文段,也通知其
35、上层应用进程,运输连接已经建立。当主机A向主机B发送第一个数据报文段时,其序号仍为SEQ=x+1,这是因为前一个确认报文段并不消耗序号。从以上过程可见,TCP运输连接的建立采用三次握手,原因是防止已失效的连接请求报文又传送到接收端而产生错误。2)数据传输在数据传输过程中可能出现两种情况,即正常传输和非正常传输。正常传输时,发送端主机所发送的数据能被接收端主机正确接收;而非正常传输则是发送端数据不能被接收端主机正确接收,即出现数据差错或丢失的情况。假设每次传输时,报文中的数据长度为100字节(Byte),假设此时x=100,y=200,则正常传输的过程如图21.1.13所示。图21.1.13 T
36、CP正常通信过程数据丢失与重发的过程如图21.1.14所示。假设主机A向主机B发送一个TCP报文段,数据部分的长度编号为501600字节,则此报文段如图21.1.14中所示的那样丢失。在发送端,各报文段是连续发送的。在发送过程中,一边发送一边等待确认信息,因此发送端主机A在收到数据501的确认号前,接着发送了数据初始序号为601的TCP报文段。图21.1.14 TCP数据丢失与重发在接收端主机B收到数据初始序号为601的TCP报文段之前,收到的是数据初始序号为401的TCP报文段,此时主机B发现接收的报文段不是按序排列的,于是便将此报文段暂存于接收缓存器内。若此时主机B暂时无数据发送,则向主机
37、A返回一个报文段进行确认,通知主机A发送序号为501的报文,并且表示主机B无数据要发送。主机A在收到数据501的确认号前,又连续发送数据初始序号为701、801的几个TCP报文段。主机B都先将它们暂时存于接收缓存器内。主机A收到ACK501或超时定时器时间一到,就重发数据初始序号为501的TCP报文段。主机B收到数据初始序号为501的TCP报文段与数据初始序号为601、701、801的几个TCP报文段排好序后一起上交给应用层,同时向主机A返回一个报文段进行确认,其确认号为901,通知主机A准备接收它的数据初始序号为901的TCP报文段,即对数据初始序号为501、601、701、801的TCP报
38、文段一并确认。3)连接释放除正常连接释放外,还存在着非正常连接释放的情况。导致非正常连接释放的原因很多,如应用进程希望中断连接、硬件故障等。通信的任意一方都能够请求非正常连接释放。发起请求的一方通过设置TCP报文段报头中的RST位发送“重新建立”给对方来完成释放。TCP协议在通信时需注意以下事项:(1)TCP连接能提供全双工通信,通信的每一方不必专门发送确认报文,而是在传输数据时就可传输确认信息。(2)发送端是一个个报文段连续发送,一边发送一边等待确认信息。(3)若某报文段超时定时器时间一到还未收到确认信息,则重发此报文段。(4)若某报文段丢失,则接收端一般采取的方法是,先将次序不对的报文段暂
39、存到接收缓存器内,待所缺序号的报文段收齐后再一起上交给应用层,并发送确认信息对丢失的报文段及以后的报文段一并确认。(5)接收端若收到有差错的报文段,则将其丢弃,不发送否认信息,应该发送准备接收此报文段的确认信息。(6)接收端若收到重复的报文段,则将其丢弃,并发送确认信息。5.TCP流量与拥塞控制1)TCP的流量控制接收端用“滑动窗口”的方法实现控制流量。在TCP报文段的报头中窗口字段写入的数值就是当前设置的发送窗口数值的上限。TCP采用大小可变的滑动窗口进行流量控制,窗口大小是以字节为单位的。在通信的过程中,接收端可根据自己的资源情况,随时动态地调整发送方的发送窗口上限值,从而增加传输的效率和
40、灵活度。滑动窗口的原理如图21.1.15所示。图21.1.15 滑动窗口流量控制原理在图21.1.15中,假设每次传输TCP报文段中的数据字段为100字节,初始发送窗口的数据部分为500字节。若发送端发送900字节长度的数据,则可划分为9个报文段,每报文段长度为100字节。当发送完5个报文段后,对应于图21.1.15(a)中的数据1100、101200、201300、301400、401500,若没有收到接收端的确认,则停止发送。当收到了接收端对前两个TCP报文段确认,并且此时窗口大小不变时,发送窗口可前移两个TCF报文段,即又可以发送两个报文段,对应于图21.1.15(b)中的数据50160
41、0、601700;接着又收到了发送方对两个TCP报文段(数据201300、301400)的确认,但接收端通知发送端则必须把窗口减小到400字节。现在发送端最多可发送400字节的数据,即与图21.1.15(b)相比,发送窗口只能前移1个TCP报文段,又可发送701800数据的TCP报文段。2)TCP的拥塞控制当大量数据进入网络或路由器时,将导致网络或路由器超载从而产生严重延迟,这种现象称为拥塞。若一旦发生拥塞,路由器将丢弃数据报,导致重传,而大量重传又进一步加剧拥塞,这种恶性循环将导致整个网络无法工作,即产生“拥塞崩溃”现象。TCP提供的有效拥塞控制措施是采用滑动窗口技术,通过限制发送端向网络输
42、入报文的速率,以达到控制拥塞的目的。流量控制是在考虑接收端的接收能力的前提下,对发送端发送数据的速率进行控制,从而提高通信效率。流量控制是点对点的控制。拥塞控制既要考虑接收端的接收能力,又要考虑网络不发生拥塞,以控制发送端发送数据的速率来提高网络的通信效率和网络的可靠性,它是与整个网络有关的控制。TCP是通过控制发送窗口的大小来进行拥塞控制的。设置发送窗口的大小时,既要考虑到接收端的接收能力,又要使网络不要发生拥塞,所以发送端的发送窗口应按以下方式确定:发送窗口min通知窗口,拥塞窗口通知窗口就是接收窗口,接收端根据其接收能力来确定窗口值,是接收端的流量控制。接收端将通知窗口的值放在TCP报文
43、段的报头中,传送给发送端。拥塞窗口是发送端根据网络拥塞情况得出的窗口值,可对来自发送端的流量进行控制。拥塞窗口同接收窗口一样,也是动态变化的。建立连接时,拥塞窗口初始化为该连接支持的最大TCP报文段MSS的数值,每当发出去的TCP报文段都能及时得到应答时,将拥塞窗口的大小增加至多一个MSS的数值,直至最终达到接收窗口的大小或出现超时。这种方法称为“慢启动”。一旦发现拥塞,TCP将减小拥塞窗口。TCP发现拥塞的途径有两条:一条是来自ICMP的源抑制报文,另一条是通过报文丢失现象。TCP采取成倍递减拥塞窗口的策略,以迅速抑制拥塞;一旦发现TCP报文段丢失,则立即将拥塞窗口大小减半。对于保留在发送窗
44、口中的TCP报文段,根据规定的算法,按指数级后退并重传至定时器。拥塞结束后,TCP又采取“慢启动”窗口恢复策略,以避免迅速增加窗口大小造成的振荡。另外,TCP还附加一条限制:当拥塞窗口增加到原窗口大小的一半时,进入“拥塞避免”状态,以减缓增大窗口的速率。在拥塞避免状态下,TCP在收到窗口中所有TCP报文段的确认后才将拥塞窗口加“l”。21.2 IPv6 简介简介21.2.1 IPv4存在的问题及存在的问题及IPv6的特点的特点1.IPv4存在的问题IPv4存在的问题具体表现在以下几个方面:(1)IPv4的地址空间太小。IPv4的地址长度为32位,理论上最多可以支持232台终端设备的互连,但实际
45、互连的终端要比理论上少。随着接入Internet用户的爆炸式增长,会导致IPv4的地址资源严重不足。(2)IPv4分类的地址导致其利用率降低。由于A、B、C等地址类别的划分,浪费了大量的地址。(3)IPv4地址分配不均。由于历史的原因,美国一些大学和公司占用了大量的IP地址,造成了大量的IP地址浪费,而在互联网快速发展的国家却得不到足够的IP地址,由此导致互联网地址即将耗尽。到目前为止,A类和B类地址已经用完,只有C类地址还有余量。(4)IPv4数据报的报头不够灵活。IPv4所规定的报头选项是固定不变的,限制了它的使用。为了解决IPv4存在的问题,推出了IPv6,它从根本上消除了IPv4网络存
46、在的地址枯竭和路由表急剧膨胀两大危机。IPv6继承了IPv4的优点,并根据IPv4多年来运行的经验进行了大幅度的修改和功能扩充,比IPv4处理性能更加强大、高效。与互联网发展过程中涌现的其他技术相比,IPv6可以说是引起争议最少的一个。人们已形成共识,认为IPv6取代IPv4是必然的发展趋势,其主要原因是IPv6无限的地址空间。2.IPv6的特点IPv6与IPv4相比具有以下较为显著的特点:(1)极大的地址空间。IP地址由原来的32位扩充到128位,使地址空间扩大了296倍,彻底解决了地址不足的问题。(2)分层的地址结构。IPv6支持分层地址结构,更易于寻址,而且扩展支持组播和任意播地址,使得
47、数据报可以发送给任何一个或一组节点。(3)支持即插即用。大容量的地址空间能够真正实现无状态地址自动配置,使IPv6终端能够快速连接到网络上,无须人工配置,实现了真正的自动配置。(4)灵活的数据报报头格式。IPv6数据报报头(首部)格式较IPv4有了很大的简化,有效地减少了路由器或交换机对报头的处理开销,同时加强了对扩展报头和选项部分的支持,并定义了许多可选的扩展字段,可以提供比IPv4更多的功能,既使转发更为有效,又对将来网络加载新的应用提供了充分的支持。(5)支持资源的预分配。IPv6支持实时视像等功能,保证了一定的带宽和时延的要求。(6)认证与私密性。IPv6保证了网络层端到端通信的完整性
48、和私密性。(7)方便移动主机的接入。IPv6在移动网络方面有很多改进,具备强大的自动配置能力,简化了移动主机的系统管理。21.2.2 IPv6数据报格式数据报格式IPv6数据报的格式如图21.2.1所示。图21.2.1 IPv6数据报格式由图21.2.1可以看出,IPv6数据报包括报头(首部)和数据两部分。报头由基本报头和扩展报头两部分组成,扩展报头是选项。扩展报头和数据称为有效载荷。IPv6基本报头的结构比IPv4简单,其中删除了IPv4报头中许多不常用的字段,或将其放在可选性报头中。IPv6数据报报头的具体格式如图21.2.2所示。图21.2.2 IPv6报头的具体各式1.IPv6基本报头
49、IPv6基本报头的长度共40 B(Byte),各字段的具体作用如下:(1)版本:占4 bit,指明协议的版本,对于IPv6,该字段为6。(2)通信量类:占8 bit,用于区分IPv6数据报不同的类型或优先级。(3)流量号:占20 bit,IPv6支持资源分配机制。“流”是互联网上从特定源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个“流”的数据报都具有同样的流号。(4)有效负荷长度:占16 bit,用于指明IPv6数据报除基本报头外的字节数,最大值为64 kB。(5)下一个报头:占8 bit,无扩张报头时,此字段同IPv4报头中的协议字段;有扩展时
50、,此字段指出后面第一个扩展报头的类型。(6)跳数:占8 bit,用来防止数据报在网络中无限期存在。(7)源地址:占128 bit,为数据报发送端的IP地址。(8)目的地址:占128 bit,为数据报接收端的IP地址。2.IPv6扩展报头IPv6定义了6种扩展报头:逐跳选项、路由选择、分片、鉴别、封装安全有效载荷和目的站选项。为了提高路由器的处理效率,IPv6规定,数据报途中经过的路由器,除对逐跳选项扩展报头外,其他扩展报头都不进行处理,将扩展报头留给源节点和目的节点处理。21.2.3 IPv6地址体系结构地址体系结构1.IPv6地址体系结构IPv6地址体系结构如图21.2.3所示。图21.2.