计算机网络理论与实践(微课版)第三章 TCPIP协议簇_第1页
计算机网络理论与实践(微课版)第三章 TCPIP协议簇_第2页
计算机网络理论与实践(微课版)第三章 TCPIP协议簇_第3页
计算机网络理论与实践(微课版)第三章 TCPIP协议簇_第4页
计算机网络理论与实践(微课版)第三章 TCPIP协议簇_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机网络理论与实践》TCP/IP协议簇计算机网络理论与实践3.1TCP/IP协议簇TCP/IP协议簇是互联网通信的基础,促使不同类型的计算机和网络能够进行互联,无论是使用有线还是无线、局域网还是广域网,只要遵循TCP/IP协议,就可以在全球范围内进行通信和共享资源。

它提供了可靠的数据传输、灵活的寻址和路由、支持多种网络应用以及网络管理和诊断工具。它的意义在于连接了全球的计算机和网络,促进了信息的交流和共享,极大地推动了社会的发展和进步。计算机网络理论与实践网际协议网际协议(InternetProtocol,IP)是TCP/IP协议簇中的核心协议之一,它定义了在互联网上进行数据包传输的方式和规则,包括数据包的划分、寻址、路由等。通过IP协议,设备可以在全球范围内进行通信和共享资源,实现了互联网的连接和无缝传输。网际协议由罗伯特卡恩(RobertKahn)和温顿瑟夫(VintCerf)二人共同研发,因此IP协议又称为Kahn-Cerf协议,注意,本章节所讲的IP协议为IP的第4个版本,记为IPv4。计算机网络理论与实践网际协议由于网际协议IP是TCP/IP体系结构网络层中的核心协议,因此TCP/IP体系结构的网络层常被称为网际层或IP层。在网际层中,与IP协议配套使用的还有以下三个协议。●地址解析协议(AddressResolutionProtocol,ARP)。●网际控制报文协议(InternetControlMessageProtocol,ICMP)。●网际组管理协议(InternetGroupManagementProtocol,IGMP)。右图给出了上述协议的层次关系。因为IP需要用到ARP,所以ARP画在网际层最下面;而ICMP和IGMP需要使用IP,所以画在该层的上部。计算机网络理论与实践IP数据报格式IP数据报的首部格式及其内容是实现IP协议各种功能的基础。上图给出的是IPv4数据报的首部格式。IPv4数据报的首部由20字节的固定部分和最大40字节的可变部分组成。所谓固定部分,是指每个IPv4数据报的首部都必须要包含的部分。某些IPv4数据报的首部,除了包含20字节的固定部分,还包含一些可选的字段来增加IPv4数据报的功能。在TCP/P标准中,各种数据格式常常以32比特(即4字节)为单位来描述。上图中的每一行都由32个比特(即4个字节)构成,每个格子称为字段或者域。每个字段或某些字段的组合用来表达IPv4协议的相关功能。计算机网络理论与实践IP数据报格式(1)版本版本字段的长度为4个比特,用来表示IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议的版本号为4(即IPv4)。(2)首部长度、可选字段和填充首部长度字段的长度为4个比特,该字段的取值以4字节为单位,用来表示IPv4数据报首部的长度。可选字段的长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。填充字段用来确保IPv4数据报的首部长度是4字节的整数倍,使用全0进行填充。由于IPv4数据报的首部长度字段的值以4字节为单位,因此IPv4数据报的首部长度一定是4字节的整数倍。(3)区分服务区分服务字段的长度为8个比特,用来获得更好的服务。该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。(4)总长度总长度字段的长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度,也就是IPv4数据报首部与其后的数据载荷的长度总和。计算机网络理论与实践IP数据报格式(5)标识、标志和片偏移标识、标志和片偏移这三个字段共同用于IPv4数据报分片。首先介绍IPv4数据报分片的概念。网际层封装了一个比较长的IPv4数据报,并将其向下交付给数据链路层封装成帧。每一种数据链路层协议都规定了帧的数据载荷的最大长度,即最大传送单元。,以太网的数据链路层规定MTU的值为1500字节。如果某个IPv4数据报的总长度超过MTU,将无法封装成帧,则需要将原IPv4数据报分片为更小的IPv4数据报,再将各分片IPv4数据报封装成帧。标识字段的长度为16个比特。属于同一个IPv4数据报的各分片数据报应该具有相同的标识。IP软件会维持一个计数器,每产生一个IPv4数据报,计数器值就加1,并将此值赋给标识字段。标志字段的长度为3个比特,各比特含义如下。●最低位(MoreFragment,MF),表示本分片后面是否还有分片。MF=1表示本分片后面还有分片,MF=0表示本分片后面没有分片。●中间位(Don'tFragment,DF),表示是否允许分片。DF=1表示不允许分片,DF=0表示允许分片。●最高位为保留位,必须设置为0。片偏移字段的长度为13个比特,该字段的取值以8字节为单位,用来指出分片IPv4数据报的数据载荷部分偏移其在原IPv4数据报的位置有多远。计算机网络理论与实践IP数据报格式(6)生存时间生存时间字段的长度为8比特,最大取值为二进制的11111111,即十进制的255。该字段的取值最初以秒为单位。因此,IPv4数据报的最大生存时间最初为255秒。路由器转发IPv4数据报时,将其首部中该字段的值减去该数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。生存时间字段后来改为以“跳数”为单位,路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若不为0就转发,否则就丢弃。生存时间字段的英文缩写词为TTL(TimeToLive),该字段的初始值由发送IPv4数据报的主机进行设置,其目的是防止被错误路由的IPv4数据报无限制地在因特网中兜圈。(7)协议协议字段的长度为8个比特,指出此数据报携带的数据使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。计算机网络理论与实践IP数据报格式(8)首部检验和首部校验和字段占16位,用于检验且只检验数据报的首部。因为数据报每经过一个路由器,所以路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

为了进一步减少计算检验和的工作量,IP首部的检验和不采用复杂的CRC检验码而采用下面的简单计算方法:

在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算"把所有16位字相加后,将得到的和的反码写入检验和字段。

接收方收到数据报后,把首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。

若首部未发生任何变化,则此结果必为0,于是就保留这个数据报;否则即认为出差错,并将此数据报丢弃。计算机网络理论与实践IP数据报格式(9)源IP地址和目的IP地址源IP地址字段和目的IP地址字段的长度都是32个比特,用来填写发送IPv4数据报的源主机的IPv4地址和接收该IP数据报的目的主机的IPv4地址。计算机网络理论与实践IPV4编址IPv4地址是给IP网上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的32比特的标识符。IPv4地址由因特网名字和数字分配机构(InternetCorporationforAssignedNamesandNumbers,ICANN)进行分配。我国用户可向亚太网络信息中心(AsiaPacificNetworkInformationCenter,APNIC)申请IPv4地址,这需要缴纳相应的费用,一般不接受个人申请。IPv4地址的编址方法经历了三个历史阶段。

分类编址:最基本的编址方法,早在1981年就通过了相应的标准协议。

划分子网:对分类编址的改进,其标准[RFC950]在1985年通过。

无分类编址:目前因特网正在使用的编址方法。它消除了分类编址和划分子网的概念,1993年提出后很快就得到了推广应用。计算机网络理论与实践(1)IPv4地址的表示方法由于32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。如图3-3所示,将某个32比特IPv4地址中每8个比特分为一组,写出每组8比特所对应的十进制数,每个十进制数之间用“.”来分隔,就可以得到该IPv4地址的点分十进制形式。计算机网络理论与实践(2)分类编址分类编址方法将32比特的IPv4地址分为以下两部分。●网络号:用来标志主机(或路由器)的接口所连接到的网络。●主机号:用来标志主机(或路由器)的接口。分类编址的IPv4地址分为以下五类●A类地址:网络号占8比特,主机号占24比特,网络号的最前面1位固定为0。●B类地址:网络号和主机号各占16比特,网络号的最前面2位固定为10。●C类地址:网络号占24比特,主机号占8比特,网络号的最前面3位固定为110。●D类地址:多播地址,其最前面4位固定为1110。●E类地址:保留地址,其最前面4位固定为1111。计算机网络理论与实践(2)分类编址当给网络中的主机(或路由器)的各接口分配分类编址的IPv4地址时,需要注意以下规定:●只有A类、B类和C类地址可以分配给网络中的主机(或路由器)的各接口。●主机号为“全0”(即全部比特都为0)的地址是网络地址,不能分配给网络中的主机(或路由器)的各接口。●主机号为“全1”(即全部比特都为1)的地址是广播地址,不能分配给网络中的主机(或路由器)的各接口。把IP地址划分为A类、B类、C类三个类别,当初是这样考虑的:各种网络的差异很大,有的网络拥有很多主机,而有的网络上的主机则很少。把IP地址划分为A类、B类和C类是为了更好地满足不同用户的需求。计算机网络理论与实践(2)分类编址这种分类的IP地址由于网络号的位数是固定的,因此管理简单、使用方便、转发分组迅速,完全可以满足当时互联网在美国的科研需求。后来,为了更加灵活地使用IP地址,出现了划分子网的方法,在IP地址的主机号中,插入一个子网号,把两级的IP地址变为三级的IP地址。但是,谁也没有预料到,互联网在20世纪90年代突然迅速地发展起来了。互联网从美国专用的科研实验网演变到世界范围开放的商用网!互联网用户的猛增,使得IP地址的数量面临枯竭的危险。这时,人们才注意到原来分类的IP地址在设计上确实有很不合理的地方。例如,一个A类网络地址块的主机号数目超过了1677万个!当初美国的很多大学都可以分配到一个A类网络地址块。一个大学怎么会需要这样多的IP地址?但在互联网出现早期,人们就是认为IP地址是用不完的,不需要精打细算地分配。于是,在20世纪90年代,当发现IP地址在不久后将会枯竭时,一种新的无分类编址方法就问世了。这种方法虽然也无法解决IP地址枯竭的问题,但可以推迟IP地址用尽的日子。计算机网络理论与实践(3)无分类编址CIDR这种编址方法的全名是无分类域间路由选择CIDR(ClasslessInter-DomainRouting,CIDR),其要点有以下三个。1)网络前缀CIDR网络号改称为“网络前缀”(network-prefix)(或简称为“前缀”),用来指明网络,剩下的后面部分仍然是主机号,用来指明主机。在有些文献中也把主机号字段称为后缀(suffix)。CIDR的记法是:下图说明了CIDR的网络前缀和主机号的位置。看起来,这和分类IP也没有什么不同,只是把“网络号”换成为“网络前缀”。其实不然。这里最大的区别就是网络前缀的位数n不是固定的数,而是可以在0~32之间选取任意的值。计算机网络理论与实践(3)无分类编址CIDR

2)地址块CIDR把网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块”。一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数。我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。例如,已知IP地址/20是某CIDR地址块中的一个地址,现在把它写成二进制表示形式,其中的前20位是网络前缀(用粗体和下划线表示出),而前缀后面的12位是主机号:/20=10000000000011100010001100000111可以很方便地得出这个地址所在的地址块中的最小地址和最大地址:最小地址:,10000000000011100010000000000000最大地址:55,10000000000011100010111111111111计算机网络理论与实践(3)无分类编址CIDR

2)地址块CIDR把网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块”。一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数。我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。例如,已知IP地址/20是某CIDR地址块中的一个地址,现在把它写成二进制表示形式,其中的前20位是网络前缀(用粗体和下划线表示出),而前缀后面的12位是主机号:/20=10000000000011100010001100000111可以很方便地得出这个地址所在的地址块中的最小地址和最大地址:最小地址:,10000000000011100010000000000000最大地址:55,10000000000011100010111111111111计算机网络理论与实践(3)无分类编址CIDR3)地址掩码CIDR使用斜线记法可以让我们知道网络前缀的数值。但是计算机看不见斜线记法,而是使用二进制来进行各种计算时就必须使用32位的地址掩码(addressmask)能够从IP地址迅速算出网络地址。地址掩码(常简称为掩码)由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。地址掩码又称为子网掩码③。在CIDR表示法中,斜线后面的数字就是地址掩码中1的个数。例如,/20地址块的地址掩码是:11111111111111111111000000000000(20个连续的1和接着的12个连续的0)。这个掩码用CIDR记法表示就是/20。计算机网络理论与实践(3)无分类编址CIDR把二进制的IP地址和地址掩码进行按位AND运算,即可得出网络地址。上图说明了AND运算的过程。AND运算就是逻辑乘法运算,其规则是:1AND1=1,1AND0=0,0AND0=0。请注意,从点分十进制的IP地址并不容易看出其网络地址。要使用二进制地址来运算。在本例中把二进制IP地址的前20位保留不变,剩下的12位全写为0,即可得出网络地址。从上面的运算结果可以知道,IP地址9/20所在的网络地址是/20。计算机网络理论与实践物理地址与IP地址(1)物理地址在局域网中,物理地址又称为硬件地址或MAC地址(MediaAccessControlAddress,因为这种地址用在MAC帧中)。在标识系统中,地址就是识别某个系统的一个非常重要的标识符。IEEE802标准为局域网规定了一种48位的全球地址(一般都简称为“地址”),这就是局域网上的每一台计算机中固化在适配器的ROM中的地址,计算机的适配器不变,则它的MAC地址不变。计算机的MAC地址不会因为地点的改变而发生改变,不会因为所处局域网的不同而不同。MAC地址由48位二进制数表示,通常以十六进制数的形式呈现,其结构为前24位(6个十六进制数)表示厂商识别码(OrganizationallyUniqueIdentifier,OUI),用于标识设备的制造厂商;后24位(6个十六进制数)表示设备序列号,由制造厂商分配给每个设备的唯一标识。MAC地址的示例:00-1C-42-CA-8A-AC,其中,00-1C-42为厂商识别码,CA-8A-AC为设备序列号。计算机网络理论与实践物理地址与IP地址适配器有过滤功能。当适配器从网络上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理。这样做就不浪费主机的处理机和内存资源了。这里“发往本站的帧”包括以下三种帧。(1)单播(unicast)帧(一对一),即收到的帧的MAC地址与本站的MAC地址相同。(2)广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧(全1地址)。(3)多播(multicast)帧(一对多),即发送给本局域网上一部分站点的帧。所有的适配器都至少应当能够识别前两种帧,即能够识别单播和广播地址。有的适配器可用编程方法识别多播地址。当操作系统启动时,它就把适配器初始化,使适配器能够识别某些多播地址。显然,只有目的地址才能使用广播地址和多播地址。计算机网络理论与实践(2)MAC地址与IP地址的关系<1>封装位置从层次的角度看,MAC地址是数据链路层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的),如下图所示。计算机网络理论与实践(2)MAC地址与IP地址的关系在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给数据链路层,就被封装成MAC帧。MAC帧在传送时使用的源地址和目的地址都是MAC地址,这两个MAC地址都写在MAC帧的首部中。连接在通信链路上的设备(主机或路由器)在收到MAC帧时,根据MAC帧首部中的MAC地址决定收下或丢弃。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。总之,IP地址放在IP数据报的首部,而MAC地址则放在MAC帧的首部。在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是MAC地址。在图3-*中,当IP数据报插入到数据链路层的MAC帧以后,整个的IP数据报就成为MAC帧的数据,因而在数据链路层看不见数据报的IP地址。计算机网络理论与实践<2>地址作用在分组从源主机发出经过多个路由器转发最终到达目的主机的过程中,源IP地址和目的IP地址始终保持不变,而源MAC地址和目的MAC地址会逐网络(或逐链路)变化,如右图a所示。图(a)所示的是三个局域网通过两个路由器R1和R2互连起来的小型互联网。MAC地址与IP地址标识如图所示。主机可有多个接口,但一般只有1个接口;而路由器最少有2个接口。每个接口需要1个IP地址和1个MAC地址。

图(b)所示的是分组在传输过程中其所携带的IP地址和MAC地址的变化情况。计算机网络理论与实践<3>地址关系计算机网络为什么要使用IP地址和MAC地址这两种类型的地址来共同完成寻址工作,仅用MAC地址进行通信不可以吗?回答是否定的。因为如果仅使用MAC地址进行通信,则会出现以下主要问题:●因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的MAC地址。●手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的MAC地址信息而严重占用通信资源。●包含海量MAC地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延计算机网络理论与实践<3>地址关系因特网的网际层使用IP地址进行寻址,就可使因特网中各路由器的路由表中的路由记录数量大大减少,因为只需记录部分网络的网络地址,而不是记录每个网络中各通信设备的各接口的MAC地址。路由器在收到IP数据报后,根据其首部中的目的IP地址的网络号部分,基于自己的路由表进行查表转发。这就又引出了一个问题:查表转发的结果可以指明IP数据报的下一跳路由器的IP地址,但无法指明该IP地址所对应的MAC地址。

因此,在数据链路层封装该IP数据报成为帧时,帧首部中的目的MAC地址字段就无法填写,该问题又如何解决呢?

网际层中的地址解析协议帮忙解决。计算机网络理论与实践地址解析协议地址解析协议ARP是将IP地址转换为相应的MAC地址的一种计算机网络协议。网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用链路层的MAC地址。IP地址和下面链路层的MAC地址之间由于格式不同而不存在简单的映射关系(例如,IP地址有32位,而链路层的MAC地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的MAC地址改变(请注意,主机的MAC地址实际上就是其网络适配器的MAC地址)。地址解析协议ARP解决这个问题的方法是在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。计算机网络理论与实践地址解析协议下面基于右图解释ARP协议工作原理。当主机H2要向本局域网上的某台主机H4发送IP数据报时,就先在其ARP高速缓存中查看有无主机H4的IP地址。如有,就在ARP高速缓存中查出其对应的MAC地址,再把这个MAC地址写入MAC帧,然后通过局域网把该MAC帧发往此MAC地址。也有可能查不到主机H4的IP地址。这可能是主机H4才入网,也可能是主机H2刚刚加电,其高速缓存还是空的。在这种情况下,主机H2就自动运行ARP,然后按以下步骤找出主机H4的MAC地址。计算机网络理论与实践地址解析协议(1)ARP进程在本局域网上广播发送一个ARP请求分组。图3-8(a)是主机H2广播发送ARP请求分组的示意图。ARP请求分组的主要内容是:“我的IP地址是,MAC地址是00-00-C0-18-BD-1C。我想知道IP地址为0的主机的MAC地址。”(2)在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。计算机网络理论与实践地址解析协议(3) 主机H4的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机H2发送ARP响应分组,同时在这个ARP响应分组中写入自己的MAC地址。由于其余所有主机的IP地址都与ARP请求分组中要查询的IP地址不一致,因此都不理睬这个ARP请求分组,如图3-8(b)所示。ARP响应分组的主要内容是:“我的IP地址是0,我的MAC地址是08-00-36-01-FE-58。”请注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。(4) 主机H2收到主机H4的ARP响应分组后,就在其ARP高速缓存中写入主机H4的IP地址到MAC地址的映射。计算机网络理论与实践地址解析协议当主机H2向H4发送数据报时,很可能以后不久主机H4还要向H2发送数据报,因而主机H4也可能要向H2发送ARP请求分组。为了减少网络上的通信量,主机H2在发送其ARP请求分组时,就把自己的IP地址到MAC地址的映射写入ARP请求分组。当主机H4收到H2的ARP请求分组时,就把主机H2的这一地址映射写入主机H4自己的ARP高速缓存中。以后主机H4向H2发送数据报时就很方便了。ARP高速缓存非常重要。如果不使用ARP高速缓存,那么任何一台主机只要进行一次通信,就必须在网络上用广播方式发送ARP请求分组,这就会使网络上的通信量大大增加。需要强调的是,ARP用于解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题。计算机网络理论与实践网际控制报文协议为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(InternetControlMessageProtocol)[RFC792,STD5]。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是互联网的标准协议。但ICMP不是高层协议(看起来好像是高层协议,因为ICMP报文装在IP数据报中,作为其中的数据部分),而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP报文格式如右图所示。计算机网络理论与实践(1)ICMP报文的种类ICMP报文分为两大类:ICMP差错报告报文和ICMP询问报文。ICMP差错报告报文用来向主机或路由器报告差错情况,共有以下五种:1)终点不可达当路由器或主机不能交付IP数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。2)源点抑制当路由器或主机由于拥塞而丢弃IP数据报时,就向源点发送源点抑制报文,使源主机知道应当把IP数据报的发送速率放慢。3)时间超过(超时)当路由器收到一个目的IP地址不是自己的IP数据报时,会将其首部中生存时间(TTL)字段的值减1。若结果不为0,则路由器将该数据报转发出去。若结果为0,路由器不但要丢弃该数据报,还要向源点发送时间超过(超时)报文。计算机网络理论与实践(1)ICMP报文的种类4)参数问题当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段的值发现首部在传送过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。5)改变路由(重定向)路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器,这样可以通过更好的路由到达目的主机。以下情况不应发送ICMP差错报告报文:●对ICMP差错报告报文不再发送ICMP差错报告报文。●对第一个分片的IP数据报片的所有后续数据报片都不发送ICMP差错报告报文。●对具有多播地址的IP数据报都不发送ICMP差错报告报文。●对具有特殊地址(例如或)的数据报不发送ICMP差错报告报文。计算机网络理论与实践<2>ICMP询问报文常用的ICMP询问报文有回送请求和回答,以及时间戳请求和回答。1)回送请求和回答回送请求和回答报文由主机或路由器向一个特定的目的主机或路由器发出。收到此报文的主机或路由器必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。2)时间戳请求和回答时间戳请求和回答报文用来请求某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32比特的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求和回答报文被用来进行时钟同步和测量时间。计算机网络理论与实践<3>ICMP的典型应用<1>分组网间探测分组网间探测(PacketInterNetGroper,PING)用来测试主机或路由器之间的连通性。PING是TCP/IP体系结构的应用层直接使用网际层ICMP的一个例子,它并不使用运输层的TCP或UDP。PING应用所使用的ICMP报文类型为回送请求和回答。

Windows操作系统的用户可在接入互联网后转入MSDOS(单击“开始”,单击“运行",再键入“cmd”),看见屏幕上的提示符后,键入"pinghostname"(hostname指的是想要测试连通性的远程计算机的名字),回车后开始连通性测试。图3-10给出了从洛阳的一台PC到网易的邮件服务器的连通性的测试结果。PC一连发出4个ICMP回送请求报文。如果邮件服务器正常工作而且响应这个ICMP回送请求报文(可能有的主机为了防止恶意攻击而不理睬外界发送过来的这种报文),那么它就发送ICMP回送回答报文。计算机网络理论与实践<3>ICMP的典型应用计算机网络理论与实践<3>ICMP的典型应用<2>跟踪路由另一个非常有用的应用是traceroute(这是UNIX操作系统中的命令),用来跟踪一个分组从源点到终点的路径。在Windows操作系统中这个命令是tracert。下面简单介绍这个命令的工作原理。traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一个数据报P₁的生存时间TTL设置为1。当P₁到达路径上的第一个路由器R₁时,路由器R₁先收下它,接着把TTL的值减1。由于TTL等于零了,因此R₁就把P₁丢弃,并向源主机发送一个ICMP时间超过差错报告报文。源主机接着发送第二个数据报P₂,并把TTL设置为2。P₂先到达路由器R1,R₁收下后把TTL减1再转发给路由器R₂。R₂收到P₂时TTL为1,但减1后TTL变为零了。R₂就丢弃P₂,并向源主机发送一个ICMP时间超过差错报告报文。这样一直继续下去。当最后一个数据报刚刚到达目的主机时,数据报的TTL是1。主机不转发数据报,也不把TTL值减1。但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。计算机网络理论与实践<3>ICMP的典型应用这样,源主机达到了自己的目的,因为这些路由器和最后目的主机发来的ICMP报文正好给出了源主机想知道的路由信息——到达目的主机所经过的路由器的IP地址,以及到达其中的每一个路由器的往返时间。下图是从洛阳的一个PC向网易的邮件服务器发出tracert命令后所获得的结果。图中每一行有三个时间出现,是因为对应于每一个TTL值,源主机要发送三次同样的IP数据报。计算机网络理论与实践<3>ICMP的典型应用计算机网络理论与实践用户数据报协议UDP是传输层协议中的一种,与传输控制协议(TCP)并列。相比TCP相比,UDP更为简单。UDP在应用层的数据报发送和接收上提供快速的传输速度,适用于实时应用程序,如音频、视频和游戏。尽管UDP不提供错误检测和恢复机制,但它在某些场景下的低开销和高性能特性使其成为网络通信中不可或缺的一部分。用户数据报协议UDP只在IP协议的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。UDP的主要特点是:(1)UDP是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。(2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里面有许多参数)。(3)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。计算机网络理论与实践用户数据报协议(4)UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP正好适合这种要求。(5)UDP支持一对一、一对多、多对一和多对多的交互通信。(6)UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。3.3.2UDP的头部字段计算机网络理论与实践用户数据报协议用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节,由4个字段组成,每个字段的长度都是2字节,如图3-12。各字段意义如下。(1)源端口号。在需要对方回信时选用。不需要时可用全0。(2)目的端口号。这在终点交付报文时必须使用。(3)长度UDP用户数据报的长度,其最小值是8(仅有首部)。(4)检验和检测UDP用户数据报在传输中是否有错。有错就丢弃。计算机网络理论与实践传输层端口运行在计算机上的进程是使用进程标识符(ProcessIdentification,PID)来标识的。然而,因特网上的计算机并不是使用统一的操作系统,而不同操作系统(Windows、Linux、MacOS)又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识。TCP/IP体系结构的传输层使用端口号来标识和区分应用层的不同应用进程。上一小节讲到的UDP和即将讲到的TCP的首部格式中都有源端口和目的端口这两个重要字段,标识了传输层和应用层进行交互的地点。注意,TCP和UDP端口号之间也是没有关系的。计算机网络理论与实践传输层端口端口号长度为16比特,取值范围是0~65535,分为两大类:<1>服务器端使用的端口号,分为两类。1)熟知端口号:又称为全球通用端口号,取值范围是0~1023。因特网号码分配管理局IANA将这些端口号分配给了TCP/IP体系结构应用层中最重要的一些应用协议。2)登记端口号:取值范围是1024~49151。这类端口号是为没有熟知端口号的应用程序使用的,要使用这类端口号必须在因特网号码分配管理局IANA按照规定的手续登记,以防止重复。例如,MicrosoftRDP微软远程桌面应用程序使用的端口号是3389。计算机网络理论与实践传输层端口<2>客户端使用的短暂端口号:取值范围是49152~65535。这类端口号仅在客户端使用,由客户进程在运行时动态选择,又称为临时端口号。

当服务器进程收到客户进程的报文时,就知道了客户进程所使用的临时端口号,因而可以把响应报文发送给客户进程。通信结束后,已使用过的临时端口号会被系统收回,以便给其他客户进程使用。端口号只具有本地意义,即端口号只是为了标识本计算机网络协议栈应用层中的各应用进程。在因特网中,不同计算机中的相同端口号是没有关系的,即相互独立。计算机网络理论与实践传输控制协议传输控制协议(TCP)是TCP/IP体系结构运输层中面向连接的协议,它向其上的应用层提供全双工的可靠的数据传输服务。TCP与UDP最大的区别就是,TCP是面向连接的,而UDP是无连接的。TCP比UDP要复杂得多,除具有面向连接和可靠传输的特性,TCP还在运输层使用了流量控制和拥塞控制机制。计算机网络理论与实践TCP报文格式一个TCP报文段分为首部和数据两部分,其全部功能都体现在它首部中各字段的作用。为此着重讨论TCP首部格式及各字段的作用。TCP报文段首部的前20个字节是固定的(如图3-13所示),后面有4n字节是根据需要而增加的选项(n是整数)。因此TCP首部的最小长度是20字节。计算机网络理论与实践TCP报文格式首部固定部分各字段的意义如下。(1)源端口和目的端口各占2个字节,分别写入源端口号和目的端口号,实现复用与分用。(2)序号占4字节,序号使用mod232运算。TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。例如,一报文段的序号字段值是301,而携带的数据共有100字节。这就表明:本报文段的数据的第一个字节的序号是301,最后一个字节的序号是400。显然,下一个报文段(如果还有的话)的数据序号应当从401开始,即下一个报文段的序号字段值应为401。这个字段的名称也叫作“报文段序号”。计算机网络理论与实践TCP报文格式(3)确认号占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。例如,B正确收到了A发送过来的一个报文段,其序号字段值是501,而数据长度是200字节(序号501~700),这表明B正确收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。请注意,现在的确认号不是501,也不是700,而是701。总之,应当记住:若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。由于序号字段有32位长,可对4GB(即4千兆字节)的数据进行编号。在一般情况下可保证当序号重复使用时,旧序号的数据早已通过网络到达终点了。计算机网络理论与实践TCP报文格式(4)数据偏移占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。但应注意,“数据偏移”的单位是32位字(即以4字节长的字为计算单位)。由于4位二进制数能够表示的最大十进制数字是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大长度(即选项长度不能超过40字节)。(5)保留占6位,保留为今后使用,但目前应置为0。计算机网络理论与实践TCP报文格式(6)紧急URG(URGent)当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序传送。例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消该程序的运行。因此用户从键盘发出中断命令(Control-C)。如果不使用紧急数据,那么这两个字符将存储在接收TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才被交付接收方的应用进程。这样做就浪费了许多时间。当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与首部中紧急指针(UrgentPointer)字段配合使用。计算机网络理论与实践TCP报文格式(7)确认ACK(ACKnowledgment)仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置为1。(8)推送PSH(PuSH)当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP就可以使用推送(push)操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。虽然应用程序可以选择推送操作,但推送操作很少使用。计算机网络理论与实践TCP报文格式(9)复位RST(ReSeT)当RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。将RST置为1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重置位。(10)同步SYN(SYNchronization)在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受报文。关于连接的建立和释放,在后面的5.9节还要进行详细讨论。(11)终止FIN(FINish,意思是“完了”“终止”)用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。计算机网络理论与实践TCP报文格式(12)窗口占2字节。窗口值是[0,216-1]之间的整数。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据。扫一扫例如,发送了一个报文段,其确认号是701,窗口字段是1000。这就是告诉对方:"从701号算起,我(即发送此报文段的一方)的接收缓存空间还可接收1000个字节数据(字节序号是701~1700),你在给我发送数据时,必须考虑到我的接收缓存容量。”应当记住:窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化着。计算机网络理论与实践TCP报文格式(13)检验和占2字节。检验和字段检验的范围包括首部和数据这两部分。和UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。伪首部的格式与图5-5中UDP用户数据报的伪首部一样。但应把伪首部第4个字段中的17改为6(TCP的协议号是6),把第5字段中的UDP长度改为TCP长度。接收方收到此报文段后,仍要加上这个伪首部来计算检验和。若使用IPv6,则相应的伪首部也要改变。(14)紧急指针占2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。值得注意的是,即使窗口为零时也可发送紧急数据。计算机网络理论与实践TCP报文格式(15)选项TCP报文段首部除了20字节的固定部分,还有最大40字节的选项部分。增加选项可以增加TCP的功能。目前有以下选项:<1>最大报文段长度(MaximumSegmentSize,MSS)选项:MSS用来指出的是TCP报文段数据载荷部分的最大长度,而不是整个TCP报文段的长度。MSS的选择并不简单。2)若选择很大的MSS,则TCP报文段在网际层封装成IP数据报时,有可能要分片成多个短的数据报片。在目的站要将收到的各个短数据报片装配成原来的TCP报文段,当传输出错时还要进行重传,这些都会使开销增大。计算机网络理论与实践TCP报文格式3)一般认为,TCP报文段的MSS应尽可能大些,只要在网际层将TCP报文段封装成IP数据报时不需要分片就行。在TCP连接建立的过程中,双方可以将自己能够支持的MSS写入该字段中。在以后的数据传输阶段,MSS取双方提出的较小的那个数值。若主机未填写这一项,则MSS的默认值是536。因此,所有在因特网上的主机都应能接受的TCP报文段的长度为20+536=556字节。计算机网络理论与实践TCP报文格式<2>窗口扩大选项:用来扩大窗口,提高吞吐率。<3>时间戳选项:用于计算往返时间(RTT)和处理序号超范围的情况,又称为防止序号绕回(ProtectAgainstWrappedSequenceNumbers,PAWS)。<4>选择确认选项:用来实现选择确认功能。计算机网络理论与实践TCP报文格式(16)填充字段由于选项字段的长度是可变的,因此还需要使用填充字段(填充内容为若干个比特0)来确保TCP报文段首部能被4整除。这是因为TCP报文段首部中的数据偏移字段(也就是首部长度字段)是以4字节为单位的。如果选项字段的长度加上20字节固定首部的长度不能被4整除,则需要使用填充字段来确保首部能被4整除,这与IPv4数据报首部中的填充字段的作用是一样的。计算机网络理论与实践TCP可靠传输为了便于讲述TCP的可靠传输原理,我们假定数据传输只在一个方向进行:A发送数据,B给出确认。这样的好处是使讨论限于两个窗口,即发送方A的发送窗口和接收方B的接收窗口,使原理的描述更加清晰。(1)以字节为单位的滑动窗口TCP的滑动窗口是以字节为单位的。现假定A收到了B发来的确认报文段,其中窗口大小为15字节,而确认号是39。这表明B期望收到的下一个字节序号是39(请注意,这里是字节的编号,不是分组的序号),而到序号38为止的数据已经收到了。根据这两个数据,A就构造出自己的发送窗口,如下图所示。计算机网络理论与实践TCP可靠传输为了便于讲述TCP的可靠传输原理,我们假定数据传输只在一个方向进行:A发送数据,B给出确认。这样的好处是使讨论限于两个窗口,即发送方A的发送窗口和接收方B的接收窗口,使原理的描述更加清晰。(1)以字节为单位的滑动窗口TCP的滑动窗口是以字节为单位的。现假定A收到了B发来的确认报文段,其中窗口大小为15字节,而确认号是39。这表明B期望收到的下一个字节序号是39(请注意,这里是字节的编号,不是分组的序号),而到序号38为止的数据已经收到了。根据这两个数据,A就构造出自己的发送窗口,如下图所示。计算机网络理论与实践TCP可靠传输发送窗口表示:在没有收到B的确认的情况下,A可以连续把窗口内的数据都发送出去。凡是已经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。发送窗口里面的序号表示允许发送的序号。显然,窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,因而可能获得更高的传输效率。由于接收方会把自己的接收窗口数值放在窗口字段中发送给对方,所以A的发送窗口一定不能超过B的接收窗口数值。发送窗口的位置由窗口前沿和后沿的位置共同确定。计算机网络理论与实践流量控制流量控制的基本方法就是接收方根据自己的接收能力(接收缓存的可用空间大小)控制发送方的发送速率,促使发送方的数据发送跟上接收方的数据接收节奏以保持数据传输上的平衡,防止因数据发送过快或过慢导致的数据丢失和资源浪费。TCP利用滑动窗口机制在TCP连接上实现对发送方的流量控制。下图举例展示TCP流量控制。计算机网络理论与实践流量控制设A向B发送数据。在连接建立时,B告诉了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论