PING(8)

명칭
ping - ICMP ECHO_REQUEST 패킷을 네트워크상의 호스트에 보낸다

서식
ping [-AQRadfnoqrv] [-c count] [-i wait] [-l preload] [-m ttl] [-P policy] [-p pattern] [-s packetsize] [-S src_addr] [-t timeout] [ host | [-L] [-I interface] [-T ttl] mcast-group]

해설
ping 유틸리티는, ICMP 의 ECHO_REQUEST 데이터 그램을 이용해, 지정한 호스트나 게이트웨이 (으)로부터의 ICMP ECHO_RESPONSE (을)를 꺼냅니다. ECHO_REQUEST 데이터 그램 (“ping”) 에는 IP 및 ICMP 헤더, “struct timeval” , 패킷의 나머지를 묻는 적당한 수의 “pad” 바이트가 순서에 있습니다. 옵션은 이하와 같습니다:

-A  청각 모드. 다음의 패킷을 송신하기 전에 패킷을 받지 않으면 벨 (ASCII 0x07) 캐릭터를 출력합니다. 송신 간격보다 왕복 시간이 긴 경우를 위해서(때문에), 미수신 패킷수의 최대치를 증가시켰을 경우만, 그것을 넘어 상실한 패킷이 벨을 울립니다.

-a  청각 모드. 패킷을 받았을 때에, 출력에 벨 (ASCII 0x07) 캐릭터를 포함합니다. 이 옵션은, 별형식의 옵션이 있는 경우는 무시됩니다.

-c count
    ECHO_RESPONSE 패킷을 count 회송출 (그리고 수신) 하고 나서 종료합니다. 본옵션이 지정되지 않는 경우, ping (은)는 끼어들어질 때까지 동작을 계속합니다.

-d  사용하는 socket 에 SO_DEBUG 옵션을 설정합니다.

-f  ECHO_REQUEST ping 를 흘려 보냅니다. 패킷이 돌아가 오자마자, 혹은 100 분의 1 초에 1 회의 언젠가 많은 회수만 패킷을 출력합니다. ECHO_REQUEST 패킷을 보낼 때마다 “.” 하지만 표시되어 ECHO_REPLY 패킷을 수신할 때마다 백 스페이스가 표시됩니다. 이것에 의해 얼마나의 패킷이 결핍 했는지를 재빠르게 표시할 수가 있습니다. 슈퍼 유저만 사용 가능합니다 이 옵션은 네트워크에 매우 부하를 걸치므로, 주의해 사용한다 필요가 있습니다.

-i wait
    wait 그리고 지정한 초수만큼 패킷의 송출 간격을 비웁니다. 디폴트에서는 송출 간격은 1 초입니다. 보다 작은 값을 지정할 수 있습니다만, 1 보다 작은 값을 지정할 수 있는 것은 슈퍼 유저 뿐입니다. 이 옵션은 -f 옵션과는 동시에 지정할 수 없습니다.

-I interface
    주어진 인터페이스 주소에 대해서, 멀티 캐스트 패킷을 보냅니다. 이 플래그는, ping 의 행선지 주소가 멀티 캐스트 주소의 경우인 만큼 적용할 수 있습니다.

-l preload
    지정했다 preload 값만 ECHO_REQUEST 패킷을 가능한 한 빠르게 송신해, 통상의 동작으로 돌아옵니다. 슈퍼 유저만이 이 옵션을 사용할 수 있습니다.

-m ttl
    출력 패킷의 IP Time To Live 를 설정합니다. 지정하지 않으면 커널은 net.inet.ip.ttl MIB 변수의 값을 사용합니다.

-L  멀티 캐스트 패킷의 루프백을 억제합니다. 이 플래그는, 행선지 주소가 멀티 캐스트 주소의 경우만 적용할 수 있습니다.

-n  수치만 출력합니다. 호스트 주소에 대한 이름을 조사하는 일은 하지 않습니다.

-o  응답 패킷을 1 개 받으면(자), 성공 상태로 종료합니다.

-p pattern
    송출하는 패킷을 묻는다 “pad” 바이트를 지정합니다. “pad” 바이트는 16 바이트를 상한으로 합니다. 이것은 네트워크상에서 데이터 의존의 문제를 진단할 경우에 유효합니다. 예를 들어 “-p ff” (은)는 모두 1 의 송출 패킷을 생성합니다.

-P policy
    policy (은)는, ping 세션의 IPsec 포리시를 지정합니다. 상세한 것에 대하여는 ipsec(4) (와)과 ipsec_set_policy(3) (을)를 참조해 주세요.

-Q  얼마인가 조용한 출력으로 합니다. 자기가 행한 문의에 대해서의 응답에 포함된다 ICMP 에러 메세지는 표시되지 않습니다. 원래는, -v 옵션이 그러한 에러를 표시하기 위해서 필요했습니다만, -v 옵션은 모든 ICMP 에러 메세지를 표시합니다. 바쁜 기계상에서는, 이 출력은 더욱 부하가 되겠지요. -Q 옵션을 지정하지 않으면 ping (은)는, 자기의 ECHO_REQUEST 메세지에 기인하는 ICMP 에러 메세지를 표시합니다.

-q  출력을 억제합니다. 개시시와 종료시의 요약행 밖에 표시하지 않습니다.

-R  지정 호스트까지의 도달 경로를 기록합니다. ECHO_REQUEST 패킷중에 RECORD_ROUTE 옵션을 붙여 반송 패킷상의 경로 버퍼를 표시합니다. IP 헤더에는 경로를 9 개 거두는 크기 밖에 없는 것에 주의해 주세요; 특정의 행선지에 대해서 패킷을 거치고 로 지으려면 , 통상 traceroute(8) 명령을 사용하는 편이 좋을 것입니다. 부정하게 속인 패킷에 의하는 등 해 꾸짖어야 할 경로수보다 대구의 경로가 돌아왔을 경우, ping 는 경로 리스트를 표시해, 올바른 위치에까지 줄입니다. 많은 호스트는 RECORD_ROUTE 옵션을 무시할까 버립니다.

-r  통상의 routing table를 무시해, 직접 접속되고 있는 네트워크상의 호스트에 대해서 송신합니다. 지정 접속된 네트워크상에 호스트가 존재하지 않는 경우에는, 에러가 돌려주어집니다. 이 옵션은 경로 정보를 가지지 않는 인터페이스를 경유해 로컬 호스트에 ping 를 거는데 이용됩니다 (예를 들어 인터페이스가 routed(8) 에 의해 드롭 된 후 ).

-s packetsize
    송출하는 데이터의 바이트수를 지정합니다. 디폴트에서는 56 바이트입니다. 이것은 ICMP 헤더 데이터의 8 바이트로 배합해 64 ICMP 바이트가 됩니다. 슈퍼 유저만 이 옵션을 지정할 수 있습니다.

-S src_addr
    계속해 지정하는 IP 주소를, 출력 패킷의 송신원주소로서 사용합니다. 복수의 IP 주소를 가지는 호스트에서는, 이 옵션을 사용하는 것으로써, 프로브 패킷을 송신하는 인터페이스 이외의 송신 주소를 강제 가능합니다. IP 주소가 이 머신의 인터페이스 주소가 아닌 경우, 에러가 돌려주어져 송신은 행해지지 않습니다.

-t timeout
    타임 아웃을, 초단위로 지정합니다. 타임 아웃 하면(자), 수신 패킷수에 관계없이 ping (이)가 종료됩니다.

-T ttl
    멀티 캐스트 패킷의 IP 수명 시간 (Time To Live)을 설정합니다. 이 옵션은, 행선지 주소가 멀티 캐스트 주소의 경우만 적용할 수 있습니다.

-v  장황 출력을 유효하게 합니다. ECHO_RESPONSE 이외의 수신 ICMP 패킷도 표시됩니다.

문제가 분리하고를 위해서(때문에) ping (을)를 이용하려면 로컬 인터페이스가 up 또한 running 인 것을 확인하기 위해(때문에), 우선 로컬 호스트상에서 실행합니다. 그 후에 의해 먼 호스트나 게이트웨이에 “ping” 합니다. 경로 주회 시간 (round trip time)과 소실 패킷의 통계가 계산됩니다. 중복 한 패킷이 수신되었을 경우, 그 패킷은 소실 패킷의 계산에는 포함되지 않습니다만, 경로 주회 시간의 통계의 계산에는 사용됩니다. 지정된 패킷의 수가 송신되고 (수신되고) 라고 해 혹은 프로그램이 SIGINT 그리고 종료했을 경우, 간단한 요약이 표시됩니다. 요약은, 송출한 패킷수, 수신한 패킷수, 그리고 경로 주회 시간의 최소/평균/최대/분산입니다.

ping 하지만 SIGINFO 시그널 ( stty(1) 에 대한다 status 인수를 참조)를 수신했을 경우, 현시점에서 송신 및 수신된 패킷수, 경로 주회 시간의 최소/평균/최대/분산을, 표준 에러 출력에 기입합니다.

이 프로그램은 주로 네트워크의 테스트, 계측, 관리에 이용되고 일을 상정하고 있습니다. ping (은)는 그 자체 네트워크에 부하를 걸므로, 트러블이 없을 때나 자동 스크리 프트로 이용하는 것은 권유받지 않습니다.

ICMP 패킷의 상세
옵션 없음의 IP 헤더는 20 바이트입니다. ICMP ECHO_REQUEST 패킷은 새로운 8 바이트의 ICMP 헤더와 거기에 계속되는 임의의 크기의 데이터로부터 되어 있습니다. 이 크기는 packetsize 에 의해 지정됩니다 (디폴트에서는 56 바이트입니다). 이와 같이 수신한 IP 패킷내의 ICMP ECHO_REPLY 데이터량은 항상 지정된 데이터 (ICMP 헤더) 의 크기보다 8 바이트 커집니다.

데이터 area가 적어도 8 바이트 있을 때, ping (은)는 최초의 8 바이트를 거치고 로주회 시간의 계산에 이용하는 타임 스탬프를 쓰기 위해서(때문에) 이용합니다. 지정된 pad 의 크기가 8 바이트보다 작은 경우 경로 주회 시간은 얻을 수 없습니다.

중복 패킷과 장해 패킷
ping 유틸리티는 중복 패킷과 장해 패킷을 보고합니다. 중복 패킷은 uni-cast 주소에 대해서는 일어나야할 없는 것입니다만, 링크층에서의 부적절한 재발송신에 의해 일으켜지는 것 같습니다. 중복은 여러가지 상황으로 일어날 가능성이 있습니다. 낮은 레벨의 중복의 존재는 반드시 경고가 되지 않을지도 모릅니다만, 좋은 징조가 아닙니다. 브로드캐스트 혹은 멀티 캐스트 주소에 ping 할 때에는, 중복이 일어나는 것이 기대됩니다. 실제로 중복 하는 것이 아니라, 다른 호스트로부터 같은 요구에 대해서 응답을 하고로부터입니다.

장해를 받은 패킷은 분명하게 중대한 경고입니다. 많은 경우, ping 패킷의 경로의 어딘가(네트워크내나 호스트내)의 하드웨어의 고장이 생각됩니다.

다른 데이터 패턴의 시행
(인터) 네트워크층은 데이터 부분에 포함되는 데이터에 의해 패킷의 취급 (을)를 바꾸지 않습니다. 불행하게도 데이터 의존성의 문제가 네트워크에 침입해 오랫동안 검지함 없는 채될 가능성이 알려져 있습니다. 많은 경우, 문제를 일으키는 특수 패턴은 예를 들어 전부 1 이나 전부 0 과 같은 것, 혹은 우단 이외가 0 인 것 같은 충분한 “천이” (을)를 가지지 않는 것입니다. 명령행으로(예를 들어) 전부 0 의 데이터 패턴을 지정하는 것 만으로는 불충분할지도 모릅니다. 왜 들 문제의 패턴은 데이터 링크층에 있어, 명령행으로 지정한 것과 콘트롤러가 송신하는 것과의 사이의 관계는 복잡하기 때문에입니다.

이것은 데이터 의존성이 문제가 될 때, 그것을 찾아내기 위해서(때문에) 많은 테스트를 해 없으면 안 된다고 하는 것을 의미합니다. 운이 좋다면, 어느 네트워크 (을)를 통해 보낼 수 없는, 혹은 같은 길이의 파일보다 훨씬 장시간인가 파일을 찾아낼 수가 있을지도 모릅니다. 이 경우, 그 파일 (을)를 조사하고 반복해 나타나는 패턴을 ping 의 -p 옵션을 사용해 테스트할 수 있습니다.

TTL 의 상세
IP 패킷의 TTL 값은 패킷을 버리지 못하고 통과할 수 있는 IP 라우터의 최대수를 겉(표)원 합니다. 현재 인터넷상의 각 라우터는 TTL 필드를 정확히 1 만 줄인다고 기대할 수 있습니다.

TCP/IP 의 사양에서는 TCP 패킷의 TTL 필드를 60 에 해야 한다고 되어 있습니다만, 많은 시스템은 좀 더 작은 값을 이용하고 있습니다 (4.3BSD 그럼 30, 4.2BSD 그럼 15 를 이용하고 있습니다).

이 필드에 용서되는 최대치는 255 입니다. 그리고 많은 UNIX 시스템에서는 ICMP ECHO_REQUEST 패킷의 TTL 필드를 255 로 하고 있습니다. 이것이 (ping) (은)는 할 수 있는데 telnet(1) (이)나 ftp(1) 그리고 넣지 않는 호스트가 발생하는 이유입니다.

통상 ping (은)는 받은 패킷의 ttl 치를 출력합니다. 리모트 시스템 하지만 ping 패킷을 받을 때, 그 응답에 있어서의 TTL 필드에 관계되어 이하의 3 개 중 1 개를 행할 수가 있습니다.

•   변경하지 않는;이것은 4.3BSD tahoe 릴리스전의 BSD 시스템이 행하고 있던 것입니다. 이 경우, 받은 패킷중의 TTL 값은 255 로부터 주회 경로에 있어서의 라우터의 수를 당긴 수입니다.

•   255 에 세트 하는; 이것은 현재의 BSD 시스템이 행하고 있다 일입니다. 이 경우, 받은 패킷중의 TTL 값은 255 로부터, 리모트 시스템 로부터 ping 하고 있다 호스트 까지 의 경로에 있어서의 라우터의 수를 당긴 수가 됩니다.

•   있는 다른 값에 세트 한다. 머신에 따라서는 30 혹은 60 과 같은 TCP 패킷으로 이용하는 것과 같은 값을 ICMP 패킷에 사용합니다. 또 전혀 다른 값을 이용하는 머신도 있을지도 모릅니다.

반환값
ping 유틸리티는, 지정했다 host (으)로부터 적어도 1 회의 응답을 수신했을 경우, 종료치 0 을 돌려줍니다; 송출은 성공한 것의 응답을 수신할 수 없는 경우는 2 를 돌려줍니다; 에러가 발생했을 경우는, 다른 값 (<sysexits.h> 에 기술되고 있는 값) 하지만 돌려주어집니다.

관련 항목
netstat(1), ifconfig(8), routed(8), traceroute(8)

역사
ping 유틸리티는 4.3BSD (으)로부터 등장했습니다.

저자
오리지날의 ping 유틸리티는, Mike Muuss 하지만 US Army Ballistics Research Laboratory 에서 기술했습니다.

버그
많은 호스트나 게이트웨이는, RECORD_ROUTE 옵션을 무시합니다.

최대 IP헤더장은, RECORD_ROUTE 옵션을 부가하기에는 너무 작습니다. 그렇지만, 이것에 대해서는 성과 (일)것은 많지 않습니다.

ping 를 대소변을 무의식중에 쌈으로 하는 것은, 일반적으로 권유받지 않습니다. 특히 브로드캐스트 어드레스에 대해서 ping 의 대소변을 무의식중에 쌈을 행하는 것은, 제대로 조건을 정돈했을 경우에 대해서만에 그쳐야 합니다.