Book/COMPUTER NETWORKING A TOP-DOWN-APPROACH

5.6 ICMP: The Internet Control Message Protocol

S0LL 2024. 12. 3. 19:28

ICMP의 기본 개념

 

1. ICMP의 역할:

ICMP는 호스트와 라우터가 네트워크 계층 정보를 서로 교환하기 위해 사용된다.

주로 에러 보고 진단 목적으로 사용된다.

예: HTTP 요청 중 “Destination Host Unreachable” 오류 메시지가 발생했을 때, 이 메시지는 ICMP를 통해 전달된다.

2. ICMP의 작동 방식:

ICMP 메시지는 IP 데이터그램 내에서 **페이로드(payload)**로 캡슐화되어 전송된다.

ICMP는 IP 프로토콜 상단에서 작동하며, TCP나 UDP와 동일한 방식으로 동작한다.

 

ICMP 메시지의 구조

 

ICMP 메시지는 두 가지 주요 필드를 포함한다:

1. Type 필드: 메시지의 종류를 나타낸다.

2. Code 필드: 같은 타입 내에서 메시지의 세부 정보를 제공.

 

또한, ICMP 메시지는 오류가 발생한 원래 IP 데이터그램의 처음 8바이트를 포함하여, 오류를 일으킨 데이터그램을 식별할 수 있도록 한다.

 

주요 ICMP 메시지 타입 (Figure 5.19 참조)

1. Echo Request (Type 8, Code 0):

ping 명령에서 사용된다.

요청이 전송되면, 대상 호스트는 Echo Reply(Type 0, Code 0)를 반환.

2. Destination Unreachable (Type 3):

데이터그램을 전달할 수 없는 경우 사용.

예:

Code 0: 네트워크에 도달할 수 없음.

Code 1: 호스트에 도달할 수 없음.

Code 3: 포트에 도달할 수 없음.

3. Source Quench (Type 4):

혼잡 제어를 위한 메시지.

현재는 TCP의 혼잡 제어 메커니즘으로 대체되어 거의 사용되지 않는다.

4. Time Exceeded (Type 11):

데이터그램의 TTL(Time-to-Live)이 0이 되었을 때 사용.

Traceroute 프로그램에서 사용.

5. Router Advertisement (Type 9)  Router Solicitation (Type 10):

호스트가 라우터를 찾거나, 라우터가 자신을 광고하는 데 사용.

 

ICMP의 실제 사용 사례

 

1. Ping:

네트워크 연결 상태를 확인하기 위한 도구.

Echo Request를 보내고, Echo Reply를 받는 방식으로 동작.

2. Traceroute:

출발지와 목적지 간 라우터의 경로를 추적.

TTL(Time-to-Live) 필드를 조정하여, 경유하는 각 라우터의 IP 주소와 RTT(Round-Trip Time)를 기록.

 

Traceroute의 작동 원리

 

1. 출발지 호스트는 TTL 값이 1인 패킷을 전송.

첫 번째 라우터는 TTL 값이 0이 되면, “Time Exceeded” 메시지를 반환.

2. 출발지 호스트는 TTL 값을 1씩 증가시키며 계속 패킷을 전송.

각 라우터에서 동일한 방식으로 Time Exceeded 메시지가 반환.

3. 목적지에 도달하면, “Port Unreachable” 메시지가 반환되어 추적이 종료.

 

ICMPv6의 추가 기능

 

IPv6에서는 ICMPv6가 사용되며, 다음과 같은 새로운 기능이 추가되었다:

Packet Too Big: 데이터그램이 경유하는 링크의 MTU를 초과할 때 사용.

Unrecognized IPv6 Options: 지원되지 않는 옵션을 처리할 때 사용.

 

ICMP는 네트워크의 문제를 진단하고 경로를 탐색하는 데 중요한 역할을 한다.