web-dev-qa-db-ja.com

IPv6 over TCPまたはTCP6

私の理解はそれです

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を使用して行われます。

これはどのように可能ですか?

1
Batty

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アドレス(この場合はループバック)を表します。

4
dr_