터미널에서 바로 출력 :
$ getent hosts example.org
2001:500:88:200::10 example.org
$ getent ahosts example.org
192.0.43.10 STREAM 43-10.any.icann.org
192.0.43.10 DGRAM
192.0.43.10 RAW
IPv4와 IPv6 주소를 모두 인쇄해야한다고 생각했습니다 ( 최소한 호스트에서 ). 이러한 인쇄가 다른 주소 유형 인 이유는 무엇입니까?
$ uname -srvmpio
Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux
답변
모두 getent hosts
와 getent ahosts
잠재적으로 모두 IPv4 및 IPv6 주소를 인쇄,하지만 그들은 (두 개의 서로 다른 명령을 갖는 지점이 있다는) 다르게 인쇄 할 수있는 주소를 결정할 수 있습니다.
hosts
호출 gethostbyname2
(의 IPv6 지원 변형 gethostbyname
). 이 동작은 하드 코딩되어 있습니다 . IPv6 주소를 찾아보고 존재하지 않는 경우 IPv4 주소를 찾으십시오.
ahosts
전화 getaddrinfo
. 이 함수는 주어진 이름에 대한 모든 프로토콜을 열거하므로 동일한 호출에서 IPv4 및 IPv6 주소를 모두 반환 할 수 있습니다. 반환되는 내용은의 설정에 따라 결정됩니다 /etc/gai.conf
. 많은 응용 프로그램이 여전히 IPv6에 대처하기 위해 고군분투하기 때문에 대부분의 배포판은 기본적으로 IPv4를 선호하며 명시 적 요청에 의해서만 IPv6을 사용합니다.
일부 유용한 읽기 ahosts
및 gai.conf
스택 교환 주위 :