资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
IP 数据报IP 的主要功能是在互联网上将数据以数据报的形式从一台主机传到另一台主机,中间可能要穿越若干个物理网络。在不同的网络之间,通过路由器来传递数据报。IP 数据报格式IP 数据报是 Internet 的基本传送单元,包括数据报报头和数据区两部分。IP 数据报的格式在本书第 1 章图 1-8 已有表示,为了说明方便,稍作修改在图 2-3 中重画。图 2-3 IP 数据报格式由于数据报处理是在软件中进行的,所以它的格式和内容都不受硬件的限制。其各个字段含义如下: 版本( 4 位):指明本数据报所属的 IP 的版本。 目前的协议版本号是 4 ,因此 IP 有时也称作 IPv4 。 2.6 节将对下一代的 IP 协议进行讨论。 报头长( 4 位):指明本数据报报头(包括任何选项)长度,长度单位是 32bit 字,即每个字为 4 字节。由于它是一个 4 比特字段,因此首部最长为 15 个字( 60 个字节)。普通 IP 数据报(没有任何选择项)字段的值是 5 ,因此选项最多占 40 字节( 10 个字)。 服务类型( TOS , Type of Service , 8 位):描述本数据报所要求的服务质量,称为服务质量参数。服务类型字段包括一个 3bit 的优先权子字段(现在已被忽略), 4bit 的 TOS 子字段和 1bit 未用位但必须置 0 。 4bit 的 TOS 分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。 4bit 中只能置其中 1bit 。如果所有 4bit 均为 0 ,那么就意味着是一般服务。 RFC 1340 Reynoldsand Postel 1992 描述了所有的标准应用如何设置这些服务类型。 RFC 1349 Almquist 1992 对该 RFC 进行了修正,更为详细地描述了 TOS 的特性。 表 2-4 列出了对不同应用建议的 TOS 值。表 2-4 服务类型字段推荐值Telnet 和 Rlogin 这两个交互应用要求最小的传输时延,因为人们主要用它们来传输少量的交互数据。另一方面, FTP 文件传输则要求有最大的吞吐量。最高可靠性被指明给网络管理( SNMP )和路由选择协议。用户网络新闻( Usenet news, NNTP )是唯一要求最小费用的应用。现在大多数的 TCP/IP 实现都不支持 TOS 特性,但是自 4.3 BSD Reno 以后的新版系统都对它进行了设置。另外,新的路由协议如 OSPF 和 IS-IS 都能根据这些字段的值进行路由决策。 总长度( 16 位):指明整个 IP 数据报的长度,包括报头与数据部分,以字节为单位。利用报头长度字段和总长度字段,就可以知道 IP 数据报中数据内容的起始位置和长度。由于该字段长 16 比特,所以 IP 数据报最长可达 65535 字节。尽管可以传送一个长达 65535 字节的 IP 数据报,但是大多数的链路层都会对它进行分片。 标识( 16 位):该字段唯一地标识主机发送的每一份数据报,通常每发送一份报文它的值就会加 1 。若路由器将本数据报分片传送,此标识将拷贝到每个分片的 IP 报头中,所以本标识用于识别同一个报文的各个分片,便于分片重组。 DF ( 1 位):不分片( Dont Fragment )标志。 DF=1 表示禁止本数据表分片。 MF ( 1 位):后面还有分片( More Fragments )标志。对于分成多段的数据报来说,只有最后一段的 MF=0 ,其它分片的 MF=1 。 分片位移( Fragment Offset , 13 位):指明本分片在原数据报中的位置。对单段数据报或多段数据报的第一个分片,分片位移 0 。总共 13 位,因此每个数据报最多可有 2 13 8192 个分片。除了最后一个分片外,其它分片的数据长度都是 8 字节的倍数。分片位移值乘 8 指出本分片在原数据报中从第几字节开始。 生存时间( TTL , Time To Live , 8 位):该字段设置了数据报可以经过的最多路由器数,即指定了数据报的生存时间。 TTL 的初始值由源主机设置(通常为 32 或 64 ),一旦经过一个处理它的路由器,它的值就减去 1 。当该字段的值为 0 时,数据报就被丢弃,并发送 ICMP 报文通知源主机。这样可以防止不能投递的数据报无休止地来回传递。 协议号( 8 位):指明接收数据报数据部分的上一层协议。如 6 表示上层是 TCP , 17 表示上层是 UDP 。 报头校验和( 16 位):该字段是根据 IP 报头计算出的检验码,它不对报头后面的数据进行计算。为了计算一份数据报的 IP 校验和,首先把校验和字段置为 0 。然后,对报头中每个 16bit 进行二进制反码求和(整个报头看成是由一串 16bit 的字组成),结果存在校验和字段中。当收到一份 IP 数据报后,同样对报头中每个 16bit 进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的校验和,因此,如果报头在传输过程中没有发生任何差错,那么接收方计算的结果应该为全 1 。如果结果不是全 1 (即校验和错误),那么 IP 就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。由于在通过路由器时要修改 TTL 字段(减 1 ),因此当路由器转发一份报文时要重新计算校验和。 源 IP 地址( 32 位):数据报的源主机的 IP 地址。 目的 IP 地址( 32 位):数据报的目的主机的 IP 地址。 选项填充:选项是数据报中的一个可变长的可选信息,具体内容在 2.3.3 节介绍。选项字段一直都是以 32bit 作为界限,在必要的时候插入值为 0 的填充字节。这样就保证 IP 报头长度始终是 32bit 的整数倍(这是报头长度字段所要求的)。分片与重组在理想情况下,整个数据报被封装在一个物理帧中,使物理网络上的传送非常有效。但是,我们知道,每一种分组交换技术都对一个物理帧可传送的数据量规定了一个固定的上界。例如以太网允许最大帧长 1518 字节,而 X.25 允许的最大包长为 1024 字节。我们把这些限制称为网络最大传送单元或 MTU ( Maximum Transfer Unit )。 MTU 可能很小:有的硬件技术限制为 128 字节或更少。当数据报通过一个可以运载长度更大的帧的网络时,把数据报大小限制到互联网上最小 MTU 是不经济的;相反,如果数据报的大小比互联网中最小的网络 MTU 大,则数据报无法封装在一个帧中。互联网设计的主旨是隐藏底层网络技术和方便用户通信。因此,不是设计数据报的大小是它与物理网络的限制相近,相反, TCP/IP 软件选择了一个方便的初始数据报大小,同时提供一种机制,在 MTU 较小的网络上,把大的数据报分成较小的单位。这种较小的单位叫做数据报片或段( fragment ),划分数据报的过程叫做分片或分段( fragmentation )。分片通常发生在路由器上,这些路由器分布在从数据报的源网点到目的网点之间路径上。路由器经常需要从一个具有大 MTU 的网络上接收数据报且必须在一个 MTU 小于数据报大小的网络上传送它,这就需要分片。图 2-4 表示了这样的一个需要分片的案例:网络 1 和 3 的 MTU 为 1500 ,网络 2 的 MTU 为 620 ,当主机 A 和主机 B 通信时,路由器 R 1 把从 A 发送到 B 上的长数据报分片,路由器 R 2 把从 B 发送到 A 上的长数据报分片。图 2-4 分片的图示IP 协议不限制数据报最小应为多小,但也不保证不分片的长数据报的可靠投递。源网点可以任意选择合适的数据报大小;分片和重组自动进行,源网点不必采取任何措施。 IP 规范对路由器提出以下要求:路由器必须接受所连网络中最大 MTU 大小的数据报;同时,它必须随时能够处理至少 576 个字节的数据报(同样要求主机也随时能够接受或重组至少 576 字节的数据报)。单片 IP 数据报的 MF=0 。分成多个报片后,只有最后一个报片的 MF 0 ,其余报片的 MF 1 。分片位移指明该报片在原数据报中的位置。分片影响的报头字段包括 MF 位、分片位移、报头长、总长度及报头校验和。各分片报头的这些字段要重新计算,其它字段只要从原报头拷贝即可。分片后的数据报在转发过程中还可能经过某个物理网络,其允许的包长更短,这时还要再分片。对 DF 1 的数据报禁止分片,若途经的下一个网络要求分片,路由器只能将此数据报丢弃。数据报的重组有两种方法:一是在通过一个网络后就将分片的数据报重组;而是在到达目的主机后重组。在 TCP/IP 实现中,采用的是后一种方法。这种方法相对较好,它允许对每一个数据报片独立地进行路由选择,而且不要求路由器对分片存储或重组。数据报头中的标识、标志和分片位移三个字段用作控制分片和重组。路由器在对数据报分片时,把报头中的大部分字段都拷贝到每个分片的报头中,其主要目的是为了让目的主机知道每个到达的数据报片属于哪个数据报。目的主机通过数据报片的标识字段、源 IP 地址及目的 IP 地址来识别数据报。目的主机要缓存数据报的分片,等分片到齐后进行重组。但可能有一些分片在传输中丢失,为此 IP 规定了分片保留的最长时间。从数据报的最先到达的分片开始计时,若逾期分片未到齐,则目标主机丢弃已到达的分片。IP 数据报选项IP 数据报选项字段主要是用于网络测试或调试,但是选项的处理是 IP 协议的组成部分,因此所有的标准实现必须将其包含在内。IP 选项字段的长度变化依赖于所选的项。有的选项只有 1 个字节,它们由 1 个字节的选项码( option code )组成;其它选项是可变长度的。在一个数据报中,选项是连续出现的,中间没有任何分隔符。每个选项包含一个 1 字节长的选项码,后面可能跟有一个 1 字节的长度和该选项的一组数据。选项码字节分成如图 2-5 所示的三个字段。图 2-5 选项码字节分成长度为 1 , 2 和 5 比特的三个字段整个字段有 1 比特的拷贝( COPY )标志、 2 比特的选项类( OPTION CLASS )以及 5 比特的选项号( OPTION NUMBER )组成。拷贝标志控制路由器在分片过程中对选项的处理:该比特置 1 时,说明该选项应被拷贝到所有分片中去;如果置 0 ,则仅把该选项拷贝到第一个分片中。选项类和选项号指明选项的一般类型并且给定了该类中的一个特殊选择。表 2-5 显示了类是如何分配的,表 2-6 列出了 IP 数据报中可能有的选项并给出了它们的选项类和选项号。表 2-6 IP 选项列表路由和时间戳选项提供了一种监视或控制互联网路由器路由数据报的方法。记录路由选项允许源站生成一个 IP 地址的空表,并有处理过该数据报的每个路由器将其 IP 地址加入表中。当数据报到达时,目的主机能提取和处理该 IP 地址表。源路由选项提供了一种由源站点指定一条通过互联网的路径的方法。 IP 支持两种源路由选择方法。一种是严格源路由选择,规定数据报要经过指定的地址到达目的主机。表中路径上相继两个地址必须处于同一个物理网上,如果路由器无法沿着严格源路由选择,则出现差错。另一种是宽松源路由选择,它要求数据报必须沿着规定的 IP 地址序列传送,但是允许表中相继两个地址之间跳个多个网络。时间戳选项也是在源站生成一个空表,并由处理过该数据报的路由器在表中填入该路由器的 IP 地址以及一个 32 位整数时间戳。时间戳给出了路由器处理数据报的时间和日期,用格林威治时间表示,以千分之一秒为单位。将路由和时间戳记录在一起允许接受方知道数据报传送的确切路由。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号