웹 사이트를 핑하려고하는데 http://www.example.com/
알 수없는 IP 주소로 확인되어 시간이 초과되었습니다.
PING http://www.example.com/ (198.105.254.228): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
하지만 핑 example.com
하면 작동합니다.
내가 여기서 놓친 것은 무엇입니까?
답변
내 웹 사이트 http://www.example.com/ 을 핑하려고하는데 알 수없는 IP 주소로 확인되어 시간이 초과되었습니다.
PING http://www.example.com/ (198.105.254.228): 56 data bytes
Request timeout for icmp_seq 0
ping에 대한 인수는 호스트 이름 (또는 IP 주소)입니다.
따라서 다음은 모두 작동합니다.
ping example.com
ping www.example.com
ping 127.0.0.1
반면에
ping http://www.example.com/
http://www.example.com/ 은 유효한 호스트 이름 이 아닌 HTTP URL (Uniform Resource Locator) 이므로 작동 하지 않습니다 (일부는 호스트 이름 임).
HTTP URL은 4 가지 부분으로 구성됩니다.
- 구성표 — 항상 존재
- 호스트 이름 — 항상 존재
- 경로 또는 줄기 — 항상 존재하지만 때로는 null
- 매개 변수 — 선택 사항
Ping은 일반적으로 URL을 유효한 대상 호스트 이름으로 인식하지 않습니다.
참고 사항 :
-
모든 URL이 위에서 언급 한 형식을 갖는 것은 아닙니다.
-
완전한 URL은 이름 지정 체계 지정자와 그 뒤에 형식이 이름 지정 체계의 함수 인 문자열로 구성됩니다.
-
URL 형식은 IETF 사양 URL (Uniform Resource Locator )에 정의되어 있습니다.
DNS 도용
호스트 이름을 IP 주소로 확인하는 DNS 서버가 유효하지 않은 호스트 이름을 제공하더라도 유효한 IP 주소를 반환하도록 구성된 경우 위의 예외가 발생할 수 있습니다.
ISP가 DNS 쿼리를 가로채는 경우에 발생할 수 있습니다.
대답에서 내가 입력하는 임의의 호스트 이름에 대해 ping이 IP 198.105.254.228로 해석되는 이유는 무엇입니까? 에 의해 마이클 햄프 턴 :
그들은 존재하지 않는 도메인에 대한 요청을 검색 결과와 광고를 제공 하는 화이트 라벨 서비스 로 리디렉션하여 “유용한”노력을 기울이고 있습니다.
다행히도 그들은 당신이 그것을 해제 할 수 있는 환경 설정 페이지 가 있습니다.
답변
IP 주소가 아닌 문자열을 사용하여 ping 명령을 실행하면 먼저 핑하려는 호스트의 IP 주소를 확인해야합니다.
실행할 때 :
$ ping example.com
DNS 서버는 웹 사이트를 호스팅하는 서버의 IP 주소를 반환합니다.
그러나 프로토콜과 경로를 접두사로 사용하면 해결 될 DNS 서버로 모두 전송되는 표준 http URL을 만들 수 있습니다.
따라서 DNS 서버가 레코드를 찾는 대신 유효한 호스트 이름이 아닌 example.com
레코드 http://example.com/
를 찾습니다 .
많은 DNS 서버가 아무 것도 반환하지 않습니다. 이 경우 ping 명령은 DNS 확인 오류와 함께 오류가 발생합니다.
그러나 DNS 서버는 IP 주소를 반환합니다 123.456.789.000
. 이 주소는 브라우저에서 URL을 잘못 입력 한 사용자를 돕기 위해 Time Warner Cable의 제안 서비스 인 것으로 보입니다.
그러나 ping 명령은 이것을 문자 그대로 받아들이고 호스트 이름 http://example.com/
(유효한 호스트 이름이 아님)이 주소로 해석 된다고 생각 합니다 123.456.789.000
.
그 후 ping 명령이 시간 초과되는 이유는 123.456.789.000
ICMP 요청에 응답하지 않기 때문 입니다.
답변
http : //는 웹 페이지에 액세스하는 데 사용되는 프로토콜 인 하이퍼 텍스트 전송 프로토콜을 나타냅니다. 핑 서버는 HTTP를 사용하지 않고 대신 ICMP (Internet Control Message Protocol) 메시지로 구성되므로 http : //는이 컨텍스트에서 의미가 없습니다.
답변
어쨌든 ‘ping’을 사용하는 이유는 무엇입니까? ‘ping’트래픽을 차단하는 방식으로 방화벽이 있으면 작동하지 않습니다.
내 의견으로는 웹 서버를 테스트하려는 경우 ‘telnet’을 사용하는 것이 더 좋다면 호스트와 수신 대기하는 포트를 테스트 할 수 있습니다.
예 :
빈 화면에서 웹 서버 telnet www.mywebserver.com 80 을 테스트하려면
‘get’을 입력 한 다음 ‘enter’를 입력하면 웹 서버에서 http 응답을 다시 받아야합니다. ( 예 : HTTP / 1.1 400 잘못된 요청 … )
이것은 서버가 ‘업’일뿐만 아니라 포트 80에서 수신 및 응답하고 있음을 알려줍니다 (방화벽이 포트 80을 내 웹 서버로 통과시킬 것으로 기대합니다)
마찬가지로 ‘telnet’은 메일 서버, ftp 및 기타 다른 것들을 테스트하는 데에도 사용됩니다.