Ubuntu 22.04
我正在 Linux 中试验IPv6
协议栈,并试图找出哪些协议被支持作为 L3 层协议IPv6
。根据IANA
我运行了以下简单代码来检查定义的每个协议号的回复:
for i in range(1, 148):
send(IPv6(src="::1", dst="::1", nh = i))
sleep(1)
我发现sudo tcpdump ip6 -n -vvv -i lo
大多数协议都不受支持,例如:
00:31:12.081361 IP6 (hlim 64, next-header unknown (37) payload length: 0)
::1 > ::1: ip-proto-37 0
00:31:12.081371 IP6 (flowlabel 0x11111, hlim 64, next-header ICMPv6 (58) payload length: 48)
::1 > ::1: [icmp6 sum ok] ICMP6, parameter problem, next header - octet 6
这意味着 LinuxIPv6
协议栈实现不理解协议号(在本例中是37
)。
除扩展头号码外,唯一支持的数字是:
TCP, next header = 6
UDP, next header = 17
ICMPv6, next header = 58
PIM, next header = 103
UDPLite, next header = 136
请注意,即使IPv6, next header = 41
没有被识别。这是否意味着Linux的IPv6
实现在某种意义上不符合要求RFC 8200
?