原创 网际协议:无连接数据报交付(IPv4)(第四篇)

2008-3-12 16:58 3248 7 7 分类: 通信

互联网服务的三个概念层:
                  e773927d-7c16-4105-975f-36d22ab23895.JPG
    在最底层,无连接的数据报交付服务提供了其他服务赖以生存的基础。在第二层,可靠的传输服务提供了应用所依赖的较高层平台。
    这种层次概念划分的主要优点是:在不干扰其他服务的情况下,使替换某个服务称为可能。因此,这三种服务的研究和开发可以并行开展。
    最基本的互联网服务包括一个分组交付系统该服务被定义为不可靠的、尽最大努力交付的、无连接分组交付系统
    类似于按照尽最大努力交付模式运行的网络硬件所提供的服务。认为不可靠,因为这种服务不能保证交付;认为服务无连接,因为每个分组都被独立处理;认为尽最努力交付,是由于互联网软件努力尝试发送每个分组,也就是说,互联网不会随便丢弃哪个分组;只有当资源耗尽或底层网络出现故障时才可能出现不可靠性。
    这种定义不可靠、无连接交付机制的协议称为网际协议IPv4。表示IP是版本4。

IPv4数据报:

    IP提供了三个重要定义:
    第一、IP定义了整个TCP/IP互联网中使用的数据传送基本单元。
    第二、IP软件完成转发的功能,选择分组发送的路径。
    第三、IP还包含一组体现不可靠分组交付思路的规则,这些规则刻画了主机和路由器应该如何处理分组,如何产生差错报文,及什么情况下可以丢弃分组。

    IP数据报格式点击看大图
    版本:4位。对于IPv4,其值是4。以后会提到IPv6。
    首部长度: 4位。以32位字度量的数据报首部长度。若不含IP选项和填充字段,首部长度值为5,即20个八位组。
    总长度:16位。以八位组度量的数据报总长度,包括首部和数据区。
    服务类型:8位。最初的称为TOS(Type Of Service),它指明应该如何处理数据报,如优先级和期望的路径特征(如低时延等)。90年代后期,IETF重新定义了字段的含义,提供区分服务


                            7c28fa98-fccb-4d90-9a20-a569a602bb8d.JPG


    根据区分服务的解释,前6位组成码点字段,缩写为DSCP,后两位保留未用。


    最初的TOS中定义的优先级为8大类服务:


                                              XXX000


    优先级6或7用于优先权高的路由选择通信量。


    使用区分服务的定义兼容最初的TOS定义:



    池                                             码点                                             由谁指派

     1                                           XXXXX0                                        标准组织
     2                                           XXXX1 1                                        本地或实验人员
     3                                           XXXX0 1                                        本地或实验人员



    一半的码点值(池1中的32个值)必须有IETF来分配解释。

    无论使用最初的TOS解释还是修改后的区分服务解释,转发软件的任务就是根据服务类型字段的码点值以及本地策略和对路径上的硬件技术的了解,应用转发算法选择一个转发路径。


数据报的封装和分片:


                    fe03cf3e-f6e2-449f-bbc4-c966f1ff7a42.JPG


    数据报都是封装在物理帧中的。尽管IPv4给数据报总长度字段分配了16位,限制其长度为65535八位组。但实际的限制在具体的物理网络中,以太网帧的数据区限制1500八位组。我们希望把一个网络分组的抽象直接映射到一个实际的分组。


    以太网帧数据区的1500八位组即其最大传送单元MTU,而其他物理网络的MTU不一定是1500八位组,可能小于,也可能大于1500八位组。


    IP规定源站可以任意选择数据报的大小,但源站在选择数据报的大小时必须考虑到效率高低,如果网络全部由以太网组成,则应该将数据报大小限制在1500八位组内的最长的长度。这样效率很高;如果网络中含有MTU小的物理网络,则分组在通过该网络时,在路由器上应该先分片fragmentation,再通过该网络,然后重装reassembled被规定在到达目的主机后进行。IP规范指出:路由器必须能够接受所连网络中最大MTU大小的数据报。而且,他必须随时能够处理大小不超过576八位组的数据报(要求主机也随时能够接受576八位组的数据报,并在必要时重装数据报)。分片由路由器进行,重装一般为主机进行。


    数据报分片控制由标识符标志数据报片偏移量这三个字段控制。


    一个例子:


点击看大图


    携带1400八位组数据的原始数据报,经过MTU为620八位组的网络时,分片为三组。首部中偏移量字段是以8八位组计的。


标识IDENTIFICATION:含有一个唯一识别该数据报的整数。目的主机通过识别源IP和标识来确定受到分组所属的数据报。


片偏移量FRAGMENT OFFSET:以8八位组为单位,确定此数据报片在总数据报中的偏移量。


标志FLAG:3比特。最高一位指明数据报是否可分片:有时当整个数据报才有用时,应用程序可以选择不允许分片。标志字段的两个低位比特称为更多分片位:因为每个数据报片的首部指明的长度是该数据报片的长度,而不是整个数据报的长度,所以目的主机不知到什么时候数据报全部收到,就是说不知道哪一个数据报片是该数据报的最后一片。标志字段为“1”表示后面还有分片。标志字段为“0”标识为最后一片。


    数据报片的首部中其他部分内容基本上复制了原始数据报的首部。


数据报重装:


    如果任何一个数据报片丢失,则数据报无法重装。因此接收机在它收到第一个数据报片后就启动一个重装计时器reassembly timer,如果没有收满所有报片就超时,则丢弃已收到的数据报片。


生存时间TTL:


    指明数据报在互联网中允许保留多长时间(以秒为单位)。当一台机器把数据报送入互联网时,就为数据报设置了一个最大生存时间。随着时间流逝,数据报经过的路由器和主机会递减此数据报的生存时间字段值,直到减少到0,互联网就丢弃该数据报。


    实际中,路由器让数据报延迟的情况已经一去不复返了,因此生存时间在实际中起着“跳数限制”的作用,而不是延迟时间的估计。路径沿线的每个路由器(每一跳)将生存时间值减1,它的好处是防止出现故障时数据报在互联网中无休止的游历。


协议PROTOCOL:


    它类似于物理帧中的类型字段,它指明了数据报中数据区携带的报文是使用那个高层协议创建的。就像,以太网中类型字段可以指明其数据区是使用的ARP协议还是IP协议一样。


首部检验和HEADER CHECKSUM:


    它保证首部字段值的完整性。路由器可以用它来检验首部,而不必费时地检验整个数据报。数据报的检验需要高层协议添加自己的检验和,可用自己的检验算法。首部和数据报是分开检验的。


Internet数据报选项(IP OPTION):


    它并非每个数据报都需要,数据报包含的选项主要用于网络测试或调试。IP 选项的长度也不是一定的。


    IP选项字段的长度变化取决于选择了哪个选项。最基本的选项码字段为1八位组:


               d31998b5-d534-4bc0-87c6-5a59659e2877.JPG


    复制:用于分片时,路由器如何处理选项。


                若为“1”,则将该选项复制到所有数据报片中;


                若为“0”,则只将该选项复制到第一个报片中。


    选项类:每个选项类中包含一些选项号,属于分层结构。


                                选项类                                含义                                                      


                                     0                               数据报或网络控制


                                     1                                   保留


                                     2                               调试和度量


                                     3                                   保留


         ━━━┯━━━┯━━┯━━━━━━━━━━━━━━━━━━━━━━


    选项类│选项号│长度│描述

    ───┼───┼──┼────────────────────

  0 │ 0 │- │选项列表结束。该选项只占一个字节没有长度字节

 ───┼───┼──┼─────────────────────

  0 │ 1 │- │无操作。该选项只占一个字节,没有长度字节。

 ───┼───┼──┼─────────────────────

  0 │ 2 │11│安全和处理限制(用于军事目的)

 ───┼───┼──┼─────────────────────

  0 │ 3 │可变│不严格源路由。用来在一个指定路径为数据报选路

 ───┼───┼──┼─────────────────────

  0 │ 7 │可变│记录路由。用来跟踪IP数据报所采用的路由

 ───┼───┼──┼─────────────────────

  0 │ 8 │ 4│数据流标识符。已过时。

 ───┼───┼──┼─────────────────────

  0 │ 9 │可变│严格源路由。用来在指定路径上为数据报选路。

 ───┼───┼──┼─────────────────────

        0     |    11   |   4    |  MTU探测。用于探查获取路径MTU

      0      |   12    |  4    |   MTU回答。用于探查获取路径MTU

        0       |      20     |    4     |   路由器警告。即使不是被寻地址,路由器也应该检查这个数据报

  2 │ 4 │可变│Internet时间戳。用来记录路由上的时间戳

     2        |      18     |  可变 |  路由追踪。由traceroute程序用来沿路径查找路由器


    ━━━┷━━━┷━━┷━━━━━━━━━━━━━━━━━━━━━


记录路由选项:


        如果打开记录路由选项(代码7),则其格式如下:


        b0b0d8a6-7f9a-402e-8ade-fab2026c7249.JPG


        每当机器处理设置了记录路由选项的数据报时,它把自己的地址添加到记录路由表中,即“第一跳的IP地址……”中。


        长度字段:以八位组为单位。标识了选项在IP数据报中出现时的总长度,包括前边的这三个八位组。


        指针字段:以八位组为单位。指明下一个用于存放地址空位在选项中的偏移量。


        每次处理数据报,比较指针值和长度值。如果指针值比长度值大,则表已满,机器不插入自己的IP地址,而是直接转发数据报;如果不满,机器在指针指出的位置上插入自己的4八位组IP地址,并将指针值加4。


        要想目的主机处理记录路由表,则必须源主机开启记录路由选项,同时,目的主机也必须同意处理得到的表。


源路由选项


    包括严格的源路由选择和不严格的源路由选择。


    其选项格式与记录路由选项的格式一样。


               521e5476-d5cd-450e-94c1-eabea83556d3.JPG


    严格的源路由:数据报必须沿着地址表指明的确切路由到达目的地。


    不严格的源路由:地址表中两个相邻地址之间允许有多个网络跳。


    两种源路由选项都要求路径沿线的路由器用它们本地网络地址覆盖地址表中的表项。因此,当数据报到达目的站时,地址表中就包含了数据报到访过的所有地址。路由器的工作方法是:比较指针值和长度值,若表空间用完,则路由器仅把数据报转发到目的站;若表空间未用完,则路由器根据指针值取出IP地址,用路由器地址代替它,并使用从表中取得的IP地址转发数据报。


    此选项通常用来测试网络吞吐量等。


时间戳选项:


    点击看大图


    其包含一个初始为空的表,从源站到目的站的路径上每一个路由器个在表中填入一项。


    溢出字段含有一个整数计数器,它负责统计因为选项表空间太小而无法提供时间戳的路由器个数。


    标志字段用于控制选项的确切格式。



    标志值                 含义


      0                         只记录时间戳;忽略IP地址                                                         

      1                         在每个时间戳之前记录一个IP地址(即图示格式)


      3                         由发送方指明IP地址;如果表中下一个IP地址与路由器的IP地址匹配,则路由器只记录一个时间戳。



 

    注意,其中时间戳都按照每台机器自己的本地时钟报告。


 


分片时对选项的处理:-----复制?不复制


    比如说,对于记录路由选项,选项代码中的“复制”位应该关掉。因为目的主机可能会从不同路径受到数据报片,因此目的主机无法给重装的数据报产生一个有意义的路由表。


    再比如说,对于源路由选项,“复制”为应该打开。因为我们这时希望每个分片都按照我们给定的路由转发。

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条