컴퓨터가있는 :
Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
모든 인터페이스에서 포트 80에서 Apache를 실행 netstat -planA inet
하지만에 표시되지 않지만 예기치 않게 다음에서 찾을 수 있습니다 netstat -planA inet6
.
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::5672 :::* LISTEN 2402/beam.smp
tcp6 0 0 :::111 :::* LISTEN 1825/rpcbind
tcp6 0 0 :::9200 :::* LISTEN 2235/java
tcp6 0 0 :::80 :::* LISTEN 2533/apache2
tcp6 0 0 :::34611 :::* LISTEN 1856/rpc.statd
tcp6 0 0 :::9300 :::* LISTEN 2235/java
...
tcp6 0 0 10.0.176.93:80 10.0.76.98:53704 TIME_WAIT -
tcp6 0 0 10.0.176.93:80 10.0.76.98:53700 TIME_WAIT -
위에서 볼 수 있듯이 TCP4로 잘 도달 할 수 있습니다. 그러나 이러한 연결조차도 아래에 나열되어 tcp6
있습니다. 왜?
답변
기본적으로 주소를 Apache Listen
매개 변수로 지정하지 않으면 주소를 사용하여 ipv6 주소를 처리 IPv4-mapped IPv6
합니다. Apache ipv6을 살펴볼 수 있습니다
출력이 netstat
아파치가 IPv4 주소에서 수신 대기하고 있지 않다는 것을 의미하지는 않습니다. 그것은 A의 IPv4-mapped IPv6
주소를 입력합니다.
답변
그 이유는 모든 IPv4 주소가 IPv6 주소이기 때문입니다. IPv4 주소의 일대일 매핑에 사용되도록 작은 범위의 IPv6 주소가 별도로 설정되었습니다. 예를 들어, IPv4 주소 192.0.2.128
는 IPv6 주소를 통해 액세스 할 수 있습니다 ::ffff:192.0.2.128
. 이는 IPv6 만 지원하는 모든 응용 프로그램이 여전히 IPv4 주소에서 청취 할 수 있도록하기위한 것입니다. IPv4는 IPv6 주소를 처리하는 방법을 알 수 없으므로 IPv6 주소 (매핑되지 않은)가 IPv4 주소와 통신하는 데 사용할 수 없습니다 그래도).
모든 IPv4 주소는 IPv6으로 표시되므로 IPv6을 netstat
사용하여 앱을 나열 할 때 IPv4도 얻게됩니다.
그것은 나타낼 수 10.0.176.93
로 ::ffff:10.0.176.93
, 심지어 ::ffff:a00:b05d
하지만, 응용 프로그램 개발자는 일반 점 표기법 IPv4 주소로 표시하기로 결정했습니다.