TTL probe

traceroute는 TTL을 하나씩 늘려 응답 가능한 홉을 추정한다

TTL이 0이 된 라우터는 패킷을 버리고 ICMP Time Exceeded를 돌려줄 수 있다. traceroute는 이 반응을 이용해 목적지까지의 중간 라우터들을 순서대로 드러낸다.

source

Client

TTL 1, 2, 3으로 probe를 반복 전송

hop 1

R1

TTL 1 probe를 폐기하고 Time Exceeded 응답

hop 2

R2

TTL 2 probe가 여기서 만료되어 주소가 노출

hop 3

R3

응답하면 경유지, 침묵하면 별표로 표시 가능

target

Server

목적지 응답이 오면 탐색 종료

TTL 1

첫 라우터에서 만료

R1이 ICMP Time Exceeded를 보내면 hop 1로 기록한다.

TTL 2

두 번째 라우터에서 만료

R2의 응답 시간은 왕복 지연의 힌트이지 순수 링크 지연은 아니다.

TTL 3

응답 없음 또는 일부 응답

ICMP 차단과 rate limit 때문에 중간 홉이 보이지 않을 수 있다.

TTL n

목적지 도착

UDP는 Port Unreachable, ICMP는 Echo Reply, TCP는 SYN-ACK/RST가 단서다.

1  192.168.0.1      1.3 ms
2  10.20.0.1        7.8 ms
3  * * *            no reply
4  203.0.113.8     31.4 ms
Windows

tracert는 ICMP Echo 기반

방화벽이 ICMP를 다르게 취급하면 결과가 달라질 수 있다.

Linux/macOS

기본 traceroute는 UDP probe

옵션으로 ICMP Echo나 TCP SYN probe를 선택할 수 있다.

별표

장애 확정이 아니다

라우터가 데이터는 전달하면서 ICMP 응답만 제한할 수 있다.

비대칭

돌아오는 경로가 다를 수 있음

표시된 시간은 probe와 응답의 왕복 경로 영향을 함께 받는다.

traceroute는 경로의 실루엣이지 완전한 지도는 아니다

TTL 만료 응답을 이용한다는 원리를 알면, 중간에 별표가 있어도 곧장 장애로 단정하지 않게 된다. 목적지까지 실제 트래픽이 되는지, 어떤 probe 방식인지, ICMP 정책이 무엇인지까지 함께 봐야 한다.