ping은 먼저 보내는 호스트, S, 에서 자신의 시간(time-stamp)을 ICMP 메세지에 포함시켜 보다는 호스트, R, 에게 보내게 된다.

받는 쪽, R은 이 메세지를 받자마자 그대로 받는 주소와 보내는 주소를 바꾸어 다시 보내는 쪽에 보내게 된다.

원래 ping 메세지를 보냈던 S는 R이 보낸 메세지를 받는 시간을 기록하여 원래 S 자신이 보냈던 시간과의 차이를 계산해 냄으로써, RTT(round trip time)를 계산하게 된다.

보통 ping의 출력 결과는 bytes, time, TTL 값이 나오게 되는데,

bytes 에서는 S에서 보낼 때, 거의 무의미하게 포함되는 데이터 크기를 말한다.

time은 위에서 말한데로 계산한 RTT 값,

TTL은 time-to-live 값을 말한다. TTL은 크게 영향을 미치지 않지만, bytes의 값은 보낸 데이터의 크기이기 때문에 ,RTT계산시 오차가 생기게 될 수 있다.

 

tracert 는 윈도우상 명령어이다.

tranceroute는 TTL 값을 하나씩 줄여서 R에 메세지를 보내는 것이다.

TCP/IP는 connection-less service이기 때문에 잘못된 IP 주소를 넣어서 데이터를 전송하게 될 경우 IP packet은 네트워크 상에서 loop를 돌게 되는 수가 있다.

이 때문에, TTL 값이 필요하게 되는데, TTL은 라우터 하나를 지날 때마다 값이 하나씩 줄어들게 된다.

만약, 어떤 라우터에서 TTL 값이 0이 된 메시지를 받게 된다면, 에러 메세지를 원래 보낸 호스트에 보내주게 된다.

traceroute는 이런 TCP/IP 의 성질을 이용하여, TTL 값을 1에서 부터 하나씩 늘려면서 R에게 ping을 보내는 것이라 생각하면 된다.

이렇게 되면 S와 R사이에있는 라우터에서 에러 메시지를 보내주는 것을 보고, S와 R 사이의 bottelneck이 무엇이 되는지를 알 수가 있다.

 

예를 들어, S--(1)--(2)--(3)--R 순으로 네트워크가 연결되어 있다면, 맨처음 S는 TTL값을 1로하여 보내주면, (1)에서는 S에게 보낸 메시지가 잘못되었다고 판단하고, 에러 메시지를 S에게 보내게 된다. 이렇게 되면, S는 본래 처음 자신이 보냈던 시간값과 받은 시간을 가지고 S와 (1)사이의 RTT를 구하게 된다. 이런 식으로 TTL값을 하나씩 늘려가다가 맨 마지막에는 R까지 도달하게 되면, S와 R사이의 라우터 혹은 노드 간의 링크에서 걸리는 시간들을 모드 측정할 수 있다.

 

 

출처: 네이버지식인

 

'TA > Common' 카테고리의 다른 글

bioconductor 미러사이트 구축  (0) 2013.02.04
nmap  (0) 2013.02.04
R설치 in Rocks Clusters 6 (CentOS 6) & 5  (0) 2013.02.04
grep 사용시 or 사용 방법  (0) 2013.02.04
umount: device is busy  (0) 2013.02.04
Posted by 옥탑방람보
,