PING6(8)

명칭
ping6 - 네트워크 호스트에 대해서 ICMPv6 ECHO_REQUEST 패킷을 송신한다

서식
ping6 [-dfHnNqRtvwW] [-a addrtype] [-b bufsiz] [-c count] [-h hoplimit] [-I interface] [-i wait] [-l preload] [-p pattern] [-P policy] [-S sourceaddr] [-s packetsize] [hops...] host

해설
ping6 유틸리티는, ICMPv6 프로토콜로 필수의 ICMP6_ECHO_REQUEST 데이터 그램을 사용해, 호스트 또는 게이트웨이로부터 ICMP6_ECHO_REPLY 데이터 그램을 돌려주게 합니다. ICMP6_ECHO_REQUEST 데이터 그램 (``ping'')은, IPv6 헤더와 ICMPv6 (을)를 가집니다. ICMPv6 의 서식은 RFC2463 에 기술되고 있습니다. 옵션은 다음과 같습니다:

-a addrtype
    ECHO_REQUEST (은)는 아니고　ICMPv6 노드 정보 (주소) 문의 패킷을 생성합니다. addrtype (은)는 이하의 캐릭터보다 구성되는 캐릭터 라인이 아니면 안됩니다.
    a   응답자의 모든 uni-cast 주소를 요구합니다. 만약 생략 되면(자), 응답자의 주소를 가진다 인터페이스에 속하는 주소만 요구합니다.
    c   응답자의 IPv4 호환 주소와 IPv4 에 MAP 된 주소를 요구합니다.
    g   응답자의 글로벌 스코프 주소를 요구합니다.
    s   응답자의 사이트 로컬 주소를 요구합니다.
    l   응답자 링크 로컬 주소를 요구합니다.
    A   응답자의 이탈리아 국연탄화수소공사-캐스트 주소를 요구합니다. 이 캐릭터가 없는 경우, 응답자는 uni-cast 주소만 돌려줍니다. 이 캐릭터가 있는 경우, 응답자는 이탈리아 국연탄화수소공사-캐스트만 돌려줍니다. 사양에서는, 응답자의 이탈리아 국연탄화수소공사-캐스트 주소를 어떻게 취득할까는 진술되지 않은 것에 주의해 주세요. 이것은 실험적인 옵션입니다.

-b bufsiz
    소켓의 버퍼 사이즈를 설정합니다.

-c count
    ECHO_RESPONSE 패킷을 count 회송출 (그리고 수신) 하고 나서 종료합니다.

-d  사용되고 있는 소켓에 SO_DEBUG 옵션을 설정합니다.

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

-H  IPv6 주소의 역검색을 시행하도록, 지정합니다. 본옵션을 지정하지 않는 경우, ping6 유틸리티는 역검색을 시행하지 않습니다.

-h hoplimit
    IPv6 의 중계 한계수를 설정합니다.

-I interface
    주어진 인터페이스 주소에 대해서, 보냅니다. 이 플래그는, ping 의 행선지 주소가 멀티 캐스트 주소의 경우인가, 링크 로컬 / 사이트 로컬인 uni-cast 주소의 경우에 적용할 수 있습니다.

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

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

-n  수치의 출력에만 됩니다. 응답중에 포함되는 호스트 주소에 대해, 심볼명의 해결을 시도하지 않습니다.

-N  노드 정보 멀티 캐스트 그룹 (node information multicast group) (ff02::2:xxxx:xxxx) (을)를 프로브 합니다. host (은)는 타겟의 캐릭터 라인의 호스트명인 것이 필요합니다 (수치의 IPv6 주소여 되지 않습니다). 노드 정보 멀티 캐스트 그룹은, 지정했다 host 에 근거해 계산해, 최종적인 종점으로서 사용됩니다. 노드 정보 멀티 캐스트 그룹은 링크 로컬인 멀티 캐스트 그룹이므로, 종점 링크를 -I 그리고 지정할 필요가 있습니다.

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

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

-R  대상 ( hops (을)를 지정했을 경우에는 최초의 hop) 하지만 도달 가능하다라고, 커널에 믿게 합니다. 이것은, 상위층의 도달 가능성 확인 힌트를 삽입하는 것으로 실현됩니다. 본옵션은, 대상 host (또는 최초의 호프) 하지만 근처인 경우 의미가 있습니다.

-S sourceaddr
    요구 패킷의 시점 주소를 지정합니다. 시점 주소는, 송신원노드의 uni-cast 주소 중 하나인 것이 필요합니다. 출력 인터페이스를 -I 그리고 지정하는 경우에는, sourceaddr (은)는 해당 인터페이스에 할당한 주소인 것이 필요합니다.

-s packetsize
    송출하는 데이터의 바이트수를 지정합니다. 디폴트에서는 56 바이트입니다. 이것은, ICMP 헤더 데이터의 8 바이트를 붙인 64 바이트의 ICMP 데이터에 변환됩니다. -b 옵션도 모두 지정해, 소켓의 버퍼 사이즈를 확장할 필요가 있을지도 모릅니다.

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

-w  ECHO_REQUEST (은)는 아니고 ICMPv6 노드 정보 (FQDN) 문의 패킷을 생성합니다. -w 옵션을 지정했을 경우 -s 옵션은 무효가 됩니다.

-W  -w 옵션과 같습니다만, 03 드래프트 베이스의 낡은 패킷 서식을 사용합니다. 이 옵션은 후방 호환성을 위해서(때문에) 남아 있습니다. -w 옵션을 지정했을 경우 -s 옵션은 무효가 됩니다.

hops
    타입 0 루팅 헤더중에 놓여지는, 중간 노드용의 IPv6 입니다.

host
    최종적인 종점 노드의 IPv6 주소입니다.

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

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

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

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

장해 패킷은, 경고를 일으키는 중대한 원인인 것은 틀림없습니다. 많은 경우, ping 패킷의 경로의 어딘가 (네트워크내나 호스트내) 의 하드웨어의 고장이 생각됩니다.

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

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

반환값
ping6 유틸리티는, 성공시 (호스트가 살아 있는 경우)에는 0 을, 인수가 올바르지 않은 경우나 호스트가 응답하지 않는 경우에는 비 0 을 돌려줍니다.

사용예
통상, ping6 (은)는, ping(8) 하지만 동작하도록(듯이) 동작합니다. 이하는, ICMPv6 에코 요구를 dst.foo.com 에 보냅니다.

    ping6 -n dst.foo.com

이하는, wi0 인터페이스에 접속된 네트워크 링크상의 전노드의 호스트명을 검출합니다. 주소 ff02::1 (은)는, 링크 로컬전노드 멀티 캐스트 주소 라고 명명되고 있어 패킷은 네트워크 링크상의 전노드에 도달합니다.

    ping6 -w ff02::1%wi0

이하는, 종점 노드 dst.foo.com 에 할당할 수 있었던 주소를 검출합니다.

    ping6 -a agl dst.foo.com

관련 항목
netstat(1), ifconfig(8), ping(8), routed(8), traceroute(8), traceroute6(8) A. Conta, S. Deering, Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification, RFC2463, December 1998. Matt Crawford, IPv6 Node Information Queries, draft-ietf-ipngwg-icmp-name-lookups-05.txt, October 22, 1999, work in progress material.

버그
우리가 왜 ping6 (와)과 ping(8) 의 실장을 나누었는지라고 하는 논의가 많이 있었습니다. IPv4 와 IPv6 양용의 ping 명령에 통일하는 것이 편리하다고 말하는 사람도 있었습니다. 이 요구에 대한 대답은 다음과 같습니다.

개발자의 시점으로부터: IPv4 와 IPv6 로 하위의 raw 소켓 API 가 완전히 다르기 때문에, 2 종류의 코드 베이스를 가지게 됩니다. 두 명령을 아울러 단일 커멘드로 해도, 실제, 개발자의 입장으로부터는 이익은 없을 것입니다.

조저자의 시점으로부터: 리모트 로그인 툴과 같은 통상의 네트워크 어플리케이션과는 달라, 통상, 네트워크 관리툴을 사용할 때는 주소 패밀리를 의식합니다. 단지 호스트에의 도달 가능성을 알고 싶은 것이 아니고, IPv6 등의 특정의 프로토콜에서의 호스트 도달성을 알고 싶습니다. 따라서, IPv4 와 IPv6 용으로 통합되었다 ping(8) 명령이 있었다고 해도, 항상 -6 또는 -4 의 옵션 (또는 이것에 비슷하는 것)을 입력해, 특정의 주소 패밀리를 지정하게 되겠지요. 이것은, 본질적으로, 두 다른 명령을 가지는 것과 같은 것을 의미합니다.

역사
ping 명령은 4.3BSD 그리고 등장했습니다. IPv6 를 서포트했다 ping6 유틸리티는 KAME IPv6 프로토콜 스택 킷으로 처음 등장했습니다.

KAME Project (http://www.kame.net/) 스택을 기로 한다 IPv6 및 IPsec 의 서포트는, FreeBSD 4.0 그리고 시작해 짜넣어졌습니다.