traceroute로 길 추적하기
내 컴퓨터에서 구글 서버까지 패킷이 몇 개의 라우터를 거칠까요. traceroute는 이 경로를 홉 하나하나씩 추적해 보여주는 도구입니다. 네트워크 장애를 진단할 때도 유용하고, 인터넷의 실제 구조를 눈으로 확인하는 데도 좋습니다.
ping과 ICMP — 도구의 원리
traceroute를 이해하려면 먼저 ping과 ICMP를 알아야 합니다.
ICMP는 인터넷 제어 메시지 프로토콜입니다. 패킷을 데이터로 전달하는 것이 아니라, 네트워크 상태를 알리는 신호를 주고받기 위해 만들어졌습니다. ping은 ICMP를 이용합니다. '에코 요청'을 보내면 목적지가 '에코 응답'을 돌려보냅니다. 왕복 시간을 측정해 연결 여부와 지연 시간을 확인하는 것이 ping입니다.
traceroute가 보내는 탐침 패킷은 유닉스(macOS·Linux)에서는 보통 UDP, 윈도우 tracert에서는 ICMP를 쓰지만, 어느 방식이든 핵심 트릭은 같고 라우터가 돌려보내는 '시간 초과' 응답은 ICMP입니다. IP 헤더에는 TTL이라는 숫자가 있습니다. Time To Live의 줄임말로, 라우터를 거칠 때마다 1씩 줄어들고 0이 되면 패킷이 버려집니다. 무한 루프를 방지하는 장치입니다. traceroute는 TTL을 1부터 시작해 하나씩 늘려가며 패킷을 보냅니다. TTL이 1이면 첫 번째 라우터에서 패킷이 버려지고, 그 라우터가 '시간 초과' ICMP를 보냅니다. 그 응답의 출발지 주소가 첫 번째 홉의 IP 주소입니다. TTL 2이면 두 번째 라우터에서 버려지고 두 번째 홉을 알 수 있습니다. 이 과정을 반복하면 경로 전체가 드러납니다.
직접 실행해보기
# 파일: 터미널# macOS / Linuxtraceroute google.com# Windows (명령 프롬프트)tracert google.com
출력은 다음과 비슷하게 나옵니다.
traceroute to google.com (142.250.196.110), 30 hops max
1 192.168.1.1 1.2 ms 1.1 ms 1.0 ms ← 내 공유기
2 10.0.0.1 3.4 ms 3.2 ms 3.1 ms ← ISP 첫 번째 장비
3 121.140.1.1 5.8 ms 5.9 ms 5.7 ms ← ISP 내부 라우터
4 72.14.238.50 8.2 ms 8.0 ms 8.1 ms ← Google 망 진입
5 142.250.196.110 9.1 ms 9.0 ms 9.2 ms ← 목적지
각 줄이 하나의 홉입니다. 줄 맨 앞 숫자가 홉 번호, 그다음이 라우터 IP 주소, 마지막 세 숫자가 세 번의 왕복 시간(ms)입니다.
첫 번째 홉은 거의 항상 내 공유기입니다. 192.168.1.1처럼 사설 IP 주소가 나옵니다. 두 번째, 세 번째 홉은 ISP 장비이고, 그 이후에는 통신 경로에 따라 국내 IX(인터넷 교환점)나 해외 케이블을 거치는 모습도 보입니다. * * *로 표시되는 홉은 ICMP 응답을 차단한 라우터입니다. 보안상 이유로 응답하지 않도록 설정한 것이며, 실제 경로가 끊긴 것은 아닙니다.
이 도구가 알려주는 것
traceroute는 어디서 지연이 심한지, 어느 구간에서 패킷이 막히는지 한눈에 보여줍니다. 어느 홉에서 갑자기 응답 시간이 크게 늘어난다면 그 구간에서 병목이 발생하는 것입니다. 국내 ISP 구간까지는 빠른데 이후부터 느리다면, 해외 연결 구간에 문제가 있는 것입니다.
라우팅의 원리를 이해하고 직접 경로를 눈으로 확인했습니다. 12장에서는 여러분 집 안의 사설 IP 주소가 어떻게 인터넷까지 나가는지, NAT의 비밀을 풀어봅니다.