计算机网络——网络层(IP地址与MAC地址、地址解析协议ARP、IP数据报格式以及转发分组、ICMP、IPV6)

IP地址与MAC地址

        由于MAC地址已固化在网卡上的ROM 中,因此常常将 MAC地址称为硬件地址或物理地址;物理地址的反义词就是虚拟地址、软件地址或逻辑地址,IP地址就属于这类地址。

        从层次的角度看,MAC地址是数据链路层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的)。

 IP地址与MAC地址在层次间的关系

        总之,IP地址放在IP数据报的首部,而MAC地址则放在MAC帧的首部。在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是MAC地址。

IP地址与MAC地址在运输中的关系


  • 数据报中间经过的两个路由器的IP地址并不出现在IP数据报的首部中。
  • IP数据报被封装在MAC帧中。MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化
    • 开始在H1到R1间传送时,MAC帧首部中写的是从MAC1地址发送到MAC3地址,路由器R1收到此MAC帧后,在数据链路层,要剥去原来的MAC帧的首部和尾部。在转发时,在数据链路层,要重新添加上MAC 帧的首部和尾部。这时首部中的源地址和目的地址分别变成为MAC4和MAC5。

为什么不能只用MAC地址进行寻址 

如果仅使用MAC地址进行通信,则会出现以下主要问题:

  • 路由表要记录网络中所有MAC地址:因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的MAC地址。
  • 配置路由表很麻烦:手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的MAC地址信息而严重占用通信资源。
  • 路由信息的存储和查找很麻烦:包含海量MAC地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延。

因特网的网际层使用IP地址进行寻址,就可使因特网中各路由器的路由表中的路由记录的数量大大减少:

  • 因为只需记录部分网络的网络地址,而不是记录每个网络中各通信设备的各接口的MAC地址。
  • 路由器收到IP数据报后,根据其首部中的目的IP地址的网络号部分,基于自己的路由表进行查表转发。

地址解析协议ARP 

        已经知道了一个机器的IP地址,需要找出其相应的 MAC地址。地址解析协议ARP就是用来解决这样的问题的。 

ARP的要点:

  • IP与MAC之间的关系很模糊:网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用链路层的MAC 地址。IP地址和下面链路层的MAC地址之间由于格式不同而不存在简单的映射关系。
  • MAC地址也随时发生变动:在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的MAC地址改变(请注意,主机的MAC地址实际上就是其网络适配器的MAC地址)。

        地址解析协议ARP解决这个问题的方法是在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)

ARP运行流程 

 


那如果A中的ARP高速缓存中没有找到主机B的IP地址呢?



B发送响应分组的流程如下:



MAC地址类型:

  • 动态:通过ARP自动获取,生命周期默认为两分钟。 
  • 静态:手工配置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。

        设置生存时间的原因: 


        答:转发表中的MAC地址与交换机接口号的对应关系记录也要周期性删除,因为这种对应关系并不是永久不变的。同理,ARP高速缓存表中的IP地址与MAC地址的对应关系也并不是永久不变的。例如,主机更换了一块新网卡。

 主机跨网络寻址

IP数据报的格式 

 

        一个IP数据报由首部和数据两部分组成首部的前一部分长度是固定的,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

版本

        长度为4个比特,用来表示lP协议的版本;通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议的版本号为4(即IPv4)        

首部长度

长度为4个比特,该字段的取值以4字节为单位,用来表示IPv4数据报的首部长度

  • 最小取值为二进制的0101,即十进制的5,再乘以4字节单位,表示IPv4数据报首部只有20字节固定部分。
  • 最大取值为二进制的1111,即十进制的15,再乘以4字节单位,表示IPv4数据报首部包含20字节固定部分和最大40字节可变部分。

    以下是对该概念的深入讨论:

        大概可以得出首部长度是怎样控制的

区分服务

        长度为8个比特,用来获得更好的服务。
        该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组ETF把这个字段改名为区分服务。利用该字段的不同取值可提供不同等级的服务质量。
        只有在使用区分服务时该字段才起作用,一般情况下都不使用该字段。

总长度

        长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度)最大取值为二进制的16个比特1,即十进制的65535(很少传输这么长的IPv4数据报)。

总长度与首部长度的关系 

标识、标志、片位移 

标识:长度为16个比特,属于同一个IPv4数据报的各分片数据报应该具有相同的标识。
        IP软件会维持一个计数器,每产生一个IPv4数据报,计数器值就加1,并将此值赋给标识字段。


标志:
最低位(More Fragment,MF)

  • MF=1表示本分片后面还有分片
  • MF=0表示本分片后面没有分片

中间位(Don't Fragment,DF)

  • DF=1表示不允许分片
  • DF=0表示允许分片

最高位为保留位,必须设置为0


片位移:长度为13个比特,该字段的取值以8字节为单位,用来指出分片lPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远。

数据报的划分


对划分的数据报进行再划分

 练习

正确的做法如下:

 生存时间、协议、首部检验和

 


生存时间(Time To Live,TTL)
        长度为8个比特,最大取值为二进制的111111,即十进制的255。该字段的取值最初以秒为单位。

        因此,IPv4数据报的最大生存时间最初为255秒。路由器转发IPv4数据报时,将其首部中该字段的值减去该数据报在路由器上所耗费的时间,若结果不为0就转发,否则就丢弃。
        生存时间字段后来改为以“跳数”为单位,路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若结果不为0就转发,否则就丢弃。


协议
        长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU。


首部检验和

        长度为16个比特,用于检测IPv4数据报在传输过程中其首部是否出现了差错。
        IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间TTL、标志以及片偏移等)都可能发生变化,因此路由器都要重新计算一下首部检验和。

 

首部检验和的计算方法 

二进制反码求和的运算 

源IP地址与目的IP地址

源IP地址
        长度为32个比特,用来填写发送IPv4数据报的源主机的IPv4地址。


目的IP地址
        长度为32个比特,用来填写接收IPv4数据报的目的主机的IPv4地址。

可变部分(可选字段+填充) 

可选字段 

        长度从1字节到40字节不等,用来支持排错、测量以及安全措施等功能。

        虽然可选字段增加了IPv4数据报的功能,但这同时也使得IPv4数据报的首部长度成为可变的,这就增加了因特网中每一个路由器处理IPv4数据报的开销。实际上,可选字段很少被使用。


填充

        
        用来确保IPv4数据报的首部长度是4字节的整数倍,使用全0进行填充。

 

IP转发分组 

        分组在互联网上传送和转发是基于分组首部中的目的地址的,因此这种转发方式称为基于终点的转发。 

        因此,分组每到达一个路由器,路由器就根据分组中的终点(目的地址)查找转发表,然后就得知下一跳应当到哪一个路由器。

        但是路由器路由器中的转发表却不是按目的IP地址来直接查出下一跳路由器的


        路由器的寻址方法:而是先查找目的网络(网络前缀),在找到了目的网络之后,就把分组在这个网络上直接交付目的主机。

        由于互联网上的网络数远远小于主机数,这样就可以大大压缩转发表的大小,加速分组在路由器中的转发。这就是基于终点的转发过程。

IP转发分组的工作流程 

我们用如下网络来进行举例

直接交付与间接交付 

  • 直接交付:同一个网络中的主机之间可以直接通信。
  • 间接交付:不同网络中的主机之间的通信需要通过路由器来中转。

源主机如何判断自己与目的主机在同一网络 

源主机C如何知道需要经由哪个路由器

        实际上用户为了让本网络中的各主机能与其他网络中的各主机进行通信,就要必须给本网络中的各主机指定本网络中的一个路由器,由该路由器帮忙进行转发。所指定的路由器也被称为默认网关。 

假设主机A要给主机D发送IP数据包


路由器配置IP地址时就生成了路由表条目


路由器收到IP数据报后的表现

  

主机A发送广播

静态路由配置

        静态路由配置是指用户或网络运维人员使用路由器的相关命令给路由器人工配置路由表。
        人工配置方式简单、开销小、但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中采用。
 

        进行静态路由配置需要认真考虑和谨慎操作,否则可能出现以下问题:

  • 路由条目配置错误,甚至导致出现路由环路。
  • 聚合路由条目时可能引入不存在的网络。

 

当R1向蓝色网络群发送IP数据

默认路由 

        我们思考一个问题:如果下述情况需要针对英特网中的每一个网络给R1添加一条相应的路由条目吗?

        回答是否定的。试想一下,如果针对因特网中的每一个网络给R1添加一条静态路由条目,这会给人工配置带来巨大的工作量,并且使R1的路由表变得非常大,降低了转发的速度。

特定主机路由 

        出于某种安全问题的考虑,同时为了使网络运维人员更方便地控制网络和测试网络,特别是在对网络的连接或路由表进行排错时,指明到某一台主机的特定主机路由是十分有用的。

最长前缀匹配 

分组目的地址可能出现与路由器多个项目匹配的情况

 得出最长前缀匹配如下:

使用二叉树线索查找转发表 

        为了进行更加有效的查找,通常是把无分类编址的转发表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。

二叉线索的结构

        IP地址中从左到右的比特值决定了从根节点逐层向下层延伸的路径,而二叉线索中的各个路径就代表转发表中存放的各个地址

 二叉线索的运作

二叉树存储IP
 

        从二叉线索的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位。

        一个IP地址存入二叉线索的规则很简单:先检查IP地址左边的第一位,如为0,则第一层的节点就在根节点的左下方;如为1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。由于唯一前缀一般都小于32位,因此用唯一前缀构造的二叉线索的深度往往不到32层。

在二叉树中查找IP地址

        以上只是给出了二叉线索这种数据结构的用法,而并没有说明“与唯一前缀匹配”和“与网络前缀匹配”的关系。

        显然,要将二叉线索用于转发表中,还必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。当搜索到一个叶节点时,就必须将寻找匹配的目的地址和该叶节点的子网掩码进行按位AND运算,看结果是否与对应的网络前缀相匹配。

若匹配,就按下一跳的接口转发该分组。

否则,就丢弃该分组

        总之,二叉线索只是提供了一种可以快速在转发表中找到匹配的叶节点的机制。但这是否和网络前缀匹配,还要和子网掩码进行一次逻辑AND运算。

        另外,为了提高二叉线索的查找速度,广泛使用了各种压缩技术。例如下图中的最后两个地址,其最前面的4位都是1011。因此,只要一个地址的前4位是1011,就可以跳过前面4位(即压缩了4个层次)而直接从第5位开始比较。这样就可以减少查找的时间。

网际控制报文ICMP

        为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文协议ICMP (Internet Control Message Protocol)

        ICMP是互联网的标准协议。但ICMP不是高层协议,而是IP层的协议。(看起来好像是高层协议,因为ICMP报文装在IP数据报中,作为其中的数据部分)。

        ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

ICMP报文的种类

        ICMP报文有两种,即ICMP差错报告报文ICMP询问报文

  • 差错报告报文:用来向主机或路由器报告差错情况。
  • 询问报文:用来向主机或路由器询问情况。
     

1、ICMP报文的前4字节是统一的格式,共有三个字段:类型、代码和检验和。

2、接着的4字节的内容与ICMP的类型有关。最后面是数据字段,其长度取决于ICMP的类型
 

差错报告报文详解 

        (1)终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
                具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种。
 

        (2)时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向
源点发送时间超过报文。

        当路由器收到一个目的IP地址不是自己的IP数据报时,会将其首部中生存时间TTL字段的值减1。

  • 若结果不为0,则路由器将该数据报转发出去;
  • 若结果为0,路由器不但要丢弃该数据报,还要向发送该IP数据报的源点发送时间超过(超时)报文。

        另外,当终点在预先规定的时间内未能收到一个数据报的全部数据报分片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过(超时)报文。

(3)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
 

(4)改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(也就是说,找到了更好的路由)。
 

(5)源点抑制:当路由器或主机由于拥塞而丢弃IP数据报时,就向发送该IP数据报的源点发送源点抑制报文,使源点知道应当把P数据报的发送速率放慢。


         同理主机也有可能出现因拥塞而丢弃IP数据报并发送ICMP差错报告报文的情况,如图所示。

不应发送ICMP差错报告报文的情况
  • 对ICMP差错报告报文不再发送ICMP差错报告报文。
  • 对第一个分片的IP数据报片的所有后续数据报片都不发送ICMP差错报告报文。
  • 对具有多播地址的IP数据报都不发送ICMP差错报告报文。
  • 对具有特殊地址(例如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文。

询问报文详解 

        回送请求和回答: 

        由主机或路由器向一个特定的目的主机或路由器发出,收到此报文的主机或路由器必须给发送该报文的源主机或路由器发送ICMP回送回答报文。

        这种询问报文用来测试目的站是否可达以及了解其有关状态。

        时间戳请求和回答:

        用来请求某个主机或路由器回答当前的日期和时间。
        在ICMP时间戳回答报文中有一个32比特的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
        这种询问报文用来进行时钟同步和测量时间。

ICMP的典型应用——分组网间探测PING
 

        分组网间探测PING用来测试主机或路由器之间的连通性

  • PING是TCP/IP体系结构的应用层直接使用网际层ICMP的一个例子,它并不使用运输层的TCP或UDP。
  • PING应用所使用的ICMP报文类型为回送请求和回答。

ICMP的典型应用——跟踪路由
 

         跟踪路由应用traceroute用于探测IP数据报从源主机到达目的主机要经过哪些路由器。

在不同操作系统中,traceroute应用的命令和实现机制有所不同:

  • 在UNIX版本中,具体命令为“traceroute”,其在运输层使用UDP协议,在网络层使用ICMP报文类型只有差错报告报文。
  • 在Windows版本中,具体命令为“tracert”,其应用层直接使用网际层的ICMP协议,所使用的ICMP报文类型有回送请求和回答报文以及差错报告报文。

 跟踪路由的运行过程

 

 

接着H1在发送一段TTL=2的ICMP回送请求



接着H1在发送一段TTL=3的ICMP回送请求

IPV6

        互联网经过几十年的飞速发展,在2011年2月3日,IANA 开始停止向地区互联网注册机构RIR分配IPv4地址,因为 IPv4地址已经全部耗尽了。

        不久,各地区互联网地址分配机构也相继宣布地址耗尽。我国在2014年至2015年也逐步停止了向新用户和应用分配IPv4地址,同时全面开始商用部署IPv6。 

        解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即 IPv6。经过多年的研究和试验,2017年7月终于发布了IPv6的正式标准。

IPV6的优势

IPV6的基本首部

        IPv6数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。

        有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。但请注意,所有的扩展首部并不属于IPv6 数据报的基本首部。

 与IPV4相比,IPV6首部某些字段发生更改

  • 取消了首部长度字段,因为它的首部长度是固定的(40字节)
  • 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。
  • 取消了总长度字段,改用有效载荷长度字段。
  • 取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中。
  • 把 TTL字段改称为跳数限制字段,但作用是一样的(名称与作用更加一致)。
  • 取消了协议字段,改用下一个首部字段。
  • 取消了检验和字段,这样就加快了路由器处理数据报的速度。
  • 取消了选项字段,而用扩展首部来实现选项功能。

 IPv6基本首部中各字段的作用

版本字段:长度为4比特,用来表示IP协议的版本。对于IPv6该字段的值是6。
 

通信量类字段:长度为8比特,该字段用来区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。

流标号字段:长度为20比特。IPv6提出了流的抽象概念

        “流”就是因特网上从特定源点到特定终点(单播或多播)的一系列IPv6数据报(如实时音视频数据的传送),而在这个“流”所经过的路径上的所有路由器都保证指明的服务质量。所有属于同一个流的IlPv6数据报都具有同样的流标号。换句话说,流标号用于资源分配。

  • 流标号对实时音频/视频数据的传送特别有用。
  • 对于传统的电子邮件或非实时数据,流标号则没有用处,把它置为0即可。
     

有效载荷长度字段:长度为16比特,它指明IPv6数据报基本首部后面的有效载荷(包括扩展首部和数据部分)的字节数量。

        该字段以字节为单位,最大取值为65535,因此IPv6数据报基本首部后面的有效载荷的最大长度为65535字节。

下一个首部字段:长度为8比特。该字段相当于IPv4数据报首部中的协议字段或可选字段。
        
当IPv6数据报没有扩展首部时,该字段的作用与IPv4的协议字段一样,它的值指出了IPv6数据报基本首部后面的数据是何种协议数据单元PDU。

          

        当IPv6数据报基本首部后面带有扩展首部时,该字段的值就标识后面第一个扩展首部的类型。

 

跳数限制字段:长度为8比特。该字段用来防止IPv6数据报在因特网中永久兜圈。

  • 源点在每个IPv6数据报发出时即设定某个跳数限制(最大255跳)。每个路由器在转发IPv6数据报时,要先把跳数限制字段中的值减1。
  • 当跳数限制的值为0时,就把这个IPv6数据报丢弃((即不转发)。

        该字段的作用与IPv4数据报首部中的生存时间TTL字段完全一样。IPv6将名称改为跳数限制后,可使名称与作用更加一致。


源地址字段和目的地址字段:长度都为128比特。分别用来填写IPv6数据报的发送端的IPv6地址和接收端的IPv6地址。

IPv6数据报的扩展首部

        IPv4数据报如果在其首部中使用了选项字段,则在数据报的整个传送路径中的全部路由器,都要对选项字段进行检查,这就降低了路由器处理数据报的速度。

        实际上,在路径中的路由器对很多选项是不需要检查的。因此,为了提高路由器对数据报的处理效率,IPv6把原来IPv4首部中的选项字段都放在了扩展首部中,由路径两端的源点和终点的主机来处理,而数据报传送路径中的所有路由器都不处理这些扩展首部(除逐跳选项扩展首部)。

IPV6的地址
 

         在IPv6中,每个地址占128个比特。lPv6地址空间大小为2^{128}(大于3.4×1038 )

  • 如果整个地球表面(包括陆地和水面)都覆盖着需要IPv6地址的通信设备,那么IPv6允许每平方米拥有7×1023个IPv6地址。
  • 如果IPv6地址分配速率是每微秒分配100万个IPv6地址,则需要1019年的时间才能将所有可能的地址分配完毕。

        很显然,这样巨大的地址空间在采用合理编址方法的情况下,在可预见的未来是不会用完的。

 IPV6的表示方法



 二进制转化为十六进制的方法如下:

IPV6写作方式说明 



在一个IPv6地址中只能使用一次“连续零”压缩,否则会导致歧义


冒号十六进制记法还可结合点分十进制的后缀

IPV6地址的分类 

        

未指明地址:

  • 128个比特为“全0”的地址,可缩写为两个冒号“:”。
  • 该地址不能用作目的地址,只能用于还没有配置到一个标准IPv6地址的主机用作源地址。
  • 未指明地址仅有一个。


环回地址:

  • IPv6的环回地址是0:0:0:0:0:0:0:1,可缩写为::1。
  • 它的作用和IPv4的环回地址一样。
  • 这类地址也是仅此一个。

 
多播地址:

  • 最高8比特为“全1”的地址,可记为FF00:/8。
  • IPv6多播地址的功能与IPv4多播地址相同。
  • 这类地址占IPv6地址空间的1/256。
     

本地链路单播地址:

  • 最高10比特为1111111010的地址,可记为FE80::/10。
  • 即使用户网络没有连接到因特网,但仍然可以使用TCP/IP协议。连接在这种网络上的主机都可以使用本地链路单播地址进行通信,但不能和因特网上的其他主机通信。
  • 这类地址占IPv6地址空间的1/1024。
     

全球单播地址:

  • 全球单播地址是使用得最多的一类地址。
  • IPv6全球单播地址采用三级结构,这是为了使路由器可以更快地查找路由。

从IPv4向IPv6过渡
 

  • 因特网上使用IPv4的路由器的数量太大,要让所有路由器都改用IPv6并不能一蹴而就。因此,从IPv4转变到IPv6只能采用逐步演进的办法。
  • 另外,新部署的IPv6系统必须能够向后兼容,也就是IPv6系统必须能够接收和转发IPv4数据报,并且能够为IPv4数据报选择路由。

下面介绍两种由IPv4向IlPv6过渡的策略:

  • 使用双协议栈
  • 使用隧道技术

双协议栈 

  • 双协议栈(Dual Stack)是指在完全过渡到IPv6之前,使一部分主机或路由器装有IPv4和IPv6两套协议栈。
  • 双协议栈主机或路由器既可以和IPv6系统通信,又可以和IPv4系统通信。
  • 双协议栈主机或路由器记为IPv6/IPv4,表明它具有一个IPv6地址和一个IPv4地址。
    • 双协议栈主机在与IPv6主机通信时采用IPv6地址,而与IPv4主机通信时采用IPv4地址。
    • 双协议栈主机通过域名系统DNS查询目的主机采用的IP地址:
      • 若DNS返回的是IPv4地址,则双协议栈的源主机就使用IPv4地址;
      • 若DNS返回的是IPv6地址,则双协议栈的源主机就使用IPv6地址。

 双协议栈的工作流程

隧道技术 

        隧道技术的核心思想: 

  1. 当IPv6数据报要进入IPv4网络时,将IPv6数据报重新封装成IPv4数据报,即整个IPv6数据报成为IPv4数据报的数据载荷。
  2. 封装有IPv6数据报的IPv4数据报在IPv4网络中传输。
  3. 当IPv4数据报要离开IPv4网络时,再将其数据载荷(即原来的IPv6数据报)取出并转发到IPv6网络。

隧道技术的工作流程: 

        本例使用隧道技术,就好像在路由器R1和R4之间为ipv6数据报的传送打通了一条专用的隧道。R1是隧道的入口。R4是隧道的出口。

 网际控制报文协议ICMPv6

        由于IPv6与IPv4一样,都不确保数据报的可靠交付,因此IPv6也需要使用网际控制报文协议ICMP来向发送Pv6数据报的源主机反馈一些差错信息,相应的ICMP版本为ICMPv6。 

  • ICMPv6比ICMPv4要复杂得多,它合并了原来的地址解析协议ARP和网际组管理协议IGMP的功能。因此与IPv6配套使用的网际层协议就只有ICMPv6这一个协议。

ICMPv6的封装


有扩展首部的情况

ICMPv6报文的分类

        ICMPv6报文可被用来报告差错、获取信息、探测邻站或管理多播通信。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/803020.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端开发体系+html文件详解

目录 html骨架 body主体内基本元素 基本元素 超文本(超链接跳转) 锚点 图片标签 列表标签 表格标签 框架标签(窗口标签) 音频标签 视频标签 VScode编译器 输入框 字体样式 实例展示: 首先简要介绍前端的整…

SpringCloud网关的实现原理与使用指南

Spring Cloud网关是一个基于Spring Cloud的微服务网关,它是一个独立的项目,可以对外提供API接口服务,负责请求的转发和路由。本文将介绍Spring Cloud网关的实现原理和使用指南。 一、Spring Cloud网关的实现原理 Spring Cloud网关基于Spring…

关于外贸投标项目的一些事情

有人收到以下形式的询价:询盘由英国中间商发来,而终端客户又是另外一个英国人,是援助非洲的投标项目。A供应商给客户提供了报价和样品,非常幸运的是,客户通知A供应商已经中标,总价高达五千万,交…

C++:哈希表特性及开散列哈希表的模拟实现

目录 一、unordered_map 1.1 特性 1.2 接口 1.21 构造函数 1.22 iterator find(const K& key) 1.23 insert 1.24 operator[] 1.25 erase 1.26 find 1.3 哈希概念 1.31闭散列哈希表 1.32开散列哈希表 二、部分功能模拟实现 hashtable.h unordered_map.h un…

通用链接系统:亚太地区主权数据链接

通用链接系统 - (ULS) ULS 是一款多功能、模块化且可扩展的多数据链路处理器 (DLP),可配置为包含所有 NATO、美国标准数据链路以及客户定制链路。除了是极为可靠且久经考验的多数据链路网关引擎外,ULS 还通过生成和传播通用作战图 (COP) 来增强态势感知…

排序算法(3)之冒泡排序

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 排序算法(3)之冒泡排序 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 …

超详细Python安装教程(包含python解释器和pycharm)

目录 一,安装python解释器 二,安装PyCharm开发工具 一,安装python解释器 下载地址:https://www.python.org/downloads/ 如果是在windows上下载的话,选择Downloads->Windows 我选择了最新版本的64位安装&#xf…

RSTP和STP

RSTP(Rapid Spanning Tree Protocol,快速生成树协议)是STP(Spanning Tree Protocol,生成树协议)的一个改进版本,主要区别在于RSTP通过引入新的机制来加快网络的收敛速度。具体来说: …

数据分析案例-2024 年热门动漫数据集可视化分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

黑马点评-Postman卡住sending Requst原因解决

不知道为什么,用这个c1e1d5的token就会一直卡死,但是换了一个token就解决了,目前不知道为什么 解决了,原来是这个请求下面的函数发生了死循环!!太瓜皮了我超! 把num写成了count,导…

7月18日Workshop新加坡专场:在Sui上创建您自己的token

您是base在新加坡🇸🇬的开发者吗? 您是否觉得编程课程枯燥乏味?🤔 那么,Sui和Metaschool将一起来为您的学习增添乐趣! 欢迎加入我们特别为Web3初学者、开发者设组织的“在Sui上创建您自己的t…

linux下Jenkins的安装部署

前言: 用docker安装Jenkins非常方便快捷,但是最近国内的docker镜像源都不好用了,这里回顾一下最原始的Jenkins安装方式 安装前准备 安装环境 Jenkins的运行依赖java环境,linux下jdk的安装参考:linux下JDK的安装-CSD…

2024“狮舞齐鲁”南北狮王争霸赛在临沭开锣

锣鼓声声,狮王争霸。5月2日,临沭县红色朱村旅游区内人头攒动,热闹非凡。备受瞩目的“狮舞齐鲁”南北狮王争霸赛在此开赛,吸引了来自山东省的40支队伍、400余名参赛选手齐聚一堂,共同献上一场精彩绝伦的舞狮盛宴。 此次…

检测机构的配方分析是怎样?

检测机构配方分析是指检测机构通过对样品的化学成分、结构和性质进行分析,以确定其组成和配方的一种服务。检测机构通常提供以下服务: 1. 样品采集与前处理:检测机构通常会指导客户采集具有代表性的样品,并进行必要的前处理&#…

Blender练习,凳面以及凳脚的制作

目录 ​ 1.凳面的制作 2.制作坐垫下面的两条杠 3.制作桌腿 要制作的凳子如图,可以看到,它是一个由长方体,圆柱体等多种几何图形合成的一个立体图形 1.凳面的制作 shifta创建一个正方体 ctrltab打开一个弹窗,选择编辑模式。…

Linux离线安装Mysql5.7

Linux之Mysql安装配置 第一种:Linux离线安装Mysql(提前手动下载好tar.gz包) 第二种:通过yum安装配置Mysql(服务器有网络) 之前在阿里云上采用yum安装过一次(请看这里),…

区块链资料

Quantstamp - Public Security Assessments smart-contract-sanctuary-bsc/contracts/mainnet at master tintinweb/smart-contract-sanctuary-bsc GitHub https://github.com/slowmist/Cryptocurrency-Security-Audit-Guide/blob/main/README_CN.md sFuzz: 高效自适应的智…

SpringBoot结合ip2region实现博客评论显示IP属地

你好呀,我是小邹。 在现代的Web应用中,特别是博客和论坛类网站,为用户提供地理定位服务(如显示用户所在地理位置)可以极大地增强用户体验。本文将详细探讨如何使用Java和相关技术栈来实现在博客评论中显示用户的地址信…

大雾弥散动态特效404单页源码

源码介绍 大雾弥散动态特效404单页源码,跟随鼠标反向移动,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head><meta charset="utf-8&quo…

react自定义校验报错问题修复 ProFormText

1、以下是tsx组件 自定义校验告警导致表单无法提交问题修复 修改如下&#xff1a;