의도된 실패로 네트워크의 경로를 그려낸다고?! trace route 이야기

의도된 실패로 네트워크의 경로를 그려낸다고?! trace route 이야기

Summary Traceroute는 발신지에서 목적지까지의 경로를 확인하고 지연 시간을 측정하는 도구로, TTL 값을 조절하여 네트워크 장비의 오류를 유도한다. 목적지에 도달하면 높은 번호의 UDP 포트를 사용하여 탐색을 종료하며, 데이터의 정확성을 위해 동일한 TTL 값에 대해 세 개의 패킷을 전송하여 안정성을 평가한다. 그러나 네트워크의 동적 특성으로 인해 지연 시간이 역전되는 현상이 발생할 수 있다.


Image

[주제 1: Traceroute의 동작 원리와 의도된 오류의 활용]

Traceroute는 발신지 호스트에서 목적지 호스트에 이르는 경로를 확인하고 각 홉(hop)에서의 지연 시간을 측정하기 위해 설계된 도구입니다. 이 프로그램의 핵심 논리는 데이터그램의 생존 시간인 TTL(Time-to-Live) 필드를 인위적으로 조절하여 네트워크 장비의 ‘시간 초과 오류’를 유도하는 데 있습니다. 발신지는 최초 전송 시 TTL 값을 1로 설정한 UDP 세그먼트를 송신하며, 이를 수신한 첫 번째 라우터는 TTL 값을 감소시킨 후 값이 0이 됨에 따라 해당 패킷을 폐기합니다. 이때 라우터가 발신지에게 전송하는 ICMP 경고 메시지(유형 11, 코드 0 - TTL 만료)를 분석함으로써, 발신지는 경로상의 첫 번째 장비의 식별 정보와 왕복 시간(RTT)을 획득하게 됩니다. 이후 발신지는 TTL 값을 n, n+1로 순차적으로 증가시키며 동일한 과정을 반복하여 경로상의 모든 라우터 정보를 수집합니다.

Image

[주제 2: 목적지 도달 확인 및 탐색 종료 메커니즘]

Traceroute는 목적지 호스트에 도달했을 때 탐색을 종료하기 위해 일반적인 서비스에서 사용하지 않는 높은 번호의 UDP 포트를 활용합니다. 중간 경로의 라우터들이 TTL 만료에 따른 ICMP 메시지를 반환하는 것과 달리, 패킷이 최종 목적지에 도달하면 목적지 호스트는 TTL 만료 여부와 상관없이 해당 UDP 세그먼트를 처리하려 시도합니다. 그러나 해당 포트가 열려 있지 않음을 확인한 목적지 호스트는 발신지에게 ICMP “포트 도달 불가능” 메시지(유형 3, 코드 3)를 회신합니다. 발신지 호스트는 이 특정 유형의 ICMP 메시지를 수신하는 시점을 최종 목적지 도달 신호로 간주하고 경로 탐색 프로세스를 공식적으로 종료합니다.

Image

[주제 3: 데이터 수집의 구체성 및 네트워크 환경에 따른 변수]

데이터의 정확성을 확보하기 위해 Traceroute는 동일한 TTL 값에 대해 통상적으로 세 개의 패킷을 독립적으로 전송합니다. 이는 네트워크 지연의 가변성을 고려한 설계로, 각 홉에 대해 세 번의 측정치를 제공하여 사용자에게 경로 안정성에 대한 판단 근거를 제시합니다. 다만 네트워크의 동적인 특성상 특정 라우터 n까지의 지연 시간이 이후 단계인 n+1에서의 지연 시간보다 길게 측정되는 역전 현상이 발생할 수 있습니다. 이는 라우터 내의 큐잉 지연이나 경로 변경 등 가변적인 네트워크 상황이 반영된 결과이며, ICMP가 IP 데이터그램의 페이로드로 실려 전송되는 구조적 특징에 기인합니다.

Comments

GitHub 계정으로 로그인하여 댓글을 남겨보세요. GitHub 로그인

댓글 시스템 설정이 필요합니다

GitHub Discussions 기반 댓글 시스템을 활성화하려면:

  1. Giscus 설정 페이지에서 설정 생성
  2. GISCUS_SETUP_GUIDE.md 파일의 안내를 따라 설정 완료
  3. Repository의 Discussions 기능 활성화

Repository 관리자만 설정할 수 있습니다.