计算机网络—— 网络层(789):IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT

Posted 大彤小忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络—— 网络层(789):IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT相关的知识,希望对你有一定的参考价值。

7. IPv4数据报的首部格式

在这里插入图片描述
  ■ 版本: 占4比特,表示lP协议的版本。
       通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。
  ■ 首部长度: 占4比特,表示lP数据报首部的长度。该字段的取值以4字节为单位。
         最小十进制取值为5,表示lP数据报首部只有20字节固定部分;
         最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
  ■ 可选字段: 长度从1个字节到40个字节不等。用来支持排错、测量及安全等措施。
         可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
  ■ 填充字段: 确保首部长度为4字节的整数倍。使用全0进行填充。
  ■ 区分服务: 占8比特,用来获得更好的服务。
         该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。
         1998年,因特网工程任务组IETF把这个字段改名为区分服务。
         利用该字段的不同数值可提供不同等级的服务质量。
         只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
  ■ 总长度: 占16比特,表示IP数据报的总长度(首部+数据载荷)。
        最大取值为十进制的65535,以字节为单位。
  ■ 标识、标志、片偏移: 这三个字段共同用于IP数据报分片。
    ⋄ \\diamond 标识: 占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
        IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
    ⋄ \\diamond 标志: 占3比特,各比特含义如下:
        ∘ \\circ DF位: 1表示不允许分片;
            0表示允许分片。
        ∘ \\circ MF位: 1表示“后面还有分片”;
            0表示“这是最后一个分片”。
        ∘ \\circ 保留位: 必须为0。
    ⋄ \\diamond 片偏移: 占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
         片偏移以8个字节为单位。
   ■ 生存时间TTL: 占8比特,最初以秒为单位,最大生存周期为255秒;
           路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
           现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
   ■ 协议: 占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
        常用的一些协议和相应的协议字段值如下。

在这里插入图片描述
   ■ 首部检验和: 占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
              IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。
              由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报。
   ■ 源IP地址和目的IP地址: 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。

7.1 课后练习

  1. 以下关于IPv4数据报结构的描述中,错误的是( B )
    A. IPv4数据报的首部长度是可变的
    B. IPv4数据报首部中的协议字段表示IP的版本,值为4表示IPv4
    C. IPv4数据报首部中的首部长度字段以4B为单位,总长度字段以字节为单位
    D. IPv4数据报首部中的生存时间字段的值表示一个IPv4数据报可以经过路由器的数量
   分析: IPv4数据报首部中的协议字段指明IPv4数据报的数据部分是何种协议数据单元。

  2. 在IPv4数据报首部的字段中,与分片和重组无关的字段是( D )
    A. 标识
    B. 标志
    C. 片偏移
    D. 协议
   分析: 在IPv4数据报首部的字段中,与分片和重组无关的字段是协议。

  3. 以下关于IPv4数据报分片基本方法的描述中,错误的是( D )
    A. IPv4数据报长度大于MTU时,就必须对其进行分片
    B. DF值为0表示允许对IPv4数据报进行分片
    C. 分片的MF值为1表示接收到的分片不是最后一个分片
    D. 属于同一原始IPv4数据报的分片可以具有不同的标识
   分析: 关于IPv4数据报分片基本方法, 标识:属于同一个数据报的各分片数据报应该具有相同的标识。

8. 网际控制报文协议ICMP

   ■ 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)。
   ■ 主机或路由器使用ICMP来发送差错报告报文询问报文
   ■ ICMP报文被封装在IP数据报中发送。
   ■ ICMP差错报告报文共有以下五种:
      1. 终点不可达
      ⋄ \\diamond 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。

在这里插入图片描述
      2. 源点抑制
      ⋄ \\diamond 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

在这里插入图片描述
      3. 时间超过
      ⋄ \\diamond 当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
      ⋄ \\diamond 若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。

在这里插入图片描述
      4. 参数问题
      ⋄ \\diamond 当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。

在这里插入图片描述
      5. 改变路由(重定向)
      ⋄ \\diamond 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

在这里插入图片描述
   ■ 以下情况不应发送ICMP差错报告报文
    ⋄ \\diamond 对ICMP差错报告报文不再发送ICMP差错报告报文
    ⋄ \\diamond 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
    ⋄ \\diamond 对具有多播地址的数据报都不发送ICMP差错报告报文
    ⋄ \\diamond 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

   例: 若路由器R因为拥塞丢弃IP分组,则此时R可向发出该IP分组的源主机发送的ICMP报文类型是( C )
     A. 路由重定向  B. 目的不可达  C. 源点抑制  D. 超时
    分析: 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。

   ■ 常用的ICMP询问报文有以下两种:
    ⋄ \\diamond 回送请求和回答
    ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
    这种询问报文用来测试目的站是否可达及了解其有关状态。
    ⋄ \\diamond 时间戳请求和回答
    ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
    在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
    这种询问报文用来进行时钟同步和测量时间。

   ■ ICMP应用举例:
    ⋄ \\diamond 分组网间探测PING(Packet InterNet Groper)
     ∘ \\circ 用来测试主机或路由器间的连通性
     ∘ \\circ 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
     ∘ \\circ 使用ICMP回送请求和回答报文
    ⋄ \\diamond 跟踪路由traceroute
     ∘ \\circ 用来测试IP数据报从源主机到达目的主机要经过哪些路由器
     ∘ \\circ Windows版本
      ⋆ \\star tracert命令
      ⋆ \\star 应用层直接使用网际层ICMP
      ⋆ \\star 使用了ICMP回送请求和回答报文以及差错报告报文
     ∘ \\circ Unix版本
      ⋆ \\star traceroute命令
      ⋆ \\star 在运输层使用UDP协议仅使用ICMP差错报告报文
      ⋆ \\star 仅使用ICMP差错报告报文

8.1 课后练习

  1. 下列关于ICMP报文的说法中,错误的是( A )
    A. ICMP报文直接封装在链路层帧中发送
    B. ICMP报文可用于报告IP数据报的传输错误
    C. ICMP报文需要封装在IP数据报中发送
    D. ICMP报文本身出错将不再处理
   分析: ICMP报文作为IP层数据报的数据,加上IP数据报的首部,组成IP数据报发送出去。

  2. 以下关于ICMP差错报告报文的描述中,错误的是( C )
    A. 对于已经携带ICMP差错报告报文的IP数据报,不再产生ICMP差错报告报文
    B. 对于已经分片的IP数据报,只对第一个分片产生ICMP差错报告报文
    C. PING使用了ICMP差错报告报文
    D. tracert使用了ICMP回送请求和回答报文以及差错报告报文
   分析: PING使用了ICMP的询问报文中的回送请求和回答报文。

  3. 若某个路由器收到TTL值为1的IP数据报,则( D )
    A. 转发该IP数据报
    B. 仅仅丢弃该IP数据报
    C. 丢弃该IP数据报并向发送该IP数据报的源主机发送类型为终点不可达的ICMP差错报告报文
    D. 丢弃该IP数据报并向发送该IP数据报的源主机发送类型为时间超过的ICMP差错报告报文
   分析: 若某个路由器收到TTL值为1的IP数据报,则丢弃该IP数据报并向发送该IP数据报的源主机发送类型为时间超过的ICMP差错报告报文。

9. 虚拟专用网VPN与网络地址转换NAT

9.1 虚拟专用网VPN(Virtual Private Network)

   利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
   如下图所示,同一机构内不同部门的内部网络所构成的虚拟专用网VPN又称为内联网VPN

在这里插入图片描述
   VPN要保证传输数据的安全性,会将原始的内部数据报进行加密,然后再将其封装成为在因特网上发送到的外部数据报。
   有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来,这样的VPN就称为外联网VPN
   在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源,这种VPN称为远程接入VPN

9.2 网络地址转换NAT

   虽然因特网采用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用户数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除。
   1994年提出了一种网络地址转换NAT的方法再次缓解了IPv4地址空间即将耗尽的问题
   NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。

   该转换方法存在一个问题:如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。

   由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换。这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT(Network Address and Port Translation)。

在这里插入图片描述
   思考: 内网主机与外网主机间的通信,是否能由外网主机首先发起?
   不能。如果由外网主机首先发起,那么当NAPT收到来自外网的IP数据报后,在NAPT转换表中找不到相应的记录!也就无法把数据报转发给内网中的主机。因此,使用私有地址的主机不能直接充当因特网服务器。
   对于一些点对点网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时会遇到问题,需要网络应用自己使用一些特殊的NAT穿越技术来解决问题。
   另外,由于NAT对外网屏蔽了内网主机的网络地址,因此能为内网主机提供一定的安全保护。

在这里插入图片描述

9.3 课后练习

  1. 根据NAT协议,下列IP地址中不允许出现在因特网上的是( C )
    A. 192.172.56.23  B. 172.15.34.128   C. 192.168.32.17  D. 172.128.56.65
   分析: A项,192.172.56.23,不属于私有IP地址C类,可以出现在因特网上,不当选;
       B项,172.15.34.128,不属于私有IP地址B类,可以出现在因特网上,不当选;
       C项,192.168.32.17,属于私有IP地址C类,不可以出现在因特网上,当选;
       D项,172.128.45.34,不属于私有IP地址B类,可以出现在因特网上,不当选。
       NAT(网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。这种通过使用少量的公有IP地址代表较多的私有IP地址的方式,将有助于减缓可用的IP地址空间的枯竭。私有IP地址是指内部网络或主机的IP地址,公有IP地址是指在因特网上全球唯一的IP地址。RFC1918为私有网络预留出了三个IP地址块,如下:A类: 10.0.0.0~10.255.255.255;B类: 172.16.0.0~172.31.255.255;C类: 192.168.0.0~192.168.255.255。上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP或注册中心申请而在公司或企业内部自由使用。故本题正确答案选C。

  2. 为了解决IPv4地址耗尽的问题,可以采用以下一些措施,其中治本的是( D )
    A. 采用CIDR  B. 采用VPN   C. 采用NAT  D. 采用IPv6
   分析: 为了解决IPv4地址耗尽的问题,可以采用以下一些措施,其中治本的是采用IPv6。

以上是关于计算机网络—— 网络层(789):IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络—— 网络层(789):IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT

计算机网络—— 网络层(789):IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT

网络层

2万字全面总结计网 之 网络层,建议考前通读复习

计算机网络湖科大微课堂笔记 p54-57 IPv4数据报的首部格式网际控制报文协议ICMP虚拟专用网VPN与网络地址转换NAT

IPv4报文分片