私の理解はそれです
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を使用して行われます。
これはどのように可能ですか?
TCP4またはTCP6プロコトールは存在しません。これらは、IPv4ではTCP、IPv6ではTCP)を示すための省略形として使用できますが、これは言語の乱用です。使用されるプロトコルは常にTCPです。 。
ISO/OSIモデルではレイヤーが分離されているため、TCPセグメント(レベル4)は、IPv4パケットまたはIPv6パケット(レベル3)のどちらを伴う場合でも、常に同じです。
TCPセグメントで変更されるのは、Checksumフィールドだけで、 RFC 793)に従って計算されます。 IPv4の場合および RFC 246 IPv6の場合。IPアドレスのサイズがプロトコルの2つのバージョン間で異なるためです(かどうかはわかりませんOptionsフィールドの使用方法も異なります。)ただし、それでも同じ古いTCPです。
はい、 ::ffff:127.0.0.1
は、IPv6アドレスにマップされたIPv4アドレス(この場合はループバック)を表します。