호스트 이름 확인에서 "ping"과 "wget"의 차이점

호스트 이름 확인에서 "ping"과 "wget"의 차이점

사용해보니 wget호스트네임 해석에 문제가 없네요

root:here cd$ wget https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123&app_id=x2&app_code=x1

밝혀지다

Resolving gfe.cit.api.here.com... 52.51.134.116, 54.154.19.134, 52.208.9.155
Connecting to gfe.cit.api.here.com|52.51.134.116|:443... connected.
HTTP request sent, awaiting response... 400 Bad Request
2016-12-24 13:18:47 ERROR 400: Bad Request.

하지만 내가 사용할 때ping

ping https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123&app_id=x2&app_code=x1

밝혀지다

cannot resolve https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123: Unknown host

wget호스트 이름 확인에 실패했습니다. 과 의 차이점은 무엇입니까 ping?

답변1

답변:

호스트 이름 확인 측면에서 "ping"과 "wget"의 차이점은 무엇입니까?

Ping매개변수로 IP 주소 또는 호스트 이름이 필요합니다. 전체 URL을 제공하고 이를 호스트 이름으로 확인하려고 시도하지만 실패합니다. 정규화된 이름 제거를 제외한 모든 작업을 통해 ping명령은 연결을 확인할 수 있었습니다(요청이 ICMP차단되었거나 서버가 다운되었기 때문에 다음 테스트에서는 실패했습니다).

$ ping gfe.cit.api.here.com

Pinging cle2-cit.eu-west-1.elasticbeanstalk.com [54.154.19.134] with 32 bytes of data:
Request timed out.

ping.wget

오류 400을 설명하는 가능한 이유는 roaima의 항목을 참조하세요.

답변2

실제로 요청한 질문에 대답합니다. wgetURL은 필수이지만 ping호스트 이름은 필수입니다. URL은 프로토콜( https), 호스트 이름( gfe.cit.api.here.com), 경로( /1/layer_put.json) 및 세 가지 인코딩 매개변수( ) 로 구성됩니다 layer_id=123&app_id=x2&app_code=x1. 인증 및 포트와 같은 다른 항목도 URL에 나타날 수 있습니다.

이 명령은 호스트 이름 부분만 허용합니다 ping.

그런 다음 명령은 wget프로토콜에 필요한 포트( 443/tcp의 경우 https)에 대한 TCP/IP 연결을 열고 HTTP 프로토콜을 사용하여 지정된 URL에서 콘텐츠를 검색합니다.

ping명령은 ICMP를 사용하여 전송됩니다.평평한지정된 호스트에 요청하고 반환합니다.에코 답장회신하다. 이는 각각 ICMP 패킷 유형 8과 0입니다.


이제 실패의 근본 원인은 wget매개변수를 인용하지 않았기 wget때문에 쉘이 이를 구문 분석한다는 것입니다. &URL 중간에 있는 문자는 쉘이 백그라운드에서 해당 지점까지의 모든 것을 실행하도록 지시합니다. 그런 다음 라인의 나머지 두 부분을 즉시 실행하고 즉시 오류가 발생합니다.

URL 주위에 작은따옴표를 사용하면 예상대로 작동할 수 있습니다.

그래서 우리는

wget -O layer_put.json 'https://gfe.cit.api.here.com/1/layer_put.json?layer_id=123&app_id=x2&app_code=x1'

ping -c3 gfe.cit.api.here.com

답변3

Wget은 주로 HTTP, HTTPS 및 FTP를 통한 다운로드에 사용되므로 기본적으로 연결에 TCP를 사용합니다. Ping은 다음과 같은 방법을 사용합니다.ICMP, 기본적으로 호스트에게 "안녕하세요"라고 말하고 응답하는지 확인합니다. ICMP는 포트를 사용하지 않습니다. 이것이 바로 http://를 의미합니다. HTTPS 포트 443에 대해 포트 80에서 "연결을 열도록" 컴퓨터에 지시합니다. ICMP는 포트를 사용하지 않으므로 ping에는 IP 주소만 필요하지만 wget은 TCP 연결을 설정하고 파일을 다운로드합니다.

관련 정보