지금까지 IP 주소의 신뢰할 수 없는 전송가 비연결형 전송 특성을 해결하기 위해 전송 계층의 TCP 등을 사용해 온다고 하였는데, 네트워크 계층에서 이 문제를 보완하기 위한 프로토콜로 ICMP가 있다.
ICMP 란?
Internet Control Message Protocol의 약자로 IP 패킷의 전송 과정에 대한 피드백 메시지를 얻기 위해 사용하는 프토콜이다.
피드백 메시지의 종류로는
- 전송 과정에서 발생한 문제 상황에 대한 오류 보고
- 네트워크에 대한 진단 정보(네트워크상의 정보 제공)
이렇게 2종류가 있다.
ICMP의 피드백 메시지는 타입과 코드로 정의되며, 타입과 코드는 ICMP 패킷 헤더에 포함되어 있는 정보이다. ICMP 패킷 헤더의 타입 필드에는 ICMP 메시지의 유형이 번호로 명시되고, 코드 필드에는 구체적인 메시지 내용이 번호로 명시된다.
만약 패킷의 TTL 필드가 0이 되면 라우터는 송신지 호스트에 시간 초과 타입 - TTL 만료 코드
가 담긴 ICMP 패킷을 전송한다.
네트워크 상의 정보 제공을 위한 ICMP
ping
이나 tracert
같은 명령어들이 ICMP 기반의 명령어들이다.
ICMP는 신뢰성을 보장하지 못한다
ICMP의 유의할 점은 ICMP 프로토콜이 IP의 신뢰성을 보장하는 프로토콜이 아니라는 점이다. ICMP는 그저 IP의 신뢰할 수 없는 특정을 보완하기 위한 도구 역할만 할뿐 여전히 IP 패킷이 수신지까지 도착하지 못하거나 ICMP 패킷 자체가 송신지까지 되돌아 오지 못할 수도 있다.
신뢰성을 완전히 보장하기 위해서는 전송 계층의 프로토콜(TCP 등)이 필요하다.
정리
- ICMP은 네트워크 계층에서 IP의 신뢰성 문제를 보완하기 위한 프로토콜이다.
타입(type) + 코드(code)
로 구성된 패킷을 피드백 메시지로 사용하여 동작한다.- IP의 신뢰성 문제를 완전히 해결하는 방법은 아니므로 완전한 신뢰성 보장을 위해서는 전송 계층의 프토로콜이 필요하다.