네트워크 기초

ICMP과 진단

meellon 2026. 7. 1. 05:10

학습 목표

ICMP(Internet Control Message Protocol) 가 IP와 함께 오류·진단 메시지를 전달하는 역할을 설명할 수 있다.

ping이 Echo Request/Reply로 도달성·RTT를 확인하는 방식을 설명할 수 있다.

tracerouteTTL과 ICMP Time Exceeded로 경로를 추적하는 원리를 설명할 수 있다.

Path MTUPacket Too Big 의 의미를 설명할 수 있다.

문제 상황

  • ping 8.8.8.8은 되는데 curl타임아웃이다
    • IP까지 가는지와 TCP/앱 문제는 다르다 — ping만으로 “서비스 OK”는 아님
  • ping RTT는 10ms인데 TCP는 100ms처럼 느리다
    • ICMP ping RTT ≠ TLS·HTTP 전체 지연
  • traceroute api.example.com 출력에 * * * 가 섞인다
    • TTL·방화벽·ICMP 차단 차이를 모른다
  • VPN·터널 붙이니 대용량 전송만 실패한다
    • Path MTU·DF 비트·ICMP Fragmentation Needed 이슈일 수 있다

IP·라우팅까지 봤다. 도달 여부·경로·MTU를 알려 주는 ICMPping/traceroute다.

1. ICMP이 하는 일

ICMP네트워크 계층 프로토콜로, IP 데이터그램 안에 실린다 (protocol 번호 1). 데이터 전달이 아니라 제어·진단 메시지.

역할
오류 보고 목적지 unreachable, TTL exceeded, port unreachable(일부)
진단 Echo request/reply (ping)
경로·MTU Time exceeded (traceroute), Packet too big (PMTUD)
  • IP는 best-effort — 실패 시 ICMP로 송신자에게 알릴 수 있음 (항상 오지는 않음)
  • 방화벽이 ICMP drop → ping/traceroute 막힘 — “다운”과 구분 필요
  • ICMP ≠ TCP/UDP — 포트 없음, type/code 필드로 구분

2. ping — Echo Request / Reply

pingICMP Echo Request를 보내고 Echo Reply를 받아 왕복 시간(RTT)손실을 본다.

Client (ping)                         Host 8.8.8.8
    |  ICMP Echo Request (type 8)          |
    |------------------------------------->|
    |  ICMP Echo Reply   (type 0)          |
    |<-------------------------------------|
    |  RTT = reply time - send time        |
항목 설명
Echo Request type 8, code 0 — “살아 있나?”
Echo Reply type 0, code 0 — 응답
RTT 왕복 지연 — 12편 TCP RTT와 유사 개념, 측정 대상은 ICMP
TTL 응답 패킷에도 IP TTL — ping 출력에 보이기도 함
ping -c 4 8.8.8.8
# 64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.3 ms

ping -c 3 api.example.com
# DNS 해석 후 ICMP — TCP 443 열림과 무관
  • 성공 — 대상 IP까지 ICMP 허용·라우팅 OK (호스트/방화벽이 응답할 때)
  • 실패Request timeout, Destination Host Unreachable 등 — 어느 홉에서 막혔는지 추가 확인
  • 서비스 장애분리 — ping OK + curl 실패 → TCP/앱/방화벽 포트

3. traceroute — TTL로 경로 보기

traceroute(Linux traceroute, macOS traceroute, Windows tracert)는 TTL을 1부터 늘려 가며, 각 홉에서 Time Exceeded ICMP를 받아 라우터 주소를 수집한다.

단계 동작
TTL=1 첫 라우터에서 TTL=0 → ICMP Time Exceeded (type 11) → 1홉 IP 확인
TTL=2 두 번째 라우터에서 동일
TTL 증가 반복
도착 목적지 도달 → Echo Reply 또는 Port Unreachable(UDP traceroute)
traceroute 8.8.8.8
#  1  192.168.1.1  1.2 ms
#  2  10.0.0.1     5.1 ms
#  ...

traceroute -I api.example.com   # ICMP echo 방식 (구현별)
  • * * * — 해당 홉이 ICMP 안 돌려줌(필터·속도 제한) — 다음 홉은 나올 수 있음
  • 비대칭 라우팅 — 가는 길≠오는 길이면 일부 홉만 보임
  • DNS 역방향 — IP만 보이고 이름은 * * * 또는 느린 PTR

4. Path MTU와 Packet Too Big

MTU(Maximum Transmission Unit) — 한 링크에서 한 번에 실을 수 있는 최대 프레임 payload. 이더넷은 보통 1500 바이트.

Path MTU — 송신→수신 경로 전체에서 허용되는 최소 MTU.

개념 설명
DF (Don't Fragment) IP 헤더 비트 — 분할 금지
Packet Too Big ICMP type 3 code 4 — “이 크기는 안 됨, MTU는 N”
PMTUD TCP가 DF로 보내다 Too Big 받으면 세그먼트 크기 줄임
Black hole ICMP가 중간에서 drop → TCP 멈춤·타임아웃 (운영 이슈)
Sender --[1500B packet, DF=1]--> Router (MTU 1400)
              X  drop or ICMP Fragmentation Needed (next-hop MTU 1400)
Sender reduces TCP MSS / segment size
  • UDP 대용량 — PMTUD 없으면 분할되거나 드롭 — 앱이 크기 조절
  • VPN·GRE·IPsec — effective MTU 줄어듦 — 1500 가정 깨짐
  • ping -M do -s 1472 8.8.8.8 — DF로 크기 스윕 (플랫폼별 옵션 다름)

5. 자주 보는 ICMP type (참고)

Type 이름 용도
0 Echo Reply ping 응답
3 Destination Unreachable net/host/port unreachable, fragmentation needed
8 Echo Request ping 요청
11 Time Exceeded TTL=0 (traceroute), reassembly timeout
  • Destination Unreachable (3) — code로 원인 구분 (net / host / port / proto …)
  • ICMP redirect — 거의 안 씀 (보안·설계)
  • IPv6는 ICMPv6 — Neighbor Discovery 등 추가 역할 (15편 IPv6와 연결)

6. 진단 시 해석

증상 ICMP·도구 관점
ping OK, curl 실패 IP OK — TCP 포트·방화벽·앱
ping fail 라우팅·호스트 down·ICMP block
traceroute 중간 * 해당 홉 ICMP 미응답 — 경로 전체 단절은 아닐 수 있음
대용량만 실패 PMTU·MSS·터널 MTU
Network unreachable 라우터가 route 없음 (13편)
# Linux — ICMP 관련 (root)
sudo tcpdump -i any icmp -c 6

# macOS
sudo tcpdump -n icmp

# MTU 확인 (인터페이스)
ip link show eth0
# mtu 1500

7. 정리

  • ICMP는 IP 제어·진단 — ping(Echo), traceroute(Time Exceeded), PMTU(Packet Too Big)
  • ping = 도달성·RTT — 앱 가용성과 별개
  • traceroute = TTL 증가 + ICMP 응답으로 추정
  • Path MTU — 경로 최소 MTU; DF + ICMP로 TCP MSS 조정

다음에 다룰 것

  • NAT와 IPv6 개요
  • 사설 IP, NAT 동작, IPv6 전환 배경

해당 내용은 Computer Networking: A Top-Down Approach, 8/E (James Kurose, Keith Ross) 의 내용을 기반으로 합니다.

'네트워크 기초' 카테고리의 다른 글

이더넷과 MAC  (0) 2026.07.03
NAT와 IPv6 개요  (0) 2026.07.02
IP와 라우팅  (0) 2026.06.30
TCP 심화  (0) 2026.06.29
TCP 기초  (0) 2026.06.28