예, 아니요 호스트 이름이라고하는 두 가지 별개의 것입니다.
"내부"호스트 이름 은 기본적으로 커널에 의해 유지되는 문자열입니다. 이것은 hostname
명령 (또는 gethostname()
호출)에 의해 반환되는 것이며 시스템 (*) 내에서 고유 합니다.
프로그램이 실행중인 시스템의 식별자를 출력하려고 할 때 주로 사용됩니다. 예 \h
를 들어 Bash에서 PS1
호스트 이름으로 확장됩니다. 마찬가지로 syslog 스타일 로그 파일에는 로그 항목의 호스트 이름도 포함됩니다.
(* Stephen Kitt가 언급 한 것처럼 네임 스페이스 를 사용하면 동일한 시스템의 프로세스에 다른 호스트 이름을 표시 할 수 있습니다. 주로 네임 스페이스 가 고유 한 시스템처럼 작동하는 컨테이너에 사용됩니다.)
그런 다음 다른 시스템에서 다른 시스템의 IP 주소를 조회하는 데 사용하는 DNS 이름도 있습니다 . 동일한 IP 주소 및 동일한 호스트를 가리키는 둘 이상의 DNS 이름이있을 수 있습니다.
내부 호스트 이름과 DNS 이름이 같을 필요는 없습니다. 누군가가 IP 주소로 orange
(*) 호출하기로 결정한 웹 서버를 가지고 있다고 가정하십시오 192.0.2.9
. 그것은 두 개의 서로 다른 도메인을 제공 할 수와 DNS는이하도록 설정 될 수 www.example.org
와 www.example.com
에게 모두 포인트 192.0.2.9
시스템의 내부 호스트 이름이 될 수있는 반면, orange.example.org
아니면 그냥 orange
. 이 경우, DNS 설정은 일반적으로도 할 것이다 역방향 조회 에 192.0.2.9
이름에 점 등을 orange.example.org
하지만, 그 힘 아무것도 없다.
(* 그들은 과일 이름을 따서 서버 이름을 짓고 싶기 때문에 누군가가 사용할 수도 webserver1
있지만 실제 도메인 중 하나의 이름을 따서 지정할 필요는 없습니다.)
또한 가상 호스팅을 사용하려면 브라우저가 웹 서버에 액세스하려는 사이트 이름을 알려 주어야합니다. 그렇지 않으면 서버는 클라이언트가 도달하려고 시도한 가상 사이트를 알 수 없습니다. HTTP에는 Host
헤더 가 있습니다.
DNS 이름과 내부 호스트 이름의 차이점은 mDNS 프로토콜
(예 : avahi 데몬에 의해 구현 됨 )과 다른 검색 프로토콜입니다. mDNS를 사용하면 호스트가 동일한 네트워크의 다른 모든 호스트에 이름 정보를 쿼리하고 DNS에서 명시 적으로 설정하지 않고도 다른 호스트에서 자신의 호스트 이름을 볼 수 있습니다.