PING 은 Packet Internet Groper 의 약어입니다.
Internet Control Message protocol(ICMP) 에코 패킷을 사용하여 네트워크에 있는 장비가 작동 중인지 아닌지,
패킷이 그 장비에 도달하는데 얼마나 걸리는 지 알아보는 데 쓸 수 있습니다. 이 외에 네트워크 상에서 일어나는 문제
바생시 기본적으로 어디에 문제가 있는지도 알아볼 수 있습니다.
Command 상(윈도우 도스 창 : Windows Key + R 눌러서 명령창이 뜨면 CMD를 입력했을 때 뜨는 검은 명령창)에서
ping 이란 명령어를 실행하면 다음과 같이 사용할 수 있는 여러 옵션들을 보여주게 됩니다.
Usage : ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [ [-j host-list] | [-k host-list] ]
[-w timeout] target_name(IP or URL)
-tPing the specified host until sopped.
To see statistics and continue - type Control-break;
To stop - type Contrl-C.
-> Ping이 계속 나가게 하는 옵션입니다. Contrl+break를 누르면 정적으로 (정지된) 그리고 계속되는 걸 볼 수 있고
Control-C 를 누르면 멈추게 됩니다.
-a Resolve addresses to hostnames
-> 윈도우에 설정되어 있는 컴퓨터 이름을 보여줍니다.
-n count Number of echo requests to send.
-> 에코 요구를 몇개 보낼지, 즉 Ping을 몇번 실행할 것인지를 결정합니다.
-lsize Send buffer size.
-> Buffer의 크기를 설정합니다. Ping 패킷의 크기를 설정하는 것입니다.
크기의 제한은 0 < Size < 65500 입니다. 보통 Ping 을 하게되면 32byte로 나갑니다.
-f set Don't Fragement flag in packet.
-> 패킷에 Don't Fragement flag를 설정하기 위하여 사용합니다. 이 패킷은 도중에 게이트웨이에 의해
조각으로 나누어지지 않습니다. 이말은 패킷이 목적 디바이스에 완전히 전달되도록 보장한다는 것이다.
만일 이 플래그가 설정되어 있다면 라우터는 더 작은 패킷을 지연하는 매체를 통과하기 위하여 조각으로
나눌 수 없습니다. 만일 라우터에 매체가 포함되어 있다면 라우터는 그 패킷을 버리고 송신자에게
ICMP 목적지에 도달할 수 없음을 통보합니다.
** 간단히 말하면 깨지지 않는 가장 큰 단위(Packet)를 넘어가면 ping이 안되게 하는 옵션
Ex) Ping -f -l 1500 1.1.1.1이라고 하면 " Packet needs to boe fragmented but DF set" 나옴
** PC에서 ping 을 할 때 쪼개지 않고 내보낼 수 있는 최대크기는 1472byte입니다.
즉, -f 옵션을 사용하면 PC에서 패킷을 나누지 못하기 때문에 ping이 나가지 않습니다.
-f 옵션을 하용하지 않으면 PC에서 패킷을 나누어 보내기 때문에 ping이 가능합니다.
-iTTL time to Live.
-> TTL은 특정 이동통신 광고가 아니라 Time to Live(TTL) 플래그를 설정하기 위하여 사용합니다.
패킷이 통과할 수 있는 라우터의(홉)의 개수를 나타냅니다.
Ping 패킷의 거리를 제한하려면 TTL에 작은 값을 주면 됩니다.
Ping 을 하면 라우터를 지나갈 때마다 TTL의 값이 하나씩 감소하게 됩니다.
PC
└ 한국 Router - 1.1.1.1
└ 중국 Router - 2.2.2.2
└ 프랑스 router - 3.3.3.3
└ 영국 Router - 4.4.4.4
PC - 한국 라우터 - 중국 라우터 - 프랑스 라우터 - 영국 라우터 이런식으로 라우터 구성이 되어 있다고
가정하여 봅시다. 옆에 1.1.1.1과 2.2.2.2 는 라우터의 IP 주소 입니다.
PC에서 한국 라우터로 ping 을 치면
Reply from 1.1.1.1 : bytes=32 time=97ms TTL = 255 라고 나옵니다. TTL의 값은 255입니다.
그건 PC에서 한국 라우터까지 하 대의 라우터도 지나가지 않았다는 뜻입니다. TTL의 기본값이 255이기 때문입니다.
중국 라우터로 ping 을 치면
Reply from 2.2.2.2 : bytes=32 time=10ms TTL=254라고 나옵니다. 여기서 바뀐 점은 무엇일까요?
IP 주소나 time은 당연히 바뀔 것입니다.
마지막의 TTL 값이 바뀌었죠? TTL 값이 255에서 254로 바뀌었습니다.
이말은 라우터 한대를 지나서 중국 라우터에 왔다는 뜻입니다.
만약 프랑스로 Ping을 치면 TTL=253이 나올 것이고 영국은 당연히 TTL이 252라고 나옵니다. 한마디로 기본이 255
이니까 255개의 라우터를 지나가는 곳은 ping 으로 확인이 안됩니다. 255번째 라우터에 ping 이 도달하면
"Reply from 100.100.100.100 : TTL Expired in transit"
이런 메세지가 뜹니다. 여기서 100.100.100.100 은 255번째 라우터의 주소입니다.
255번째를 지나쳤거나 혹은 LOOP(무한반복)으로 인해 특정 라우터에서 반복적인 순환접근이 되는 경우가 생깁니다.
LOOP 명령이 걸린 특정 라우터에서 멈출 경우도 있다는 점 유의 하십시오. 이 때는위의 메시지가 나오는 라우터를
점검하셔야 합니다.
-i 옵션은 이 TTL값을 조절하는 것입니다. Ping -i 1 1.1.1.1 하면 ping 이 됩니다.
라우터를 하나도 지나가지 않았기 때문이죠.
Reply from 1.1.1.1 : bytes=32 time=97ms TTL=255
이런 메세지가 나옵니다.
-i 옵션이 1이면 라우터를 한대이상 못 지나가게 하기 하는 겁니다. 즉, TTL값이 1이 되는 것입니다.
즉 ping -i 1 4.4.4.4 해서 영국 라우터로 ping을 치면
"Reply from 1.1.1.1 : TTL expired in transit"
이렇게 나옵니다.
-i 옵션의 값이 1이기 때문에 Ping 이 첫번째 라우터인 한국 라우터 1.1.1.1 까지만 도달하게 됩니다.
하지만 -i 값을 4로 해서 ping 을 하면 ping -i 4 4.4.4.4 하면 ping 이 됩니다.
만약 프랑스 라우터로 Ping 이 되게 하려면 -i 값을 3이상 영국은 -i 값을 4이상으로 줘야합니다.
참고로 Tracert 명령어에 대해서 알아보도록 하겠습니다.
출발지에서 목적지까지 어떤 라우터를 거쳐서 도착하는지를 알 수 있게 해주는 명령어입니다.
tracert 4.4.4.4 하면
Tracing route to 4.4.4.4 over a maximum of 30 hops
1 13 ms 14 ms 13 ms 1.1.1.1
2 2 ms 2 ms 2 ms 2.2.2.2
313 ms 8 ms 6 ms 3.3.3.3
4 11 ms 11 ms 14 ms4.4.4.4
TTL 을 이용하여 확인 하는 것입니다. -i 1, -i 2 ....
원하는 IP 주소까지 TTL 값을 1에서 하나씩 늘려가며 원하는 목적지까지의 IP보여주는 명령어를 정리한 것이라 볼 수 있습니다.
-v TOS Type OF Service.
-> Type Of Service(TOS)플래그를 설정하기 위하여 사용합니다.
만약 네트웍이 TOS를 지원하도록 구성되어 있다면 그러한 연결을 테스트하기 위하여 PING으로 특정 유형의 서비스를
사용하도록 할 수 있습니다.
-r Count Record route for count hops.
-> 라우터의 Count hops를 볼 수 있습니다.
즉 위에서 나온 영국 라우터 Ping -r 4 4.4.4.4 하면
Reply from 4.4.4.4 : bytes=32 time=47ms TTL=252
Route : 1.1.1.1 -> 2.2.2.2 -> 3.3.3.3 -> 4.4.4.4
라고 나옵니다. -r 값을 2라고 하면 2번째 라우터의 주소까지만 나오게 됩니다.
Reply from 4.4.4.4 : bytes=32 time=47ms TTL=252
Route : 1.1.1.1 -> 2.2.2.2
-s count Timestamp for count hops.
-> 홉에 시간도장을 찍기 위하여 사용합니다.
ping -s 3 4.4.4.4 하면
Reply from 4.4.4.4 : bytes32 time=47ms TTL=252
Timestamp 1.1.1.1 : 1237728770 -> 2.2.2.2 : 4268958325 -> 3.3.3.3 : 3825454512
위에서 숫자 3은 3번째 홉까지 보여주라는 걸 의미합니다.
-s 다음 숫자의 값은 1~4까지 가능합니다.
-j host-list Loose source route along host-list.
-> 호스트 목록을 따라 소스 경로를 테스트하기 위하여 사용합니다.
패킷이 목적지에 도달하기 위하여 반드시 거쳐야 하는 특정 디바이스를 지정합니다.
host-list 에 지정된 컴퓨터의 목록을 통해 패킷의 경로를 정합니다. IP가 허용하는 최대 수는 9입니다.
자세한 설명은 -k 옵션과 같이 설명드리겠습니다.
-k host-list Strict source route along host-list.
-> 호스트-목록에 따라 정확한 소스 경로를 테스트하기 위하여 사용합니다.
패킷이 목적지에 도달하기 위하여 반드시 거쳐야 하는 모든 디바이스를 지정합니다.
host-list에 지정된 컴퓨터의 목록을 통해 패킷의 경로를 정합니다.
IP가 허용하는 최대 수는 9 입니다.
먼저 -j 옵션을 예를 들어 알아보도록 하겠습니다.
위에서 나온 PC~영국라우터로 설명을 하겠습니다.
ping -j 1.1.1.1 4.4.4.4 하면
ping 을 영국라우터(4.4.4.4)로 하는데 경유지는 한국라우터(1.1.1.1)를 지나서 가게끔 하라는 명령입니다.
여기서 최소한 하나이상 경유지를 설정해 줘야 합니다.
경유지를 설정하지 않고
ping -j 4.4.4.4 로 입력하면
Bad option specified. (옵션을 정확히 쓰라고 나옵니다. 경유지는 9개까지 됩니다.
만약 PC에서 영국 라우터까지 가려면 한국, 중국, 프랑스를 거쳐서 가겠죠?
ping -j 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 하면
Reply from 4.4.4.4 : bytes=32 time=14ms TTL=252
Route: 3.3.3.3 -> 2.2.2.2 -> 1.1.1.1
-j에서는 하나 이상의 경유지를 설정해줘야 하지만.. -k는 모든 경유지를 다 설정해 줘야 합니다.
ping -k 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 이런식으로 말입니다. 이해가 되십니까??
-w timeout Timeout in miliseconds to wait for each reply.
-> 이건 1/1000 초 단위로 Reply 응답 신호를 최대한 기다리라는 시간을 지정하는 옵션입니다.
직접 해보면 ping -w 1000 4.4.4.4
영국 라우터가 응답을 빨리 하면
Reply form 4.4.4.4 : bytes=32 time=47ms TTL=252
메시지가 바로 뜨지만, 응답을 안할 때는 1000/1000 초(1초) 동안 기다린다는 뜻입니다.
1초가 되면 Request Timed out. 하고 메세지가 나옵니다.