PING과 TRACEROUTE와의 만남
한양대학교 권대현님의 홈페이지에서 인용한 글입니다.
인터넷을 사용하다 보면 접속이 되었다가 안되었다가
하는 경우가 있을 것입니다. 때로는 접속이 너무 늦을 경우도 있을 것입니다.
이것에 관하여 간단히 알아볼 수 있는 방법을 설명하고자 합니다. 실험은 solaris에서
수행을 하였습니다. window*사용자를 위하여 잠깐잠깐 부가 설명을 하도록 하겠습니다.
ping 이라는 프로그램은 작은 양의 데이터를
상대 컴퓨터로 보내서 갔다 오는 시간을 측정하여 주는 프로그램입니다.
그래서 이 시간이 늦게 나타나면 통신 시간이 늦어질 수가 있는 것입니다.
또한 상대편 컴퓨터가 응답을 하지 않으면 어딘가에 문제가 있다는 것을
아실 수도 있습니다.
본진이
출발하기 전에 상대편의 상황을 알기 위하여 보내는 선발대정도로 이해하시면
무난할 듯 합니다
좀 기술적으로 적으면 ping 은 ICMP 프로토콜의 ECHO_REQUEST datagram 을 지정한 호스트나 네트워크 게이트웨이에 보내어 ICMP ECHO_RESPONSE 를 이끌어 내는 것을 말합니다.
예전에는 ping 이 응답이 없으면 중간 경로나 지정한 호스트에 문제가 있다고 확신할 수 있었으나 요즘에는 보안상의 이유로 ping request 를 거부하기도 합니다. 하지만 대부분의 경우는 여러분들의 요청을 받아들일 것입니다.
대부분의 OS 에서 ping utility 를 기본으로 제공하기 때문에 특별한 설정은 필요없고 사용방법 또한 대단히 간단합니다.
ping host (여기에서 호스트는 여러분이 접속하고 싶은 컴퓨터를 말합니다.) 라고 하시면 두 가지 중의 하나의 응답을 받으실 것입니다.
문제가
없는 경우 -> host is alive
문제가
있는 경우 -> no answer from host
windows 9x 계열을 사용하시는 분은 dos 창에서, windows NT/2000 사용자는 명령 프롬프트 창에서 명령을 수행하시면 됩니다. windows 계열은 기본적으로 4개의 packets 을 보내어 간단한 통계를 보여줍니다. 자세한 옵션은 ping 이라고 입력하시고 엔터를 치시면 확인하실 수 있습니다.
UNIX 계열(solaris 기준) 에서는 -s 옵션을 주시고 host 를 지정하면 ctrl-c 를 누르실 때 까지 packet 을 보내게 됩니다.
옵션에 관한 자세한 사항은 solaris ping run-time manual 을 참고 하세요
제가 자주 사용하는 방법은 ping -sn host 64 5 입니다. 이것은 지정한 host에 reverse look-up 은 하지 않고 64 byte의 데이터를 5 번 보내고 난후 통계를 보여 달라는 것입니다.
2.1.
traceroute 는 무엇인가?[index]
ping 을 이용하면 어느 정도의 기본 정보를 습득할 수 있다는 것은 아셨으리라 믿습니다. 아직 안 따라해 보셨다면 지금이라도 한번 해보세요.
ping 을 설명하면서 간략히 언급하였지만 인터넷 통신은 상대편 컴퓨터와 직접 연결이 이루어지지 않습니다. 즉, 중간에 다른 컴퓨터를 거치면서 가게 됩니다. 중간에 거치는 컴퓨터를 보통 라우터 라고 합니다.
이것은 상대편 컴퓨터와 통신을 하는데 어느 경로를 거쳐서 가는지의 여부와 그 중간 경로에 있는 것들과 통신을 하는데 걸리는 시간을 간략하게 알려줍니다.
ping 의 결과를 좀 자세히 분석하시고자 한다면 반드시 고려해야 보아야 하는 프로그램입니다. 좀더 자세한 정보를 원하시는 분은 RFC 를 참고 하세요.
2.2.
traceroute 는 어떻게 사용하는가?[index]
traceroute 의 사용법도 ping 만큼이나 간단합니다. 하지만 OS 에 따라서 기본적으로 설치가 되어 있는 것도 있고, 직접 설치하여야 하기도 합니다. UNIX 계열은 root 권한이 없으시면 사용하지 못할 수도 있습니다.
이번에는 windows 계열을 위주로 설명을 드리도록 하겠습니다. 우선 dos 창을 하나 띄우십시오. 시작 -> ms-dos windows 계열은 tracert 라는 이름으로 프로그램이 존재합니다. 그 후 tracert host 라고 입력하시면 결과를 보실 수가 있을 것입니다. 여기에서 host 는 물론 여러분이 접속하고자 하는 컴퓨터의 이름이나 IP address 입니다.
제가 자주 사용하는 방법은 tracert -d host 입니다. -d 옵션은 DNS reverse look-up 을 시도하지 말라는 것입니다. 옵션을 사용하실 경우 속도 차이를 아주 많이 느끼실 것입니다.^^
UNIX 계열에 traceroute 가 설치되어 있지
않으시면 ftp://ftp.ee.lbl.gov/traceroute.tar.Z 에서 다운로드 받아서
설치하시기 바랍니다. 설치 방법은 아주 간단하니 따로 설명하지 않겠습니다.
UNIX 계열에서 제가 자주 사용하는 것은 traceroute -n host -n
옵션의 역할은 windows 계열의 -d 와 같습니다.
옵션에 관한 자세한
설명은 solaris traceroute run-time manual 를 참고 하세요~
자..이제 간략하게 나마 ping 과 traceroute 가 무엇을 하는 것이고 어떻게 사용하는지에 대하여 간략하게 나마 설명을 드렸습니다.
사실 더 자세하게는 아실 필요는 없다고 생각합니다. 물론 네트워크 관리자시라면 제가 링크해 놓은 것을 자세히 한번 읽으실 필요는 있습니다.
오늘 제가 이 글을 쓰려고 준비를 하는 중에 테스트 대상으로 삼은 호스트가 kornet web server 였습니다. 다른 때는 빠르게 접속되는 것이 오늘은 영~
이럴 때 ping 과 traceroute 를 가지고 어디에 문제가 있는지 한번 알아보도록 합시다.
예의상 ping 옵션없이 가볍게 한번 명령을 주도록 할까요:-) (windows 계열을 사용하시는 분은 옵션없이 무조건 ping 만 사용하시면 됩니다.^^)
aser:/export/home/user/dhkwon/public_html
199 % ping www.kornet.nm.kr
www.kornet.nm.kr is
alive
나 살아있어~ 하면서 아우성을 치는군요:-)
windows 계열에서는 4 번 시도하고 통계를 보여준다고 이야기하였습니다.
이번에는 ctrl-c 를 누를 때까지 보낼 수 있게 -s
옵션을 주고 통계를 봅시다.
aser:/export/home/user/dhkwon/public_html
200 % ping -s www.kornet.nm.kr
PING www.kornet.nm.kr:
56 data bytes
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=0.
time=19. ms
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=2.
time=12. ms
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=3.
time=25. ms
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=4.
time=21. ms
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=5.
time=14. ms
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=9.
time=12. ms
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=10.
time=15. ms
64 bytes from www.kornet.net (168.126.63.18): icmp_seq=11.
time=10. ms
^C
적당히 결과를 보다가 ctrl-c 를 누르면 아래와
같은 응답이 보입니다.
----www.kornet.nm.kr PING Statistics----
12 packets transmitted, 8 packets received, 33%
packet loss
round-trip (ms)
min/avg/max = 10/16/25
간단하게 분석(?)하여 보면 12 개의 packet 을 보냈는데 그중 8 개의 응답만 받았고 (나머지 5 개는 응답을 못 받음..그래서 33 % 의 packet loss) 갔다가 오는 시간이 최소: 10, 평균: 16, 최대 25 ms 가 걸렸다고 알려줍니다.
이번에는 옵션을 조금 바꾸어서 보내는 data 양을 약간 늘려보고 응답을 봅니다.
aser:/export/home/user/dhkwon/public_html
201 % ping -s www.kornet.nm.kr 128 10
PING www.kornet.nm.kr:
128 data bytes
중략
---www.kornet.nm.kr PING Statistics----
10 packets transmitted, 6 packets received, 40%
packet loss
round-trip (ms)
min/avg/max = 6/11/19
aser:/export/home/user/dhkwon/public_html
202 % ping -sn www.kornet.nm.kr 256 10
중략
----www.kornet.nm.kr PING Statistics----
10 packets transmitted, 6 packets
received, 40% packet
loss
round-trip (ms) min/avg/max
= 11/17/30
이럴 경우에는 왕복 시간은 만족할만 하지만 packet loss 가 많아서 실제로 통신하는데 에는 TCP/IP 라고 불리우는 프로토콜 특성상 아주 느리게 통신을 할 것입니다.
그럼 어디에서 문제가 있는지
한번 알아보도록 합시다.
이럴
때 중간 경로를 알아야 하는데 이럴 때 사용하는 것이 traceroute 입니다.
aser:/export/home/user/dhkwon/public_html 203 %traceroute www.kornet.nm.kr
traceroute to www.kornet.nm.kr (168.126.63.18),
30 hops max, 40 byte packets
1 166.104.224.1 (166.104.224.1)
3.403 ms 3.329 ms 3.331 ms
2 166.104.195.1
(166.104.195.1) 3.458 ms 3.371 ms 3.437 ms
3
166.104.192.254 (166.104.192.254) 1.083 ms 0.988 ms 0.927
ms
4 168.126.175.77 (168.126.175.77) 5.823 ms 3.106
ms 3.195 ms
5 210.222.115.116 (210.222.115.116) 3.062
ms 3.164 ms 2.950 ms
6 210.183.254.41 (210.183.254.41)
7.726 ms 3.693 ms 3.936 ms
7 210.183.254.5
(210.183.254.5) 8.363 ms 17.582 ms 7.363 ms
8
168.126.16.54 (168.126.16.54) 15.907 ms 30.386 ms *
9 www.kornet.net (168.126.63.18) 18.391 ms 9.403
ms 17.702 ms
위의 결과는 제가 있는 곳에서 www.kornet.net 이라는 곳까지 거치는 라우터들의 정보를 알려주는 것입니다. 아주 쉽죠:-) 참고로 -n 옵션을 주고 사용하시면 더욱 빠른 결과를 보실 수 있습니다.
그 다음으로는 중간 경로에 있는 라우터들에게 구간별 ping test 를 하여서 문제가 있는 경로를 알아냅니다. 방법은 위에 나온 중간 경로의 숫자로 ping test 를 하는 것입니다.
aser:/export/home/user/dhkwon/public_html
204 % ping -sn 166.104.224.1 128 5
중략
----166.104.224.1
PING Statistics----
5 packets transmitted, 5 packets received, 0%
packet loss
round-trip (ms)
min/avg/max = 3/3/3
상태가 아주 양호합니다.
아 이때 -n
이라는 옵션은 IP 에서 DNS 이름을 알아보지 말라는 것입니다.
상황을 반복합니다.
aser:/export/home/user/dhkwon/public_html
205 % ping -sn 166.104.195.1 128 5
중략
----166.104.195.1
PING Statistics----
5 packets transmitted, 5 packets received, 0%
packet loss
round-trip (ms)
min/avg/max = 3/16/67
aser:/export/home/user/dhkwon/public_html
206 % ping
-sn 166.104.192.254 128 5
중략
----166.104.192.254 PING
Statistics----
5 packets transmitted, 5 packets received, 0%
packet loss
round-trip (ms)
min/avg/max = 1/1/1
aser:/export/home/user/dhkwon/public_html
207 % ping -sn 168.126.175.77 128 5
중략
----168.126.175.77
PING Statistics----
5 packets transmitted, 5 packets received, 0%
packet loss
round-trip (ms)
min/avg/max = 4/11/27
aser:/export/home/user/dhkwon/public_html
208 % ping -sn 210.222.115.116 128 5
중략
----210.222.115.116
PING Statistics----
5 packets transmitted, 5 packets received, 0%
packet loss
round-trip (ms)
min/avg/max = 4/4/6
aser:/export/home/user/dhkwon/public_html
209 % ping -sn 210.183.254.41 128 5
중략
----210.183.254.41
PING Statistics----
5 packets transmitted, 5 packets received, 0%
packet loss
round-trip (ms)
min/avg/max = 4/9/13
aser:/export/home/user/dhkwon/public_html
210 % ping -sn 210.183.254.5 128 5
중략
----210.183.254.5
PING Statistics----
5 packets transmitted, 4 packets received, 20%
packet loss
round-trip (ms)
min/avg/max = 6/10/14
앗~ 이곳으로 ping test 를 하니 packet loss 가 20 % 라는 아주 안 좋은 결과가 나타납니다. 10 개의 packet 을 보내는 것으로 한번 다시 시도해봅니다.
aser:/export/home/user/dhkwon/public_html
211 % ping -sn 210.183.254.5 128 10
중략
----210.183.254.5
PING Statistics----
10 packets transmitted, 6 packets received, 40%
packet loss
round-trip (ms)
min/avg/max = 6/12/26
10 번정도 보내어 보았더니 이번에는 40 % 라는 더 안좋은 결과를 보이는군요-.- 하지만 테스트 대상으로서는 아주 훌륭한 순간을 포착한 것입니다^^
이 구간은 수원 kornet 에서 혜화 전화국으로 연결되는 구간입니다. 이 구간이 제가 테스트할 때에는 아주 안 좋은 결과를 보여 주었습니다.
아마도 제가 테스트했던 순간 그 구간이 불안정하였기 때문일 것입니다. 이러면 이 다음으로 있는 곳으로의 통신 상황이 아무리 좋아도 마찬가지로 아주 안 좋은 결과를 보여줍니다.
aser:/export/home/user/dhkwon/public_html
213 % ping -sn 168.126.16.54 128 10
중략
----168.126.16.54
PING Statistics----
10 packets transmitted, 8 packets received, 20%
packet loss
round-trip (ms)
min/avg/max = 12/27/57
다음 라우터로 시도하여 보아도 그 중간에 있는 링크 상태가 매우 안좋기 때문에 그 이후 통신상황이 아무리 좋아도 packet loss 는 발생합니다.
후후..이제 문제가 발생한 곳이 어디라는 것을 알아내셨습니다. 그러면 어떡해야 하나요?
일반 유저라면 일단은 힘이 없으니 참으셔야 되겠지요-.- 하지만 계속 이런 상태가 지속된다면 네트워크 담당자에게 이야기하셔서 문제를 해결하셔야 합니다. 글을 쓰면서 다시 테스트하여 보니 지금은 정상입니다:-)
추가 : traceroute 는 가는 길에 대한 정보만 알려주므로 들어오는 길이 다르더라도 확인할 수 없습니다. 그것을 알아보기 위하여서는 외부에서도 traceroute 를 시도하여 보는 것입니다. 외국망에서 어떻게 여러분들의 호스트로 접속하는지 궁금하시면 www.traceroute.org 로 접속하여 보십시오.