학습 목표
ICMP(Internet Control Message Protocol) 가 IP와 함께 오류·진단 메시지를 전달하는 역할을 설명할 수 있다.
ping이 Echo Request/Reply로 도달성·RTT를 확인하는 방식을 설명할 수 있다.
traceroute가 TTL과 ICMP Time Exceeded로 경로를 추적하는 원리를 설명할 수 있다.
Path MTU 와 Packet Too Big 의 의미를 설명할 수 있다.
문제 상황
ping 8.8.8.8은 되는데curl은 타임아웃이다- IP까지 가는지와 TCP/앱 문제는 다르다 — ping만으로 “서비스 OK”는 아님
pingRTT는 10ms인데 TCP는 100ms처럼 느리다- ICMP ping RTT ≠ TLS·HTTP 전체 지연
traceroute api.example.com출력에* * *가 섞인다- TTL·방화벽·ICMP 차단 차이를 모른다
- VPN·터널 붙이니 대용량 전송만 실패한다
- Path MTU·DF 비트·ICMP Fragmentation Needed 이슈일 수 있다
IP·라우팅까지 봤다. 도달 여부·경로·MTU를 알려 주는 ICMP와 ping/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
ping은 ICMP 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) 의 내용을 기반으로 합니다.