[πCN] ICMP - Internet Control Message Protocol
π Internet Protocol μ 곡 μμ μ 리
IPλ Best Effort μλΉμ€λ‘ ν¨ν· μμ€μ΄λ μ€λ₯λ₯Ό 보μ₯νμ§ μλλ€. κ·Έλ λ€λ©΄ λ€νΈμν¬μμ λ°μνλ λ¬Έμ λ€μ μ΄λ»κ² μ§λ¨ν μ μμκΉ? ICMPλ IPμ 보쑰 νλ‘ν μ½λ‘, μλ¬ λ¦¬ν¬ν κ³Ό λ€νΈμν¬ μ§λ¨μ λ΄λΉνλ€.
ICMPμ νμμ±
Error/Status Reportingμ μ€μμ±
πSilent Failure Problem: IPλ Best Effort μλΉμ€λ‘ μλ¬ λ°μ μ μλ¦Ό μμ΄ ν¨ν·μ μ‘°μ©ν λ²λ¦΄ μ μμ β μ§λ¨μ΄ λ§€μ° μ΄λ €μ!
λΌμ°ν°κ° μ§λ©΄νλ μλ¬ μν©:
1
2
3
4
5
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β λΌμ°ν°κ° ν¨ν·μ μ΄λλ‘ ν¬μλ©ν μ§ λͺ¨λ¦ β
β β TTL(Hop count)μ΄ λ§λ£λ¨ β
β β ν¨ν·μ΄ λ§ν¬μ MTUλ³΄λ€ λ무 νΌ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
μ μλ¬ λ³΄κ³ κ° νμνκ°?
- β IPλ Best Effort β μλ¬ μλ¦Ό μ무 μμ
- β κ·Έλ¬λ Silent Failureλ λλ²κΉ μ΄ λΆκ°λ₯!
- β ν΄κ²°μ± : ICMPλ‘ μλ¬ μν© μ λ¬
Best Effortμ μλ―Έ: βNever having to say youβre sorryβ - νμ§λ§ μ€μ λ‘λ μλ¬ λ³΄κ³ κ° νμμ !
ICMP κ°μ
ICMPλ?
πICMP (Internet Control Message Protocol): IPλ₯Ό 보쑰νλ νλ‘ν μ½λ‘ μλ¬ λ¦¬ν¬ν κ³Ό κ°λ¨ν 쿼리 κΈ°λ₯μ μ 곡
IP 보쑰 νλ‘ν μ½ κ΅¬μ‘°:
1
2
3
4
5
6
7
8
9
10
11
12
13
βββββββββββββββββββββββββββββββββββββββ
β Routing Protocols β
β RIP OSPF BGP PIM β β λΌμ°ν
ν
μ΄λΈ ꡬμ±
βββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββ
β Control Protocols β
β ICMP IGMP β β μ μ΄ λ©μμ§
βββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββ
β IP β
βββββββββββββββββββββββββββββββββββββββ
ICMPμ κ³μΈ΅μ μμΉ
TCP/IP Stackμμμ μμΉ:
1
2
3
4
5
6
7
8
9
10
ββββββββββββββββββββββββββββββββββββββββ
β Application (Telnet, FTP, HTTP...) β
ββββββββββββββββββββββββββββββββββββββββ€
β Transport (TCP, UDP) β
ββββββββββββββββββββββββββββββββββββββββ€
β Network (IP) βββββββββββ β
β β ICMP β βββββ IP μμμ λμνμ§λ§
βββββββββββββββββββββ΄ββββββββββ΄βββββββββ IPμ μΌλΆλ‘ κ°μ£Όλ¨!
β Data Link (Ethernet, WiFi...) β
ββββββββββββββββββββββββββββββββββββββββ
ν΅μ¬ νΉμ§:
- Runs on top of IP: TCP/UDPμ κ°μ λ 벨
- Integral part of IP: Transportκ° μλ IPμ νμ κ΅¬μ± μμ
- Protocol Field = 1: IP ν€λμμ ICMP μλ³
ICMP λ©μμ§ κ΅¬μ‘°
ICMP ν€λ ν¬λ§·
1
2
3
4
5
6
7
8
9
10
11
bit # 0 7 8 15 16 23 24 31
ββββββββ¬βββββββββΌββββββββββΌβββββββββββββββββββββββββββββββββββββββ€
β Type β Code β Checksum β
β(1 byte)β(1 byte)β (16 bits) β
ββββββββ΄βββββββββ΄ββββββββββ΄βββββββββββββββββββββββββββββββββββββββ€
β Rest of the header (4 bytes) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Data section β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ν€λ νλ:
| νλ | ν¬κΈ° | μ€λͺ |
|---|---|---|
| Type | 1 byte | ICMP λ©μμ§ νμ |
| Code | 1 byte | ICMP λ©μμ§ μλΈνμ |
| Checksum | 2 bytes | μ 체 ICMP λ©μμ§μ λν 체ν¬μ¬ (IPμ μ μ¬) |
μ΅μ ν¬κΈ°: 8 bytes (μΆκ° λ°μ΄ν° μμ κ²½μ° 4 bytesλ 0μΌλ‘ μ±μ)
ICMP μΊ‘μν
IP Datagram λ΄λΆ ꡬ쑰:
1
2
3
4
5
6
7
8
9
ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β IP Header β IP Payload β
β β (ICMP Message) β
ββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββ
ICMP Message μμΈ:
ββββββββ¬βββββββ¬βββββββββββ¬ββββββββββββββββββββββββββ
β Type β Code β Checksum β Data Section β
ββββββββ΄βββββββ΄βββββββββββ΄ββββββββββββββββββββββββββ
ICMP λ©μμ§ νμ
Error-Reporting vs Query Messages
ICMP λ©μμ§ λΆλ₯:
1
2
3
4
5
6
7
8
9
10
ICMP Messages
β
βββββββββββββββββ΄ββββββββββββββββ
β β
Error-Reporting Query
β β
ββββββββ΄βββββββ ββββββββββ΄βββββββββ
βType 3, 4, β βType 8/0, 13/14 β
β5, 11, 12 β β17/18, 9/10 β
βββββββββββββββ βββββββββββββββββββ
ICMP νμ μ 체 λͺ©λ‘
| Type | Code | Message | λΆλ₯ | μ€λͺ |
|---|---|---|---|---|
| 0 | 0 | Echo Reply | Query | Ping μλ΅ |
| 3 | 0-15 | Destination Unreachable | Error | λͺ©μ μ§ λλ¬ λΆκ° |
| 4 | 0 | Source Quench | Error | νΌμ‘ μ μ΄ (νμ¬ μ¬μ© μ ν¨) |
| 5 | 0-3 | Redirect | Error | λΌμ°ν κ²½λ‘ λ³κ²½ μλ¦Ό |
| 8 | 0 | Echo Request | Query | Ping μμ² |
| 9 | 0 | Router Advertisement | Query | λΌμ°ν° μλ¦Ό |
| 10 | 0 | Router Solicitation | Query | λΌμ°ν° μμ² |
| 11 | 0, 1 | Time Exceeded | Error | TTL λ§λ£ λλ μ¬μ‘°λ¦½ νμμμ |
| 12 | 0, 1 | Parameter Problem | Error | IP ν€λ μ€λ₯ |
| 13 | 0 | Timestamp Request | Query | μκ° μ 보 μμ² |
| 14 | 0 | Timestamp Reply | Query | μκ° μ 보 μλ΅ |
| 17 | 0 | Address Mask Request | Query | μλΈλ· λ§μ€ν¬ μμ² |
| 18 | 0 | Address Mask Reply | Query | μλΈλ· λ§μ€ν¬ μλ΅ |
ICMP Error Messages
Error λ©μμ§μ λμ μ리
μλ¬ λ°μ μ νλ¦:
1
2
3
4
5
6
7
8
9
10
Host A Router Host B
β β β
βββββ IP Datagram βββββΊβ β
β β (λ¬Έμ λ°μ: TTL=0, β
β β λͺ©μ μ§ unreachable λ±) β
β β β
β ββ Drop Datagram β
β β β
ββββ ICMP Error ββββββββ€ β
β Message β β
Error λ©μμ§ λ°μ΄ν° μΉμ
πError Message Content: μλ³Έ ν¨ν·μ IP ν€λ + 첫 8 bytes payloadλ₯Ό ν¬ν¨νμ¬ μλ¬ μμΈ μΆμ κ°λ₯
Error λ©μμ§ κ΅¬μ‘°:
1
2
3
4
5
6
ββββββββββββββββ¬βββββββββββββββ¬βββββββββββββββ¬ββββββββββββββββββ
β IP Header β ICMP Header β IP Header β 8 bytes payload β
β (new) β β (original) β (original) β
ββββββββββββββββ΄βββββββββββββββ΄βββββββββββββββ΄ββββββββββββββββββ
ββββββββββββββββ¬ββββββββββββββββββ
μλ¬κ° λ°μν μλ³Έ ν¨ν· μ 보
ICMP Header:
1
2
3
ββββββββ¬βββββββ¬βββββββββββ¬βββββββββββββββββββββββββ
β Type β Code β Checksum β Unused (0x00000000) β
ββββββββ΄βββββββ΄βββββββββββ΄βββββββββββββββββββββββββ
μ 8 bytes payload?
- TCP/UDP ν€λμ Source Port, Destination Port ν¬ν¨ (κ° 2 bytes)
- νΈμ€νΈκ° μ΄λ€ μμΌ/μ ν리μΌμ΄μ κ³Ό κ΄λ ¨λ μλ¬μΈμ§ μλ³ κ°λ₯
ICMP Error λ°μ μ ν 쑰건
λ€μ κ²½μ°μλ ICMP Error λ©μμ§λ₯Ό μμ±νμ§ μμ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
β No ICMP Error for:
1. ICMP μλ¬ λ©μμ§λ₯Ό μ λ¬νλ datagram
β 무ν 루ν λ°©μ§!
2. Fragmentκ° μ²« λ²μ§Έκ° μλ datagram
β 첫 fragmentλ§ μλ¬ λ³΄κ³
3. Broadcast/Multicast μ£Όμλ₯Ό κ°μ§ datagram
β λ€νΈμν¬ νμ£Ό λ°©μ§
4. νΉμ μ£Όμ (127.0.0.0, 0.0.0.0)λ₯Ό κ°μ§ datagram
5. IP Checksum μλ¬κ° μλ datagram
μ£Όμ Error λ©μμ§ μμΈ
Type 3: Destination Unreachable
πDestination Unreachable: IP datagramμ΄ λͺ©μ μ§μ μ λ¬λμ§ λͺ»νκ³ νκΈ°λμμμ μλ¦Ό
Code κ°λ³ μλ―Έ:
| Code | μ€λͺ | μμ± μ£Όμ²΄ |
|---|---|---|
| 0 | Network is unreachable | Router |
| 1 | Host is unreachable | Router |
| 2 | Protocol is unreachable | Host |
| 3 | Port is unreachable | Host |
| 4 | Fragmentation required but DF set | Router |
| 5 | Source routing not feasible | Router |
| 6 | Destination network unknown | Router |
| 7 | Destination host unknown | Router |
| 8 | Source host isolated | Router |
| 9 | Network administratively prohibited | Router |
| 10 | Host administratively prohibited | Router |
| 11 | Network unreachable for TOS | Router |
| 12 | Host unreachable for TOS | Router |
| 13 | Communication administratively prohibited | Router |
| 14 | Host precedence violation | Router |
| 15 | Precedence cutoff in effect | Router |
λΌμ°ν° vs νΈμ€νΈ: Code 2, 3λ§ νΈμ€νΈκ° μμ±, λλ¨Έμ§λ λΌμ°ν°κ° μμ±!
Code 3: Port Unreachable
λ°μ μλ리μ€:
1
2
3
4
5
6
7
8
Client Server
β β
ββββ UDP to port 80 ββββββββββββββββΊβ
β β β No process listening
β β on port 80
β β
ββββββ ICMP Port Unreachable ββββββββ€
β (Type=3, Code=3) β
RFC 792 κ·μ :
βλͺ©μ μ§ νΈμ€νΈμμ IP λͺ¨λμ΄ νλ‘ν μ½ λͺ¨λμ΄λ νλ‘μΈμ€ ν¬νΈκ° activeνμ§ μμ datagramμ μ λ¬ν μ μμΌλ©΄, destination unreachable λ©μμ§λ₯Ό μ μ‘ν μ μλ€.β
μ€μ μμ:
1
2
3
4
5
6
7
8
bsdi % tftp
tftp> connect svr4 8888
tftp> get temp.foo
Transfer timed out.
# tcpdump μΆλ ₯:
bsdi.2924 > svr4.8888: udp 20
svr4 > bsdi: icmp: svr4 udp port 8888 unreachable
Type 5: Redirect
πICMP Redirect: λ λμ κ²½λ‘κ° μμ λ νΈμ€νΈμ λΌμ°ν ν μ΄λΈμ μ λ°μ΄νΈνλλ‘ μλ¦Ό
λ°μ μν©:
1
2
3
4
5
6
7
8
9
10
11
12
13
νΉμν μν©: κ°μ λ€νΈμν¬μ μ¬λ¬ λΌμ°ν°κ° μμ λ
ββββββ
βββββββββ R1 βββββββββββ
β ββββββ β
β β
ββββββ β β Internet ββββββ
β S ββββ€ βββββββββββββΊβ D β
ββββββ β ββββββ β ββββββ
βββββββββ R2 βββββββββββ
ββββββ
λ¬Έμ : Default Router = R1μ΄μ§λ§, Dλ‘ κ°λ €λ©΄ R2κ° λ λΉ λ¦!
Redirect λμ:
- Sκ° R1μΌλ‘ ν¨ν· μ μ‘
- R1μ΄ R2κ° λ λμ κ²½λ‘μμ λ°κ²¬
- R1μ΄ Sμκ² ICMP Redirect (Type=5) μ μ‘
- Sμ λΌμ°ν ν μ΄λΈ μ λ°μ΄νΈ: D β R2
Code κ°:
| Code | μ€λͺ |
|---|---|
| 0 | Redirect for network |
| 1 | Redirect for host |
| 2 | Redirect for type-of-service and network |
| 3 | Redirect for type-of-service and host |
Type 11: Time Exceeded
πTime Exceeded: TTLμ΄ 0μ λλ¬νκ±°λ Fragment μ¬μ‘°λ¦½ νμμμ λ°μ
Code κ°:
| Code | μ€λͺ | μ©λ |
|---|---|---|
| 0 | Time-to-live equals 0 during transit | Traceroute |
| 1 | Time-to-live equals 0 during reassembly | Fragment νμμμ |
TTL λμ μμ:
1
2
3
4
5
6
7
ν¨ν· κ²½λ‘:
Host A (TTL=64) β R1 (TTL=63) β R2 (TTL=62) β ... β Destination
TTL=0μ΄ λλ©΄:
Router βββΊ Drop Packet
β
βββΊ Send ICMP Time Exceeded to Source
Wireshark μμ:
1
2
3
4
5
6
7
8
Internet Control Message Protocol
Type: 11 (Time-to-live exceeded)
Code: 0 (Time to live exceeded in transit)
Checksum: 0xecbe [correct]
Unused: 00000000
Internet Protocol Version 4, Src: 192.168.0.2, Dst: 192.168.1.2
User Datagram Protocol, Src Port: 33289, Dst Port: 44444
Type 12: Parameter Problem
λ°μ κ²½μ°:
| Code | μ€λͺ |
|---|---|
| 0 | IP header bad (catchall error) |
| 1 | Required option missing |
ICMP Query Messages
Query λ©μμ§μ νΉμ§
Query vs Error:
1
2
3
4
5
6
Error Message: Query Message:
ββββββββββββ ββββββββββββ
β One-way β β Request β
β (μλ¬ ν΅λ³΄)β β + β
ββββββββββββ β Reply β
ββββββββββββ
Query μ’ λ₯:
1
2
3
4
5
6
7
8
9
Query Messages
β
ββββββββββββββββββββΌβββββββββββββββββββ
β β β
Echo Timestamp Address Mask
(Type 8/0) (Type 13/14) (Type 17/18)
β β β
Router Solicitation/Advertisement
(Type 10/9)
Type 8/0: Echo Request/Reply (Ping)
Pingμ λμ μ리
πPing: λ€νΈμν¬ μ°κ²°μ± ν μ€νΈ λꡬ, ICMP Echo Request/Reply μ¬μ©
Ping λμ:
1
2
3
4
5
6
7
8
9
Host A Router/Host B
β β
ββββββ ICMP Echo Request (Type=8) ββββββΊβ
β β
β Kernelμ΄
β μ§μ μ²λ¦¬
β β
ββββββ ICMP Echo Reply (Type=0) βββββββββ€
β β
ν΅μ¬ νΉμ§:
- β Kernelμμ μ§μ μ²λ¦¬ (Application Layer λΆνμ)
- β λ§€μ° λΉ λ₯Έ μλ΅
- β λΌμ°ν°μ νΈμ€νΈ λͺ¨λ μλ΅ κ°λ₯
Echo Request/Reply ν¬λ§·:
1
2
3
4
5
6
7
ββββββββ¬βββββββ¬βββββββββββ¬βββββββββββββ¬βββββββββββββββ
β Type β Code β Checksum β Identifier βSequence Numberβ
β 8/0 β 0 β β (2 bytes) β (2 bytes) β
ββββββββ΄βββββββ΄βββββββββββ΄βββββββββββββ΄βββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Optional Data (κ°λ³ κΈΈμ΄) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Identifier & Sequence Number:
- Identifier: Ping νλ‘μΈμ€ μλ³
- Sequence Number: κ° μμ²/μλ΅ μμ λ§€μΉ
Type 13/14: Timestamp Request/Reply
Timestamp λ©μμ§
πTimestamp: μμ€ν κ° μκ° μ 보 κ΅ν λ° Round-Trip Time μΈ‘μ
ν¬λ§·:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ββββββββββββ¬βββββββ¬βββββββββββ¬βββββββββββββ¬βββββββββββββββ
β Type β Code β Checksum β Identifier βSequence Numberβ
β 13 or 14 β 0 β β β β
ββββββββββββ΄βββββββ΄βββββββββββ΄βββββββββββββ΄βββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 32-bit Originate Timestamp β
β (μμ² μ μ‘ μκ°) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 32-bit Receive Timestamp β
β (μμ² μμ μκ°) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 32-bit Transmit Timestamp β
β (μλ΅ μ μ‘ μκ°) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
μκ° νμ:
- UTC (Universal Coordinated Time) μμ μ΄ν κ²½κ³Ό milliseconds
- 32-bit β μ½ 24μκ° μ£ΌκΈ°λ‘ overflow
μ©λ:
- μμ€ν μκ³ λκΈ°ν (NTPμ μ μ )
- Round-Trip Time (RTT) μΈ‘μ
λ€νΈμν¬ κ²½λ‘ νμ
Path MTU Discovery
πPMTU (Path MTU): End-to-end κ²½λ‘μμ μ΅μ MTU
λ¬Έμ μν©:
1
2
3
4
5
6
7
Host A Router C Host B
MTU=1500 MTU=1500 MTU=1400 MTU=1300
β β β β
ββ 1500B βββΊβ β β
β ββ 1500B ββΊβ β
β β β β Too big!β
β β β β
RFC 1191 ν΄κ²° λ°©λ²:
1
2
3
4
5
6
7
8
9
10
11
12
13
Step 1: DF (Don't Fragment) λΉνΈ μ€μ νκ³ μ μ‘
Step 2: MTU μ΄κ³Ό μ ICMP μμ
βββββββββββββββββββββββββββββββββββββββββββ
β Type: 3 (Destination Unreachable) β
β Code: 4 (Fragmentation needed but DF β
β set) β
β MTU of next hop: 1400 ββββ μ€μ! β
βββββββββββββββββββββββββββββββββββββββββββ
Step 3: λ μμ MTUλ‘ μ¬μ μ‘
Step 4: μ±κ³΅ν λκΉμ§ λ°λ³΅
PMTU Discovery κ³Όμ :
1
2
3
4
5
6
7
8
9
10
11
12
13
Host A Host E
β β
ββββ Packet (MTU=1500, DF=1) ββββββββββββββββΊ β
β β
ββββ ICMP: Use MTU=1400 ββββββββββββββββββββββ€
β β
ββββ Packet (MTU=1400, DF=1) ββββββββββββββββΊ β
β β
ββββ ICMP: Use MTU=1300 ββββββββββββββββββββββ€
β β
ββββ Packet (MTU=1300, DF=1) ββββββββββββββββΊ β
β β
βββββββββ Packet received ββββββββββββββββββββ€
Wireshark μμ:
1
2
3
4
5
6
Internet Control Message Protocol
Type: 3 (Destination unreachable)
Code: 4 (Fragmentation needed)
Checksum: 0x3147 [correct]
Unused: 0000
MTU of next hop: 1400 ββββ λ€μμ μ¬μ©ν MTU!
Traceroute
Traceroute μ리
πTraceroute: ν¨ν·μ΄ λͺ©μ μ§κΉμ§ κ±°μΉλ λͺ¨λ λΌμ°ν°μ κ²½λ‘λ₯Ό μΆμ νλ λꡬ
TTLμ μ΄μ©ν κ²½λ‘ νμ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TTLμ λμ:
βββββββ βββββββ βββββββ βββββββ
β Src β β R1 β β R2 β β Dst β
ββββ¬βββ ββββ¬βββ ββββ¬βββ ββββ¬βββ
β β β β
ββ TTL=1 βββββΊβ β β
β ββ TTL=0 β β β
βββ ICMP ββββββ€ β β
β R1 μλ³ β β β
β β β β
βββββ TTL=2 βββΌβββββββββββββΊβ β
β β ββ TTL=0 β β
βββββ ICMP ββββΌββββββββββββββ€ β
β R2 μλ³β β β
β β β β
βββββ TTL=3 βββΌββββββββββββββΌβββββββββββββΊβ
β β β β β
λμ°©
Traceroute μκ³ λ¦¬μ¦:
- TTL=1λ‘ ν¨ν· μ μ‘ β 첫 λ²μ§Έ λΌμ°ν°μμ Time Exceeded μμ
- TTL=2λ‘ ν¨ν· μ μ‘ β λ λ²μ§Έ λΌμ°ν°μμ Time Exceeded μμ
- TTL=nλ‘ ν¨ν· μ μ‘ β λͺ©μ μ§ λλ¬κΉμ§ λ°λ³΅
κ° νμμ λ°λ μ 보:
1
2
3
4
5
6
ICMP Time Exceeded λ©μμ§:
βββββββββββββββββββββββββββββββββββββββ
β Type: 11 (Time Exceeded) β
β Code: 0 (TTL expired in transit) β
β Source IP: λΌμ°ν°μ IP μ£Όμ ββ μ€μ! β
βββββββββββββββββββββββββββββββββββββββ
Traceroute μ€ν μμ
λͺ λ Ήμ΄:
1
$ traceroute www.whitehouse.gov
μΆλ ₯ κ²°κ³Ό:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
traceroute to www.whitehouse.gov (204.102.114.49), 30 hops max, 40 byte packets
1 cory115-1-gw.EECS.Berkeley.EDU (128.32.48.1)
0.829 ms 0.660 ms 0.565 ms
2 cory-cr-1-1-soda-cr-1-2.EECS.Berkeley.EDU (169.229.59.233)
0.953 ms 0.857 ms 0.727 ms
3 soda-cr-1-1-soda-br-6-2.EECS.Berkeley.EDU (169.229.59.225)
1.461 ms 1.260 ms 1.137 ms
4 g3-8.inr-202-reccev.Berkeley.EDU (128.32.255.169)
1.402 ms 1.298 ms * ββββ Lost Reply (λΌμ°ν°κ° ICMP μ 보λ)
8 * * * ββββ μ΄ λΌμ°ν°λ ICMPλ₯Ό 보λ΄μ§ μλλ‘ μ€μ λ¨
12 a204-102-114-49.deploy.akamaitechnologies.com (204.102.114.49)
18.137 ms 14.905 ms 19.730 ms ββββ Final Hop (λͺ©μ μ§ λλ¬!)
κ° μ€μ μλ―Έ:
1
2
3
4
5
Hop # Hostname (IP Address) RTT1 RTT2 RTT3
β β β β β
β β βββββββ΄ββββββ΄β μΈ λ²μ μΈ‘μ κ°
β ββ ν΄λΉ λΌμ°ν°μ μ£Όμ
ββ ν μΉ΄μ΄νΈ (TTL κ°)
νΉμ νμ:
*: μλ΅ μμ (Timeout λλ ICMP μ°¨λ¨)- No PTR record: DNS μλ°©ν₯ μ‘°ν μ€ν¨
Ping & Traceroute Q&A
μμ£Ό 묻λ μ§λ¬Έ
Q: Pingμ λΌμ°ν°μ μν΄ ν¬μλ©λλμ?
A: β Yes! κ·Έλμ μΈν°λ· μ΄λμλ pingμ λ³΄λΌ μ μμ΅λλ€.
1
2
3
Client βββΊ Router 1 βββΊ Router 2 βββΊ Server
β β
βββββ Pingμ λͺ¨λ λΌμ°ν°λ₯Ό ν΅κ³Ό βββββββ
Q: λͺ¨λ μ₯λΉκ° Pingμ μλ΅νλμ?
A: β No! 보μμμ μ΄μ λ‘ λ§μ μ₯λΉκ° ICMPλ₯Ό μ°¨λ¨ν©λλ€.
1
2
3
4
μ°¨λ¨ μ΄μ :
1. 보μ: DoS 곡격 λ°©μ§
2. μ μ±
: λ€νΈμν¬ κ΅¬μ‘° μ¨κΉ
3. μ±λ₯: ICMP μ²λ¦¬ λΆλ΄ κ°μ
Q: λΌμ°ν°κ° λ€λ₯Έ μ₯λΉλ‘ κ°λ Pingμ ν¬μλ©νμ§ μμ μ μλμ?
A: β Yes! λΌμ°ν°λ λ€μκ³Ό κ°μ΄ μ€μ κ°λ₯:
- Ping μλ΅ μ ν¨ (μμ μ λν)
- Ping ν¬μλ© μ ν¨ (λ€λ₯Έ μ₯λΉλ‘ κ°λ)
ICMPv6 (IPv6μ© ICMP)
ICMPv4μμ μ°¨μ΄μ
πICMPv6: IPv6μ©μΌλ‘ νμ₯λ ICMP, ARPμ IGMP κΈ°λ₯κΉμ§ ν΅ν©
μ£Όμ λ³κ²½ μ¬ν:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ICMPv4 β ICMPv6 λ³ν:
β
μ μ§:
- Error message (Destination Unreachable, Time Exceeded λ±)
- Query request/response (Echo, Timestamp λ±)
β μ κ±°:
- μ¬μ©νμ§ μλ λ©μμ§ νμ
μμ
β μΆκ°:
- Neighbor Solicitation (NS) - ARP request μν
- Neighbor Advertisement (NA) - ARP response μν
- Packet Too Big (Type 2) - Fragmentation μ κ±°λ‘ μλ‘ μΆκ°
- Multicast Listener Discovery (MLD) - IGMP μν
ICMPv6 Neighbor Discovery
NS (Neighbor Solicitation):
1
2
3
4
5
6
ββββββββββββ¬βββββββ¬βββββββββββ¬βββββββββββββββββββββ
β Type=135 βCode=0β Checksum β Reserved β
ββββββββββββ΄βββββββ΄βββββββββββ΄βββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββ
β Target Address (128 bits) β
ββββββββββββββββββββββββββββββββββββββββββββββββββ
NA (Neighbor Advertisement):
1
2
3
4
5
6
ββββββββββββ¬βββββββ¬βββββββββββ¬βββ¬βββ¬βββ¬βββββββββββ
β Type=136 βCode=0β Checksum βR βS βO β Reserved β
ββββββββββββ΄βββββββ΄βββββββββββ΄βββ΄βββ΄βββ΄βββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββ
β Target Address (128 bits) β
ββββββββββββββββββββββββββββββββββββββββββββββββββ
Flags:
- R (Router): 1μ΄λ©΄ λΌμ°ν°κ° μ μ‘, 0μ΄λ©΄ νΈμ€νΈ
- S (Solicited): 1μ΄λ©΄ NSμ λν μλ΅
- O (Override): 1μ΄λ©΄ κΈ°μ‘΄ μΊμ μ 보 μ λ°μ΄νΈ
ICMPv6 μ£Όμ μ°¨μ΄
1. Fragmentation λ³κ²½:
1
2
3
4
5
6
IPv4: λΌμ°ν°κ° Fragment κ°λ₯
βββΊ Fragment κ΄λ ¨ ICMP λ©μμ§
IPv6: Fragmentation μμ!
βββΊ Packet Too Big (Type 2) λ©μμ§
MTUλ³΄λ€ ν° ν¨ν·μ 무쑰건 Drop + ICMP μ μ‘
2. Multicast μ§μ:
1
2
3
ICMPv6λ Multicastλ μ§μ:
- Neighbor Discoveryμ Multicast μ¬μ©
- Multicast Listener Discovery (MLD)
ICMPμ μ€μ νμ©
λ€νΈμν¬ μ§λ¨ μν¬νλ‘μ°
λ¬Έμ μ§λ¨ μμ:
1
2
3
4
5
6
7
8
9
10
11
12
13
1. PingμΌλ‘ μ°κ²°μ± νμΈ
βββΊ μ±κ³΅ β λ€νΈμν¬ μ μ
βββΊ μ€ν¨ β
2. Tracerouteλ‘ κ²½λ‘ νμΈ
βββΊ μ΄λμ λκΈ°λμ§ νμΈ
βββΊ λ¬Έμ λΌμ°ν° μλ³ β
3. PMTU Discoveryλ‘ MTU λ¬Έμ νμΈ
βββΊ Fragmentation μ΄μ ν΄κ²°
4. ICMP Error λ‘κ·Έ λΆμ
βββΊ κ·Όλ³Έ μμΈ νμ
보μ κ³ λ €μ¬ν
ICMP λ¨μ© λ°©μ§:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
곡격 μ ν:
1. ICMP Flood (Ping Flood)
βββΊ λλμ Echo Requestλ‘ κ³ΌλΆν
2. Smurf Attack
βββΊ Broadcast μ£Όμλ‘ Ping β μ¦ν 곡격
3. ICMP Redirect μ€νΈν
βββΊ μ
μμ μΈ κ²½λ‘ λ³κ²½
λμ:
β
Rate Limiting: ICMP λ©μμ§ μλ μ ν
β
Filtering: λΆνμν ICMP νμ
μ°¨λ¨
β
Validation: Source IP κ²μ¦
μ 리
ICMPμ ν΅μ¬ μν
| κΈ°λ₯ | μ€λͺ | λν λ©μμ§ |
|---|---|---|
| Error Reporting | IP μ μ‘ μ€ λ°μν λ¬Έμ λ³΄κ³ | Type 3, 11, 12 |
| Diagnostics | λ€νΈμν¬ μ°κ²° λ° κ²½λ‘ μ§λ¨ | Ping, Traceroute |
| Path Discovery | MTU λ° κ²½λ‘ μ 보 νμ | PMTU Discovery |
| Control | λΌμ°ν μ΅μ ν λ° μ μ΄ | Redirect |
μ£Όμ ICMP λ©μμ§ μμ½
| Type | μ΄λ¦ | μ©λ | ν΅μ¬ νμ© |
|---|---|---|---|
| 0/8 | Echo Reply/Request | μ°κ²°μ± ν μ€νΈ | Ping |
| 3 | Destination Unreachable | μ λ¬ μ€ν¨ μλ¦Ό | λλ²κΉ |
| 5 | Redirect | κ²½λ‘ μ΅μ ν | λΌμ°ν ν μ΄λΈ μ λ°μ΄νΈ |
| 11 | Time Exceeded | TTL λ§λ£ | Traceroute |
ICMPμ ν΅μ¬: IPμ Best Effortλ₯Ό 보μνμ¬ λ€νΈμν¬λ₯Ό μ§λ¨ κ°λ₯νκ³ λλ²κΉ κ°λ₯νκ² λ§λλ νμ νλ‘ν μ½!
ICMP μμ΄λ λΆκ°λ₯ν κ²λ€:
- β PingμΌλ‘ μ°κ²° νμΈ
- β Tracerouteλ‘ κ²½λ‘ μΆμ
- β PMTU Discoveryλ‘ μ΅μ ν¨ν· ν¬κΈ° κ²°μ
- β μλ¬ λ°μ μ μμΈ νμ