[IT강의실] 네트워크 상태 점검의 기초 - ping 명령어
[용어로 보는 IT 2015년 개정판] 사람의 심장 박동 정도를 측정하는 심장박동 측정기처럼 컴퓨터 네트워크 상태를 점검, 진단하는 명령어가 ping(핑)이다. 이는 ‘Packet INternet Groper’의 약자이며, 최초 개발자인 마이클 무스(Michael John Muuss, 1983년)는 작동 원리가 비슷한 수중 음파 탐지기에서 발생하는 신호음에서 이름을 착안했다고 한다.
ping,네트워크 상태를 점검하는 가장 간단한 명령어
ping 명령어의 기본적인 작동 원리는 그다지 복잡하지 않다. 네트워크 상태를 확인하려는 대상(target) 컴퓨터(또는 네트워크 기기)를 향해 일정 크기의 패킷(packet, 네트워크의 최소 전송단위)을 보낸 후(ICMP echo request), 대상 컴퓨터가 이에 대해 응답하는 메시지(ICMP echo reply)를 보내면 이를 수신, 분석하여 대상 컴퓨터가 작동하는지, 또는 대상 컴퓨터까지 도달하는 네트워크 상태가 어떠한지 파악할 수 있다.
아울러 ping 명령어는 TCP/IP 프로토콜 중 ICMP(Internet Control Message Protocol)를 통해 동작하므로, 이 프로토콜을 지원하지 않는 기기(IP 주소를 갖지 않는 일부 스위치, 허브 등)를 대상으로 ping을 수행할 수 없다. 또한 (흔히 보안 상의 이유로) ICMP 사용을 차단한 기기 역시 ping 요청에 대응하지 않는다.
일반적인 사용예와 사용법
ping 명령어는 대부분의 운영체제에 기본으로 포함되어 있다. 사용법도 거의 비슷하다. 흔히 인터넷이 안되거나 특정 컴퓨터와 통신이 되지 않을 때 사용하며, 기본 사용법은 다음과 같다(MS 윈도우 운영체제 기준).
C:>ping ‘IP주소' 또는 C:>ping ‘도메인이름’
ping 명령어는 MS 윈도우 계열 운영체제에서는 ‘명령 프롬프트(보조프로그램 내)’를 통해, 리눅스/유닉스 계열 운영체제에서는 터미널 모드를 통해 실행할 수 있다. ping 명령어 바로 뒤에(공백 필요) 대상 컴퓨터의 IP 주소나 웹 사이트 등의 도메인 이름을 입력하면 된다.
예를 들어, 대상 컴퓨터의 IP 주소가 123.123.123.123이라면, ‘ping 123.123.123.123’이라 입력 후 실행하면 아래와 같은 결과가 출력된다. 물론 도메인 주소를 입력해도 마찬가지다.
출력 결과 중 위로부터 4줄은 ping 요청에 대한 대상 컴퓨터의 응답 상태를 나타낸다. 즉 32바이트 크기의 패킷을 보냈더니 1ms(밀리초, 1/1000초) 만에 응답을 보낸 것이다. 결국 총 4번의 ping 요청을 보냈고 4번 모두 수 ms 내의 빠른 응답을 보였으니, 대상 컴퓨터는 정상적으로 작동하며 대상 컴퓨터와의 네트워크 연결 상태도 원활하다 판단할 수 있다. 만약 응답 시간이높다면 패킷 송수신에 병목 또는 지체가 발생하는 것이다. 아울러 그 아래에 출력되는 내용은 응답 요청 패킷을 4번 보내 4번 모두 제대로 응답을 받았음을 나타낸다.
참고로 ‘TTL’은 Time To Live의 약자로, 대상 컴퓨터에 보낸 응답 요청 패킷이 네트워크에 살아서(live) 제 역할을 수행할 제한 시간을 의미하므로, 대상 컴퓨터 및 네트워크 상태와는 무관하다. TTL은 이론적으로 시간을 기준으로 산출되지만, 실제로는 네트워크 내 라우터(홉-hop)를 통과할 때마다 수치를 줄임으로써 패킷의 생존 시간을 측정한다. 즉 라우터를 통과할수록 ping 패킷이 살아서 활동할 시간은 줄어들게 된다. 아울러 각 운영체제마다 기본적으로 TTL 값이 지정되어 있어 이를 통해 대상 컴퓨터의 운영체제 종류와 버전도 짐작할 수 있다. 여담이지만, SK텔레콤의 휴대폰 요금제인 ‘TTL(Time to Love 혹은 The Twenties Life)’이 처음 나왔을 때, 그 이름이 바로 ping 명령어의 TTL에서 유래됐다는 설도 있었다.
윈도우 계열 운영체제는 ping 명령 한번 수행에 위와 같이 4번 패킷을 보내지만, 리눅스/유닉스 계열 운영체제는 사용자가 중지할 때까지(흔히 컨트롤 키 + C 키로 중지) 지속적으로 요청/응답 단계를 수행한다. 만약 윈도우 계열에서 지속적인 테스트를 진행하려면 명령줄 맨 마지막에 ‘-t’ 옵션을 넣어 실행한다. 이 역시 컨트롤 키 + C 키로 중지할 수 있다.
<윈도우 계열 운영 체제에서 ping 명령으로 지속적으로 패킷을 보내려면, -t 옵션을 사용한다>
한편 ping 명령 수행 후 아래와 같은 메시지가 출력됐다면, 대상 컴퓨터가 작동 불능이거나 대상 컴퓨터까지 네트워크 연결이 불가능함을 의미한다. 혹은 입력한 IP 주소(또는 도메인 주소)가 틀렸을 수도 있다. 그러니 문제의 원인을 하나씩 짚어 가며 파악해야 한다. 아울러 자신의 컴퓨터에도 문제가 있을 수 있으니 자신의 컴퓨터 IP 주소로 ping을 수행하여 상태를 점검하는 것이 좋다.
ping의 오남용은 호환/전쟁/마마만큼 무섭다?
불법 복제 비디오는 자라나는 아이들에게 대단히 해롭고, 무분별한 ping 명령의 수행은 컴퓨터 또는 웹 사이트에 치명적인 장애를 유발할 수 있다. ping 명령어는 대상 컴퓨터에 일정한 크기의 패킷을 지속적으로 전송하기 때문이다. 만약 수십~수백 대 이상의 컴퓨터에서 ping 패킷 크기를 늘려 특정 컴퓨터 또는 웹 사이트로 집중하여 전송하면 해당 컴퓨터(또는 사이트)는 정상적인 작동 또는 서비스가 불가능해진다. ping 요청 대응 때문에 부하가 급증하기 때문이다. 이러한 악의적인 트래픽 유발 작업이 DoS(Denial of Service) 공격의 대표적인 사례다(이를 ICMP 플러드-flood라 한다).
이에 따라 대부분의 웹 사이트는 보안 장비를 도입하여 이와 같이 반복적인 대량의 패킷에 응답하지 않도록 설정하고 있다. ping 명령어가 작동하는 ICMP 프로토콜을 아예 차단하는 것이다. 따라서 ping 요청에 응답이 없다고 해서 대상 컴퓨터 또는 웹 사이트에 문제가 발생했다고 단언할 수 없다.
참고로 웹 사이트 등지의 보안 장비는 대량 패킷을 반복적으로 보내는 근원지의 IP 주소 등을 파악할 수 있기 때문에, 장난 삼아 DoS 공격 패턴을 수행했다가는 자칫 불이익을 당할 수 있으니 주의해야 한다.
네트워크 세상을 영위하기 위한 필수 명령어, ping
각종 IT 기기가 네트워크 연결을 지원하면서 최근에는 컴퓨터 네트워크가 일상으로 파고 들고 있다. 물론 몰라도 해당 기기를 사용하는 데는 전혀 지장 없지만, 알아두면 언젠가는 요긴하게 사용할 수 있는 네트워크 기본 명령어 중 하나가 바로 ping이다. 세계 최고의 인터넷 인프라를 갖춘 대한민국의 국민이라면 다른 건 몰라도 ping 명령어 정도는 익혀 두는 게 좋을 것이라 생각한다. 끝으로 ping 명령어에 대한 자세한 사항은 ‘ping /?’이라 실행하면 볼 수 있다(MS 윈도우 운영체제 기준).
글 / IT동아 이문규(munch@itdonga.com)
본 기사는 네이버캐스트(http://navercast.naver.com/)의 '용어로 보는 IT' 코너에도 함께 연재됩니다.