基于 TCP 或 TCP6 的 IPv6

cod*_*ous 1 ip tcp ipv6 ipv4

我的理解是

tcp6 用于通过 IPv6 的连接,tcp 用于通过 IPv4 的连接。

::ffff:127.0.0.1 表示映射到 IPv4 地址的 IPv6 地址。

但是当我使用 netstat 在像这样的端口上查找打开的连接时 netstat -anp | grep 31210

我得到输出

tcp 0 0 ::ffff:127.0.0.1:64876 ::ffff:127.0.0.1:31210 ESTABLISHED 23755/java

这意味着,IPv6 通信是使用 tcp 完成的。

这怎么可能?

dr_*_*dr_ 5

TCP4 或 TCP6 协议不存在。它们可以用作分别表示 TCP 与 IPv4 和 TCP 与 IPv6 的速记,但这是对语言的滥用 - 使用的协议始终是 TCP。

由于 ISO/OSI 模型中的层分离,无论是伴随 IPv4 还是 IPv6 数据包(级别 3),TCP 段(级别 4)始终相同。

TCP 段中唯一改变的是校验和字段,根据IPv4 的RFC 793和IPv6 的RFC 2460计算,因为 IP 地址的大小在两个版本的协议之间不同​​。(我不确定Options字段的用法是否也不同。)但是,它仍然是相同的 ol' TCP。

是的,::ffff:127.0.0.1表示映射到 IPv6 地址的 IPv4 地址(在本例中为环回)。

  • 除了地址表示之外,关于 `::ffff:127.0.0.1` 的所有内容都是 IPv4。数据包结构是 IPv4,包括校验和字段。 (2认同)