在IANA“协议编号”中,列出了两个IP协议版本: IPv4在#4,IPv6在#41。他们的“协议”栏上写着IPv46封装,"reference“列指向2个RFCs。
第一种,RFC 2003指定使用IPv4封装IPv4的方法,第二种,RFC 2473指定引用:“IPv6规范中的通用数据包隧道”,并包含了IPv6中IPv6的一个最小示例以供说明。
这两个RFCs给我造成了很多困惑,因为它们似乎表明IPv4只能封装在IPv4中,IPv6只能封装在IPv6中。
问题。(更新、合并1和2,改写3)
发布于 2019-11-25 07:09:31
协议号位于IPv4分组报头的协议字段中,以及IPv6分组报头的下一个报头字段中。协议号告诉IP ( IPv4或IPv6)它应该将数据包的有效负载传递给哪个进程。如果一个进程没有向适当的IP进程注册,该数据包将被丢弃,并且通常会向源发送一条ICMP错误消息。
IPv4和IPv6是完全独立的、不兼容的协议。IPv4进程不知道如何处理IPv6数据包,反之亦然。每个协议由不同的进程处理,许多主机将有一个,而不是另一个。
对于使用此类型的协议,以太类型具有与协议号类似的功能。它告诉数据链路协议,它应该向哪个进程发送帧有效载荷。如果以太类型是一个没有在数据链路协议中注册的数字,那么该帧就会被简单地删除。例如,接收不运行0x86DD的以太类型IPv6的数据链帧的主机将简单地删除该帧。
对于不同的事情,你有不同的隧道协议。您的示例包括IPv4中的隧道IPv4、IPv6中的IPv6和IPv4中的IPv6。每个协议都是不同的,因为每个协议都需要知道期望的有效负载,以便知道如何处理有效负载。还有一个GRE,它的头中有一个字段,与IPv4协议(或IPv6下一个标头)字段相同,它告诉GRE进程应该向哪个进程发送有效负载。有许多不同的隧道协议,每个协议都是由某个人创建的,以满足人们感知到的需求。选择一个由您的操作系统(两端)支持的,它可以完成您需要它做的事情。Cisco创建GRE是为了成为通用的(因此是GRE中的"G“)隧道协议。
https://networkengineering.stackexchange.com/questions/63702
复制相似问题