본문 바로가기
IT적응기

ICMP의 역할: Ping과 Traceroute가 네트워크 진단에 쓰이는 원리 — 엔지니어가 매일 쓰는 도구의 진짜 작동 방식

by IT적응기 2026. 4. 11.

ICMP의 역할 Ping과 Traceroute가 네트워크 진단에 쓰이는 원리 참고이미지
ICMP의 역할 Ping과 Traceroute가 네트워크

ICMP의 역할: Ping과 Traceroute가 네트워크 진단에 쓰이는 원리

📌목차

  • 결론부터: ICMP가 없으면 네트워크 진단이 불가능하다
  • ICMP란 무엇인가 — 네트워크의 119 신고 시스템
  • Ping의 작동 원리 — Echo Request와 Echo Reply
  • Traceroute의 작동 원리 — TTL을 이용한 경로 추적
  • Ping으로 알 수 있는 것과 알 수 없는 것
  • Traceroute 결과를 제대로 읽는 방법
  • ICMP 차단이 불러오는 문제들
  • 실무에서 자주 쓰는 진단 명령어 모음
  • 마무리 정리

🎯 결론부터: ICMP가 없으면 네트워크 진단이 불가능하다

"ICMP"(Internet Control Message Protocol)는 네트워크 통신 상태를 확인하고 오류를 알리기 위해 설계된 프로토콜입니다. IP 프로토콜(RFC 792)의 핵심 보조 도구로, Ping과 Traceroute는 모두 ICMP를 기반으로 동작합니다. 인터넷이 연결되는지, 어디서 패킷이 막히는지 알아내는 거의 모든 진단 작업이 이 프로토콜 없이는 불가능합니다.

비유하자면, ICMP는 네트워크 세계의 119 신고 전화입니다. 어딘가에 문제가 생기면 "여기서 패킷이 안 지나가요", "목적지가 없어요", "TTL이 다 됐어요"라고 알려주는 역할을 합니다. 이 신고 시스템이 없으면 무엇이 잘못됐는지 알 방법이 없습니다.

📡 ICMP란 무엇인가 — 네트워크의 119 신고 시스템

"ICMP"는 OSI 모델에서 3계층(네트워크 계층)에 속하며, IP 헤더 안에 캡슐화되어 전송됩니다. TCP나 UDP처럼 포트 번호가 없고, IP 프로토콜 번호 1을 사용합니다.

ICMP 메시지는 타입(Type)과 코드(Code)로 구분됩니다. 주요 타입을 보면 이렇습니다.

타입 코드 의미
0 0 Echo Reply (Ping 응답)
3 0~15 Destination Unreachable (목적지 도달 불가)
8 0 Echo Request (Ping 요청)
11 0 Time Exceeded (TTL 초과 — Traceroute 핵심)
5 0~3 Redirect (경로 변경 알림)

특히 타입 3(Destination Unreachable)의 코드 값이 중요합니다. 코드 0은 네트워크 자체가 없는 것이고, 코드 1은 호스트에 도달 불가, 코드 3은 포트가 닫혀 있음을 의미합니다. 이 값들만 봐도 어느 계층에서 문제가 발생했는지 빠르게 판단할 수 있습니다.

🏓 Ping의 작동 원리 — Echo Request와 Echo Reply

Ping은 ICMP 타입 8(Echo Request)을 보내고 타입 0(Echo Reply)을 기다리는 구조입니다.

작동 순서를 단계별로 보면 이렇습니다.

  1. 출발지에서 목적지 IP로 ICMP Echo Request(타입 8) 패킷을 전송합니다.
  2. 목적지 호스트가 패킷을 받으면 ICMP Echo Reply(타입 0)로 응답합니다.
  3. 출발지에서 응답이 돌아오기까지 걸린 시간을 RTT(Round-Trip Time)로 표시합니다.

ping 8.8.8.8을 실행하면 보이는 결과를 해석해보면:

PING 8.8.8.8: 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=117 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=11.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=12.1 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss

  • icmp_seq: 패킷 순서 번호. 중간에 비어있으면 패킷 로스입니다.
  • ttl: 목적지에서 돌아올 때의 TTL 값. 운영체제마다 초기 TTL이 달라 (Linux 64, Windows 128, Cisco 255) 대략적인 홉 수를 유추할 수 있습니다.
  • time: 왕복 시간. 이 값이 일정하지 않고 크게 튀면 네트워크 지터(Jitter) 문제입니다.

Ping 응답이 없다고 해서 무조건 장비가 죽은 게 아닙니다. 방화벽에서 ICMP를 차단하고 있을 가능성이 있기 때문에 Ping 실패와 호스트 다운을 동일시하면 안 됩니다.

🔍 Traceroute의 작동 원리 — TTL을 이용한 경로 추적

Traceroute는 "ICMP"의 창의적인 활용법입니다. TTL(Time to Live) 값을 1부터 하나씩 늘려가며 패킷을 보내고, 각 라우터에서 돌아오는 ICMP 타입 11(Time Exceeded) 메시지를 수집해 경로를 추적합니다.

작동 순서를 자세히 보면:

  1. TTL=1인 패킷을 전송합니다. 첫 번째 라우터에서 TTL이 0이 되면서 ICMP Time Exceeded(타입 11)를 반환합니다. 이 응답의 출발지 IP가 첫 번째 홉입니다.
  2. TTL=2인 패킷을 전송합니다. 두 번째 라우터에서 같은 일이 벌어집니다.
  3. 이 과정을 목적지에 도달하거나 최대 홉(보통 30)에 도달할 때까지 반복합니다.
  4. 목적지에 도달하면 ICMP Echo Reply 또는 UDP의 경우 Port Unreachable 메시지가 반환됩니다.

Windows에서는 tracert, Linux/Mac에서는 traceroute 명령어를 씁니다. Linux의 traceroute는 기본으로 UDP를 사용하고, Windows의 tracert는 ICMP를 씁니다. traceroute -I 옵션을 쓰면 Linux에서도 ICMP 방식으로 실행됩니다.

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max
 1  192.168.1.1    1.2 ms   1.1 ms   1.0 ms   # 공유기
 2  10.10.0.1      5.4 ms   5.1 ms   5.3 ms   # ISP 첫 번째 홉
 3  *   *   *                                  # 응답 없음 (ICMP 차단)
 4  72.14.215.1    12.1 ms  11.9 ms  12.0 ms  # Google 네트워크 진입
 5  8.8.8.8        12.3 ms  12.1 ms  12.2 ms  # 목적지 도달

🧐 Ping으로 알 수 있는 것과 알 수 없는 것

Ping은 강력하지만 만능은 아닙니다. 이 차이를 모르면 잘못된 판단을 내리게 됩니다.

Ping으로 알 수 있는 것:

  • 목적지 호스트까지 IP 연결이 가능한지 여부
  • 왕복 지연 시간(RTT)과 안정성
  • 패킷 로스 발생 여부
  • 대략적인 홉 수 (TTL 감소량 계산)

Ping으로 알 수 없는 것:

  • 특정 포트(서비스)의 동작 여부 — TCP 포트 확인은 telnet이나 nc(netcat)를 써야 합니다.
  • 경로 중간 어느 지점에서 지연이 발생하는지 — 이건 Traceroute의 영역입니다.
  • 방화벽이 ICMP를 차단 중인지 여부 — Ping 실패가 장애인지 차단인지 구분이 안 됩니다.
  • 애플리케이션 계층의 문제 — 웹서버 프로세스가 죽었어도 Ping은 성공합니다.

📊 Traceroute 결과를 제대로 읽는 방법

별표(*)가 나오면 무조건 장애라고 생각하는 경우가 많은데, 그렇지 않습니다. ICMP Time Exceeded를 차단하는 라우터는 응답을 안 보내기 때문에 별표로 표시됩니다. 이후 홉에서 다시 응답이 온다면 해당 구간은 차단 정책이 있을 뿐 실제 장애는 아닙니다.

실제로 문제인 경우:

  • 특정 홉부터 모든 줄이 * * *로 나오고 목적지에 도달하지 못하는 경우 — 해당 지점에서 라우팅이 차단되거나 루프가 발생한 것입니다.
  • 특정 홉에서 지연이 갑자기 200ms 이상 증가하고 그 이후로도 유지되는 경우 — 그 구간에 물리적 또는 논리적 병목이 있습니다.
  • 경로가 비정상적으로 돌아가는 경우 — 서울에서 부산 가는데 도쿄를 경유하는 식의 비효율적 라우팅이 보이면 BGP 정책 문제일 가능성이 높습니다.

마지막 홉만 지연이 높은 경우는 대부분 해당 라우터의 ICMP 처리 우선순위가 낮아서 생기는 현상으로, 실제 데이터 전송에는 영향이 없는 경우가 많습니다.

🔒 ICMP 차단이 불러오는 문제들

보안 정책으로 "ICMP"를 전부 차단하는 경우가 있는데, 이게 오히려 문제를 만들기도 합니다.

가장 대표적인 사례가 PMTUD(Path MTU Discovery) 실패입니다. PMTUD는 ICMP 타입 3 코드 4(Fragmentation Needed)를 사용해 최적 MTU를 결정합니다. 이걸 차단하면 패킷 단편화(Fragmentation) 관련 문제가 발생해 특정 크기 이상의 패킷이 전송되지 않는 현상이 생깁니다. 웹 페이지는 열리는데 파일 다운로드나 VPN이 안 되는 증상의 원인이 ICMP 차단인 경우가 생각보다 많습니다.

따라서 ICMP를 완전히 차단하기보다는 필요한 타입과 코드만 허용하는 것이 올바른 접근입니다. 최소한 ICMP 타입 3(Destination Unreachable)과 타입 11(Time Exceeded)은 허용해야 합니다.

🛠️ 실무에서 자주 쓰는 진단 명령어 모음

네트워크 트러블슈팅을 하다 보면 자주 쓰는 명령어 패턴이 생깁니다.

# 기본 연결 확인
ping 8.8.8.8
ping -c 100 8.8.8.8          # 100회 전송으로 패킷 로스율 측정

특정 패킷 사이즈로 Ping (PMTUD 문제 진단)

ping -s 1472 8.8.8.8 # 1472바이트 데이터 + 28바이트 헤더 = 1500 MTU

경로 추적

traceroute 8.8.8.8
traceroute -I 8.8.8.8 # ICMP 방식 사용 (Linux)
traceroute -T -p 80 8.8.8.8 # TCP 80 포트로 Traceroute

포트 연결 확인 (ICMP 대안)

telnet 8.8.8.8 80
nc -zv 8.8.8.8 443 # netcat으로 포트 오픈 여부 확인

지속적인 경로 모니터링

mtr 8.8.8.8 # Ping + Traceroute 실시간 조합 (Linux)

특히 mtr(My Traceroute)은 실시간으로 각 홉의 패킷 로스율과 지연을 보여주기 때문에 간헐적 장애를 잡는 데 아주 유용합니다. Windows에서는 WinMTR을 설치해서 같은 기능을 쓸 수 있습니다.

✅ 마무리 정리

"ICMP"는 단순해 보이지만 네트워크 진단의 근간을 이루는 프로토콜입니다. Ping은 목적지와의 기본 연결 상태를, Traceroute는 경로 전체의 흐름을 파악하게 해줍니다. 이 두 도구의 원리를 제대로 이해하면, 장애 상황에서 어디서 문제가 발생했는지를 훨씬 빠르게 좁혀나갈 수 있습니다.

처음에는 그냥 "ping 되면 OK, 안 되면 장애"로 단순하게 볼 수 있지만, 실무를 하다 보면 Traceroute 결과에서 병목 구간을 읽어내고, ICMP 타입 값으로 장애 원인을 빠르게 추론하는 능력이 진짜 네트워크 엔지니어를 만드는 차이라는 걸 알게 됩니다. 오늘 소개한 내용을 바탕으로 직접 명령어를 실행해보는 게 최고의 학습입니다.

📚 참고 출처


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 깜짝,황금이 아빠 IT적응기

서치어드바이저