您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第四章网际协议-Read
第四章网际协议2§4-1引言IP是TCP/IP协议族中最为核心的协议,是TCP/IP协议使用的传输机制,它是一种不可靠的无连接数据报协议—尽最大努力服务。尽最大努力(besteffort)的意思是IP不提供差错检验或跟踪。不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)3无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。IP提供了三个重要的定义:①IP定义了在整个TCP/IP互联网上数据传输所用的基本单元。因此,它规定了互联网上传输的数据的确切格式。②IP软件完成选路的功能,选择一个数据发送的路径。③IP还包括了一组体现了不可靠分组交付思路的规则。这些规则指明了主机和路由器应该如何处理分组、何时及如何发出错误信息以及在什么情况下可以放弃分组。4§4-2数据报在IP层的分组叫数据报。数据报是一个变长分组,它由两部分组成:首部和数据。首部可以从20至60字节,包含有对路由选择和交付有关的重要信息。5IP数据报具有如下的一些字段:版本:这是一个4比特字段。用来定义IP协议的版本。目前的协议版本号是4。首部长度:这是一个4比特字段。用来定义数据报首部以4字节字计算的总长度。这个字段是必需的,因为首部的长度是可变的(在20至60字节之间)。当没有选项时,首部长度是20字节,则这个字段的值是5(5*4=20);当选项字段为最大值时,这个字段的值是15(15*4=60)。服务类型:这是一个8比特字段。定义了路由器应如何处理此数据报。这个字段分为两个子字段:优先(3比特)和服务类型(4比特)。剩下的一个比特未使用。如下图所示:6•优先:是一个3比特的子字段。其值从0到7,定义了在出现一些问题时数据报的优先级。但目前在IPv4中未被使用,今后的版本可能会使用这个功能。•4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。•1bit未用位必须置0。优先TOS段D:最小时延R:最高可靠性T:最大吞吐量C:最小代价DTRC服务类型7总长度:这是一个16比特字段。定义一个数据报以字节计的总长度(首部+数据)。故要找出从上层来的数据长度,可将总长度减去首部长度(首部长度字段的值*4就是真正的首部长度)。标识:这个字段用在分片中。(下一节讨论)标志:这个字段用在分片中。(下一节讨论)片偏移:这个字段用在分片中。(下一节讨论)生存时间(TTL):这是个8比特字段。设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。8协议:这是个8比特字段。定义使用此IP层服务的高层协议。根据它可以识别是哪个协议向IP传送数据。检验和:这是个16比特字段。是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。源地址:这是个32比特字段。定义源站的IP地址。在IP数据报从源主机发送到目的主机的时间内,这个字段必须保持不变。目的地址:这是个32比特字段。定义目的站的IP地址。在IP数据报从源主机发送到目的主机的时间内,这个字段必须保持不变。9§4-3分片一个数据报可以通过几个不同的网络。每一个路由器将它收到的帧进行拆包,进行处理,然后再封装成另一个帧。收到的帧的格式与长度取决于此帧刚刚经过的物理网络所使用的协议。发送出的帧的格式与长度则取决于此帧将要经过的物理网络所使用的协议。每一个数据链路层有其自己的帧格式,在这格式中有一个字段就是最大数据长度。称为最大传送单元(MTU)。当数据报封装成帧时,数据报的总长度必须小于这个最大传送单元。这是由网络所使用的硬件与软件给出的限制所定义的。10MTU的值对于不同的物理网络协议是不同的。为了使IP协议与物理网络无关,协议的设计者决定让IP数据报的最大长度等于65535字节。对于其他的一些物理网络,就要将数据报进行分割,时它们能够通过这些网络,这就叫做分片。当一个数据报被分片时,每一个数据报片有其自己的首部。如果遇到了一个具有更小MTU的网络,则一个分片了的数据报还可以再进行分片。一个数据报可以被主机或在其路径上的任何路由器进行分片。然而数据报的重装却只能在目的主机上进行。11对一个数据报进行分片的主机或路由器必须改变三个字段的值:标志、片偏移和总长度。其余的各字段必须被复制。与一个数据报的分片与重装有关的字段是:标识、标志和片偏移。•标识:这是一个16比特字段,标识一个从源主机发出的数据报。当数据报离开源主机时,这个标识与源IP地址必须唯一地定义这个数据报。当数据报被分片时,标识字段的值就复制到所有的分片中。也就是说,所有的分片具有相同的标识数。这在重装数据报时很有用。•标志:这是一个3比特字段。第一个比特保留为以后用。12第二个比特是不分片比特。若此值为1,则机器就不能将该数据报进行分片。若无法将此数据报通过任何可用的物理网络进行转发,则丢弃该数据报,并向源站发送ICMP差错报文。若为0,则可进行分片。第三个比特是还有分片比特。值为1,表示此数据报不是最后的分片;为0,则表示这已是最后的或唯一的分片。•片偏移:这是一个13比特字段。表示这个分片在整个数据报中的相对位置。它是在原始数据报中的数据的偏移量,以8字节为度量单位。因为偏移值是以8字节为单位的,因此,将数据报进行分片的主机或路由器必须这样选择每一个分片的长度,即第一个字节数应当能够被8除尽。13字节0000字节3999偏移=0000/8=0偏移=0000/8=000001399偏移=1400/8=17514002799偏移=2800/8=35028003999分片举例14这样,即使每一个分片走不同的路径,并在到达时失序,只要没有丢失,最终目的主机也能够用收到的这些分片重装成原始的数据报:第一个分片的片偏移值是0。将第一个分片长度除以8,这个结果就是第二个分片偏移值。将第一个和第二个分片的总长度除以8,结果就是第三个分片偏移值。继续以上过程。最后的分片的还有分片比特的值是0。15§4-4选项IP数据报的首部由两部分组成:固定部分和可变部分。固定部分的长度是20字节;可变部分由许多选项组成,最长可达40字节。选项对每个数据报来说并不是必需的,这些选项可用于网络的测试和排错。虽然选项并非IP数据报的必需部分,但当选项出现在首部中时,IP软件却必须能够处理这些选项。选项码(8比特)长度(8比特)数据(可变长度)选项的格式16选项码:共8比特长,包括三个子字段:复制(控制在分片中选项的出现)、选项类(定义了该选项的一般用途)和选项号(定义选项的类型)。具体见上图。长度:共8比特长,用来定义选项的总长度,包括选项码字段和长度字段本身。可选。数据:是一个可变长度的。包括了该特定选项所需的数据。可选。选项码(8比特)长度(8比特)数据(可变长度)复制(1比特)选项类(2比特)选项号(5比特)复制:0—仅在第一个分片复制1—复制到所有的分片选项类:00—数据报控制10—排错和管理01和11—保留选项号:00000—选项结束00001—无操作00011—不严格的源路由00100—时间戳00111—记录路由01001—严格的源路由17选项号----选项类型如上所示,目前主要是用6种选项,其中的两种是1字节选项,它们不需要长度字段和数据字段;另外4种是多字节选项,需要长度字段和数据字段。选项单字节多字节无操作选项结束记录路由严格的源路由时间戳不严格的源路由18无操作:是一个1字节选项,用作选项之间的填充符。可用于对齐选项表中的八位组。选项结束:也是一个1字节选项,用于选项字段结束时的填充。但它只能用作最后一个选项。在此选项之后,接收器就寻找有效载荷数据。选项数据选项结束19记录路由:用来记录处理数据报的互联网路由器。它可列出一直到9个路由器的IP地址。08162431代码(7)长度指针第一个IP地址(在开始时是空的)第一个IP地址(在开始时是空的)最后一个IP地址(在开始时是空的)……记录路由选项20严格的源路由:使用在源站。用来预先确定数据报在因特网中传送时的路由。08162431代码(137)长度指针第一个IP地址(在开始时填入)第一个IP地址(在开始时填入)最后一个IP地址(在开始时填入)……严格的源路由21说明:如果一个数据报指明了一个严格的源路由,该数据报就必须经过在选项中定义了的所有路由器。若一个数据报通过一个未列入的路由器,则该数据报将丢弃此数据报并发出差错报文。若数据报到达目的站时仍有某些项目未经过,则目的站应将此数据报丢弃并发出差错报文。不严格的源路由:使用在源站。与严格的源路由相似,但更放松。在表中的路由器必须通过,但数据报还可以通过其他的路由器。22时间戳:用来记录路由器处理数据报的时间。是我们能够估计一个数据报从一个路由器到另一个路由器所需的时间。08162431代码(68)长度指针第一个IP地址第一个时间戳时间戳选项溢出标志……溢出:统计因为选项空间太小而不能提供时间戳的路由器的个数。标志:控制选项的确切格式,并指明路由器应如何提供时间戳。见书P76。23§4-5检验和在大多数TCP/IP协议中采用的差错检测方法是检验和。在发送站先计算检验和并将得到的结果与分组一起发送出去。接收站对包括检验和的整个分组重复进行同样的计算。若结果正确就接受此分组,否组就将其丢弃。发送端的检验和计算:先将首部的检验和字段置为0。将分组划分为K部分,每部分都是16比特长。用反码算术运算将所有这些部分相加。将最终结果取反码就得出检验和。再将其填入检验和字段。24接收端的检验和计算:将收到的分组划分为K部分,每部分都是16比特长。用反码算术运算将所有这些部分相加。将得到的结果取反码。若结果为0,则接收此分组,否组就拒绝此分组。检验和只在首部而不在数据部分进行的原因:所有将数据封装在IP数据报中的高层协议,都有覆盖整个分组的检验和。每经过一个路由器,IP数据报的首部就要改变一次,但数据部分不变。减少了路由器的处理时间。
本文标题:第四章网际协议-Read
链接地址:https://www.777doc.com/doc-2170552 .html