图解TCP/IP-----IP协议(2)

此系列博客,图片文字观点均是来自《图解TCP/IP》,仅作为学习用途。

1、路由控制

        发送数据包时使用的地址是网络层地址,IP地址。但是仅仅有IP地址不足以实现将数据包发送到对端地址,在发送的过程中还需要类似于指明路由器和主机的信息,一边真正的发往目标主机。保存这个信息的就是路由控制表。

    1.1 IP地址与路由控制

        IP地址的网络地址部分用于路由控制。路由控制表中记录着网路地址和下一步应该发送至路由器的地址。在发送IP包时,首先要确定IP包中首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该纪录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同的网络地址的记录,就选择一个最吻合的,所谓的最吻合指相同位数最多的。

     *默认路由

      如果一张路由表包含所有的网络和子网信息经会造成无端的浪费。默认路由是指路由表中任何一个地址都能与之匹配的记录。

     默认路由一般比较标记为0.0.0.0或者default,

    *主机路由

      IP地址/32,也被称为主机路由,它的意思是整个IP地址的所有位都将参与路由。进行主机路由,意味着主机网卡上配置的IP地址本身,而不是基于该地址的网络地址部分路由。

     使用主机路由多被用于不希望通过网络地址路由的情况。

    *环回地址

      环回地址是在同一台计算机上的程序之间进行网络通信所使用的一个默认地址。计算机使用一个特殊的IP地址127.0.0.1作为环回地址。与该地址具有相同意义的是一个叫做localhost的主机名。使用这个IP或者主机名时,数据包不会流向网络。

1.2 路由控制表的聚合

        利用网络地址的比特分布,可以有效地进行分层配置。也就是对内即使有多个子网掩码,对外呈现出同一个网络地址。通过路由信息的聚合可以有效的减少路由表的条目。这样也就能够减少CPU和内存的占用。

2、IP分割处理和再构成处理

     2.1 数据链路不同,MTU则不同

          每种数据链路的最大传输单元(MTU)都不尽相同。IP属于数据链路上一层,它必须不受限与不同的数据链路的MTU大小。

    2.2 IP报文的分片与重组

         任何一台主机都有必要对IP分片进行相应的处理。往往是在网络上遇到比较大的报文无法一下子发送出去才会处理。

         经过分片之后,重组只会由目标主机进行。如果在中途重组,那么在下一站还可能会面临分片的可能,会给路由器带来多余的负担。所以,在终节点进行重组称为规范。

        IP首部中“片偏移”字段表示分片后每个分片在用户数据中的相对位置和该分片之后是否还有后续其他分片。

    2.3  路径MTU发现

           分片机制的不足:路由器的处理负荷加重,人们对网络安全的要求提高。因此产生了一种新的技术,“路径MTU发现”。所谓路径MTU是指从发送端主机到接收端主机之间不需要分片时最大MTU的大小。也就是整个路径中存在的所有数据链路中最小的MTU。而路径MTU发现是指从发送主机按照路径MTU的大小将数据报分片之后进行发送。进行路径MTU发现,就可以避免在中途的路由器上进行分片,也可以在TCP中传送更大的包。

         步骤:首先,发送端主机发送IP报时将首部的分片禁止标志位设置为1。根据这个标志为,途中的路由器即使遇到需要分片才能处理的数据包也不会分片,而是将包丢弃,同时通过一个ICMP的不可达消息将数据链路上MTU的值发送给主机。下一次,从发送给同一目标主机的IP数据报获得ICMP所通知的MTU值以后,将它设置为当前MTU。发送主机根据这个MTU对数据包进行分片处理,如此反复,知道数据报被发送到目标主机为止,没有再收到任何ICMP,就认为此时的MTU为一个合适的MTU。在IP层分片,到达目标主机后重组,再传给UDP(UDP情况下)。在TCP情况下,根据路径MTU算出最大长度,然后根据这些信息进行数据报的发送。因此在TCP中采用路径MTU发现,IP层不会再进行分片处理。不需要重组,数据被原样发送给TCP。

3、IPv6

    3.1 IPv6的必要性

         IPv6是为了从根本上解决IPv4地址耗尽的问题而标准化的网际协议。IPv4地址长度为4个8位字节,即32比特。而IPv6的地址长度则是原来的四倍,即128比特。一般写成8个16位字节。

   3.2 IPv6 的特点

         * IP地址的扩大与路由控制表的聚合

         *性能提升

          *支持即插即用的功能

          *采用认证与加密功能

          *多播、mobile IP成为扩展功能

    3.3 IPv6中IP地址的标记方法

       将128比特IP地址以每16比特为一组,每组用冒号(:)隔开进行标记。并且如果出现连续的0时还可以将这些0省略,并用两个冒号(:)隔开。但是一个IP地址只能出现一次两个连续冒号。

       比如:十六进制表示为 1080:0:0:0:8:800:200C:417A省略后变成 1080::8:800:200C:417A  。

   3.4 IPv6地址结构 

         IPv6类似IPv4,也是通过IP地址的前几位标识IP地址的种类。

         在互联网通信中,使用一种全局的单播地址,它是互联网中唯一的一个地址,不需要正式分配IP地址。

         限制型网络,即那些不与互联网直接接入的私有网络,可以使用唯一本地地址。该地址根据一定的算法生成随机数并融合到地址当中,可以当IPv4的私有地址一样自由使用。

       在不使用路由器或者在同一个以太网网段内进行通信,可以使用链路本地单播地址。

       在构建允许多种类型的IP地址的网络时,在同一个链路上可以使用全局单播地址以及唯一本地地址进行通信。在IPv6的环境下,可以同时将这些IP地址全都配置在同一个NIC上,按需灵活使用。

    3.5 全局单播地址

         全局单播地址是指世界上唯一的一个地址。它是互联网通信以及各个域内部通信中最为常用的一个IPv6地址。IPv6的网络中所用的格式为,n=48,n=16,以及128-n-m=64,前64位比特为网络标识,后64位比特为主机标识。前n比特为全局路由前缀,为广域网络。m比特为子网ID,站点内部。后64比特,为接口ID,主机标识。(P147图)

                  

    3.6 链路本地单播地址

        链路本地单播地址是指在同一个数据链路内唯一的地址,它不用经过路由器,在同一个链路中的通信。通常接口ID保存64比特版的MAC地址。前10比特为:1111111010,中间54比特全为0,后64比特,为接口ID。

                  

   3.7 唯一本地地址

         唯一本地地址是不进行互联网通信所使用的地址。唯一本地地址虽然不会与互联网连接,但也会尽量随机生成唯一一个全局ID。

                  

  3.8 IPv6 分段处理

        IPv6的分段处理只在作为起点的发送端主机上进行,路由器不参与分片。这也减少了路由器的负荷。

4、IPv4首部

          通过IP进行通信时,需要在数据前面加上IP首部信息,IP首部中包含着用于IP协议进行发包控制时所有的必要信息。(下图)。

                

    分部分进行介绍:

        *版本

         由4比特构成,表示标识IP首部的版本号。

                 

        *首部长度

         由4比特构成。表明IP首部大小。单位为4字节。对于没有可选项的IP包,首部长度设为5,也就是IP首部长度为4*5=20字节。

        *区分服务(TOS)

         由8比特构成。用来表示服务质量。通常由应用指定,但是目前已经很少用,有人提出将其分为DSCP和ECN两个字段。

                

        *DSCP段和ECN段

                

         DSCN(Differential Services Codepoint,差分服务代码点),用来进行质量控制。为了和TOS 保持一致,如果3-5位的值为0,0-2则为类别选择代码点。ECN(显示拥塞通告)用来报告网络拥堵情况。

       *总长度(Total Length)

        表示IP首部与数据部分合起来的总字节数,该字段长16比特,因此IP包的最大总长度为65535字节。虽然目前不存在能传输65535字节的数据链路,但是IP可以经过分片处理,从IP层来看,不论底层采用何种数据链路,都能以IP最大包长传输数据。

        *标识(ID)

         由16比特组成,用于分片处理。

        *标志(Flag)

         由3比特构成,表示包被分片的相关信息。

 

        *片偏移

        由13比特组成,用来标识被分片的每一个分段相对于原始数据的位置。第一个分片对应的值为0。

       *生存时间(TTL:Time to live)

        由8比特构成,它最初的意思是以秒为单位记录当前包在网络上应该生存的时间。实际中它是可以中转多少个路由器的意思。每经过一个路由器,TTL-1,到0则丢包。

       *协议(Protocol)

        由8比特构成。标识IP首部的下一个首部隶属于哪个协议。(如下图)

                  

                

        *首部校验和(Header Checksum)

         由16比特构成,也叫IP首部校验和,只校验数据报的首部,不校验数据部分。主要用来确保IP数据包不被破坏。

         *源地址

          由32比特构成,表示发送端IP地址

        * 目标地址

          由32比特构成,表示接收端IP地址。

        *可选项 

         长度可变,通常只在实验中使用。

       * 填充

        填充物,在有可选项的情况下,首部长度可能不是32比特的整数倍,因此需要填充0,以调整为32的整数倍。

        * 数据

         存入数据。将IP上层协议的首部也可以当成数据。

 

              

                 

         

   

              

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值