ICMP란?
네트워크 계층에서 동작하는 프로토콜로, 네트워크 제어 목적 (네트워크 진단 및 오류 확인) 으로 사용된다. 3계층의 IP 프로토콜은 error-reporting 과 error-correcting 기능을 제공하지 않기에 이를 보완하기 위해 ICMP 프로토콜을 사용한다.
* 주의 *
ICMP 패킷 또한 error-correcting 기능을 제공하지 않으며, 단순 오류 보고 기능만 제공한다.
ICMP Message 캡슐화
ICMP Message는 3계층 IP Packet에 포함되어 2계층 Frame으로 최종 Encapsulation 된다.
ICMP Message의 구조
일반적인 ICMP Message는 8Bytes의 Header와 Variable Length의 Data Section 으로 이루어져 있다.
ICMP Type 필드
ICMP 메시지의 타입을 정의하는 필드이다. 크게 Error-reporting Messages 와 Query Messages 로 구분할 수 있다.
1) Error-reporting Messages
- Destination unreachable (3) : 패킷이 목적지까지 도달하지 못할 때 전송되는 Message 이다.
- Source quench (4) : 트래픽 폭주 시 (Congestion) 에 Router는 우선순위가 낮은 패킷을 Drop 하므로 이를 해결하기 위한 Message 이다.
- Time exceeded (11) : 해당 Message 가 전송되는 이유로는 두 가지 경우가 있다. 첫째로는 TTL 값이 0이 되었을 때, 패킷을 Drop 한 후 전송된다. 둘째는 패킷 재조립 시 단편 조각들이 재시간에 전부 도착하지 못하여 Time-out 되었을 때, 전송된다.
- Parameter problems (12) : IP Header에 이상이 생겼을 때 전송되는 Message 이다.
- Redirection (5) : 최선의 라우터 경로를 안내하기 위한 Message 이다.
2) Query Messages
- Echo request & Echo reply (8 & 0) : 목적지 네트워크의 상태를 확인하기 위해 전송되는 Message 이다.
- Timestamp request or reply (13 & 14) : 패킷 왕복 시간을 계산하기 위해 사용되는 Message 이다,
ICMP Code 필드
각 ICMP Type 에 속하는 상태별로, 값을 정의한 필드이다.
1) Destination unreachable (0 ~ 15)
- Code 2 : Protocol Unreachable, 목적지의 프로토콜이 정상 작동하지 않는 상태이다.
- Code 3 : Port Unreachable, 목적지의 프로세스가 실행 중이지 않은 상태이다.
-> Code 2, 3 은 Destination Host 에 의해 생성된 오류 메시지이다.
- etc. : Router에 의해 생성된 오류 메세지이다.
2) Source quench (0)
- Destination host 및 router 가 Congestion 상태일 때, 패킷을 무시하거나 버릴 때마다 발생하는 메시지이다.
- Congestion 문제가 해결될 때 까지, Source 에서는 Datagram 의 전송속도를 늦춰야 한다.
- IP 프로토콜은 Best-effort 방식으로 Flow-control 흐름제어, Congestion-control 혼잡 제어 기능을 제공하지 않으므로, Source Quench 메시지를 사용한다.
3) Time exceeded (0 or 1)
- Code 0 : TTL 값이 0이 되어, Packet을 Drop 하고 Source에 알리는 메시지이다. (Router에 의해 생성)
- Code 1 : Packet 재조립 시, 단편 조각들이 재시간에 도착하지 않아 버려지는 경우 Original source에 알리는 메시지이다. (Destination host에 의해 생성)
4) Parameter-problem (0 or 1)
- IP 헤더에 이상이 감지되었을 때 전송되는 메시지로, 잘못된 정보가 있는 위치를 가르키는 Pointer 필드가 존재한다.
- code 0 : Header field 중 하나가, error 또는 ambiguity (모호) 인 경우에 사용한다. (Pointer 필드 사용)
- code 1 : 요구되는 Header option이 missing 된 경우 사용한다. (Pointer 필드를 사용하지 않음)
5) Rederection (0 ~ 3)
- Routing Table의 Update와 크기는 Redirection Message를 통해 이루어진다.
- 동일한 네트워크 내 (LAN) 에서 Router -> Host 로 전달되는 메시지로, 최적의 라우팅 경로를 위해 사용된다.
6) Echo-request & Echo reply (0)
- 통신하고자 하는 상대 측의 IP Protocol 을 체크하기 위해 Network Manager 가 사용하거나, 상대 측 Host 까지의 도달 가능성을 테스트하기 위해 사용 (ping 명령어) 하는 메시지이다.
- Echo-request 메시지는 Host, Router에 의해 생성되며 Echo-reply 메시지는 Request 메시지를 수신한 Destination Host 및 Router에 의해 생성된다.
7) Timestamp-request & Timestamp-reply (0)
- IP 패킷이 왕복하는 시간 (RTT, Round Trip Time) 을 계산하거나, 시스템 간의 시간을 동기화하는 목적으로 사용된다.
- 두 시스템의 시간이 일치하지 않더라도, 왕복 편도 시간을 통해 시간을 동기화할 수 있다.
- Original timestamp : Source 전송 시점
- Receive timestamp : Destination 수신 시점
- Transmit timestamp : Destination 에서 Source 로 재전송하는 시점
Source 에서 Destination 까지 Request 패킷 전송에 소요된 시간 : Receive timestamp - Original timestamp
Destination 에서 Source 에 Reply 패킷 재전송에 소요된 시간 : Source 에 되돌아온 시점 - Transmit timestamp
-> 왕복 시간 : 위 두 값의 총합
Source 와 Destination 의 시간 차 : Receive timestamp - (original timestamp + one-way 편도시간)
ping, traceroute 명령어가 해당 Timestamp ICMP Message 를 사용한다.
ICMP Data Section 필드
오류가 발생한 IP 패킷의 Header 전체 사본과 오류 메시지를 발생시킨 IP 패킷의 첫 8바이트를 포함하고 있다.
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)
'CISCO Network > Network Theory' 카테고리의 다른 글
[Network / 네트워크] HDLC (High-level Data-Link Control) 프로토콜이란? (0) | 2024.02.03 |
---|---|
[Network / 네트워크] CDP (Cisco Discovery Protocol) 이란? (0) | 2024.02.03 |
[Network / 네트워크] Etherchannel 이란? (0) | 2024.01.23 |
[Network / 네트워크] VTP (VLAN Trunking Protocol) (0) | 2023.11.17 |
[CISCO / 시스코 실습] 라우터 Router 구성 (시스코 IOS 명령어) (0) | 2023.11.15 |