본문 바로가기
Back-End

traceroute 명령의 동작원리

by 이곳느 2022. 1. 2.

안녕하세요 :)

오늘은 맥 환경에서 자주쓰는 Traceroute 명령의 동작 원리를 알아보려고 합니다.

Traceroute란?

`Traceroute` 는 패킷이 사용자가 지정한 목적지 까지 도달하는 동안 거쳐가는 라우터의 IP를 확인할 수 있는 명령입니다.

사용자가 특정 목적지까지 가는 경로를 알기를 원한다면 traceroute는 아주 큰 도움이 되는 명령어입니다.

Traceroute 사용 방법

먼저 사용방법은 아래와 같습니다.

$ traceroute [탐색하고자 하는 경로]

만약 탐색하고자 하는 경로를 [www.google.com] 으로 한다면 아래와 같은 결과가 출력됩니다.

Traceroute 동작 원리

Traceroute의 동작 원리는 `ICMP` 방식으로 이루어 집니다.

하지만 여기서 방화벽 등등에서 ICMP를 허용해 주지 않거나 서버에서 ICMP를 거부하게 되면, 경로를 탐색할 수 없습니다.

Traceroute는 ICMP 의 type30으로써, TTL(Time to live) 방식을 사용합니다.

 

여기서 TTL은 컴퓨터나 네트워크에서 데이터의 유효기간을 나타내기 위한 방법입니다. TTL은 계수기나 타임스탬프의 형태로 데이터에 포함되며, 정해진 유효기간이 지나면 데이터는 폐기됩니다. 컴퓨터 네트워크에서 TTL은 패킷의 무한 순환을 방지하는 역할을 합니다.

여기서 사용되는 TTL은 내가 이동할 수 있는 최대 라우팅 홉을 의미합니다.

 

예를 들어 TTL을 1로 설정하고 패킷을 보내면, 다음 라우터에서 바로 TTL이 0이 되면서 Error를 반환합니다.

ICMP traceroute는 TTL을 1로 시작해서 보내고, 목표 라우터에 도달할 때까지 TTL을 1씩 계속 늘려가며 패킷을 보냅니다. 그러면 가능 경로에 있는 모든 라우터들은 TTL 0 을 경험하기 때문에 ICMP Error를 통해 본인의 라우팅 IP를 반환합니다.

간단하게 정리하면

  1. TTL을 1로 패킷을 전송합니다,
  2. TTL이 0이된 바로 다음 라우터는 ICMP error 메세지를 돌려줍니다. (경로 상에 있는 첫번째 라우터 IP를 알아냅니다.)
  3. TTL을 2로 패킷을 전송합니다.
  4. TTL이 0이된 경로중 2번째에 있는 라우터는 ICMP error 메세지를 돌려줍니다. (경로 상에 있는 두번째 라우터 IP를 알아냅니다.)
  5. 위와 같은 방식으로 도착할 때 까지 모든 TTL을 늘려가며 전송합니다.
  6. 목적지의 ICMP 메세지를 받으면 , 라우팅 경로의 모든 IP를 알 수 있습니다.

'Back-End' 카테고리의 다른 글

CPU 부하, I/O 부하 파악 방법  (0) 2022.07.10
Neo4j 설치하고 사용해보기  (0) 2022.01.25
Forward Proxy, Reverse Proxy의 정의와 차이점  (0) 2022.01.02
Web Server와 WAS의 차이점  (0) 2020.09.02