호스트 이름을 숫자로 설정하고 실행하면 hostname
다음이 표시됩니다.
6592
하지만 실행하면 다음과 같은 ping 6592
결과를 얻습니다.
connect: Invalid argument
관련 확인했어요위키피디아 페이지, 그러한 호스트 이름이 허용된다고 나와 있습니다(IIUC). 내가 무엇을 놓치고 있나요?
답변1
RFC가 말하는 내용은 실제로 여기서 중요하지 않습니다. RFC는 DNS 수준에서 발생하는 일을 지정하지만 처음에 핑이 DNS 쿼리를 수행하지 않으면 의미가 없습니다. ping이 모두 숫자로 구성된 매개변수를 수신하면 이를 IP 주소로 해석합니다.
IPv4 주소기술적으로는 32비트 숫자입니다. 그들은 거의 항상 다음과 같이 쓰여집니다.점으로 구분된 십진수 표기법, 예를 들어 소위 "점 사변형"입니다 127.0.0.1
. 그러나 2130706433
10진수나 16진수로 한 자리 숫자 로 쓸 수도 있습니다 0x7f000001
.
$ ping 2130706433 # 127*2^24 + 1
PING 2130706433 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.027 ms
$ ping 0.0.25.192
connect: Invalid argument
0.0.0.0/8 범위의 주소는 다음과 같습니다.예약된방송에서 소스 주소로 사용됩니다. 그들에게 패킷을 보낼 수 없기 때문에 가 connect(2)
반환됩니다 EINVAL
.
대부분의 핑 구현을 포함한 많은 프로그램에는 DNS 조회를 강제하는 옵션이 없습니다. 모두 숫자로 구성된 하위 도메인으로 로컬 네트워크를 만들고 점선 사변형처럼 보이는 유효한 호스트 이름으로 끝나는 경우 유사한 문제에 직면하게 됩니다.
로컬 네트워크에 이름이 있으면 ping 6592.mynetwork
사용할 수 있습니다. 그러나 조만간 도메인 이름을 생략하고 싶을 것이기 때문에 비슷한 문제에 직면할 수도 있습니다. 그냥 흐름에 따라 시작 부분에 편지를 쓰세요.