ICMPv4 | Internet Control Message Protocol Version 4
- IPv4의 오류 보고 및 오류 수정 메커니즘이 없기 때문에 ICMPv4가 설계 되었다.
- 또한 IP 프로토콜은 호스트 및 관리 쿼리 메커니즘도 없다.
이 두가지 결함을 보완하기 위해 ICMPv4가 설계되었다.
즉, 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송 받는 데 주로 쓰인다.
Messages | ICMP의 메시지
ICMP 메시지는 오류 보고 메시지와 쿼리 메시지로 나뉜다.
오류 보고 메시지는 라우터 또는 호스트(목적지)가 IP패킷을 처리할 때 발생할 수 있는 문제를 보고한다.
쿼리 메시지는 쌍으로 발생하며 호스트 또는 네트워크 관리자가 라우터 또는 다른 호스트에서 특정 정보를 얻을 수 있도록 돕는다.
예를 들어) 노드는 이웃을 발견할 수 있다. 또한 호스트는 네트워크 상의 라우터를 발견하고 배울 수 있으며, 라우터는 노드가 메시지를 다시 보낼 수 있도록 도와줄 수 있다.
ICMP 프로토콜의 구조
Type, Code, Checksum, Rest of the header 필드로 구성 되어 있다.
Rest of the header는 Type에 따라 여러 내용이 쓰여지는 필드이다.
- 필요에 따라서 일부 혹은 전체가 사용 될 수 있다.
08 And 00 : 08이 요청을 하고, 00이 응답을 한다.
03 : 목적지에 도달할 수 없습니다. | 경로상 문제
11 : 요청시간이 만료되었습니다. | 상대방 문제
- 오류 보고/질의에 따라 들어가는 내용이 달라진다.
- 오류 보고 메시지일 경우, Data Section에는 폐기된 패킷의 IP-Header와 메시지의 초반 8byte 값이 첨부된다.
- Source는 Data Section의 내용을 보고 자신에게 발생한 문제를 진단할 수 있다.
*Data Section = Payload
Error Reporting Messages | 오류 보고 메시지
목적지 도착 불가능 | Destination Unreachable (03)
라우터가 데이터그램을 라우팅 할 수 없거나 호스트가 데이터그램을 전달할 수 없을 때, 데이터그램을 폐기한 후에 대상 도달 불가능 메시지를 송신자에게 다시 보낸다.
Source Quench | 출발지 억제 메시지 (04) ≒ Choke
흐름 제어의 부족 해결한다.
라우터나 목적지 호스트에 혼잡 상황이 발생하면 데이터그램을 송신한 출발지 호스트에게 출발지 억제 메시지 Source-Quench 메시지를 전송다.
- 데이터그램이 폐기 되었음을 송신자에게 알림
- 경로 어딘가에서 송신자 정체를 경고함
- *출발지 억제 메시지를 수신한 출발지 호스트는 출발지 억제 메시지 Source-Quench가 수신되지 않을 때까지 데이터그램 전송 속도를 늦춘다.
Time exceeded | 시간 만료 (11)
IP 데이터그램의 TTL(Time-to-live) 값이 0이 될 때 라우터는 데이터그램을 폐기하고 해당 데이터그램을 송신한 호스트에게 시간 초과(만료) 메시지를 전송한다.
Parameter problem | 매개 변수 문제 (12)
IP 데이터그램의 헤더 정보의 문제로 인해 데이터그램을 처리할 수 없는 경우 출발지 호스트에게 데이터 그램 헤더의 어떤 매개변수에 문제가 있는지 통보한다.
Redurect | 방향 재지정 메시지 (05)
호스트의 데이터그램을 수신한 라우터가 더 좋은 경로를 알고 있으면 ICMP 방향 재지정 메시지 전송한다.
다른 라우터로 데이터그램 전송을 유도한다.
Query Messages | 질의 메시지
Echo request and reply | 에코 요청 또는 응답 : 핑(Ping) 프로그램 (08 and 00)
진단을 목적으로 사용
두 시스템이 IP수준에서 서로 통신할 수 있는지 여부를 결정한다.
에코 요청 메시지의 식별자와 순서 번호는 에코 응답 메시지에 동일하게 복사한다.
Ex.) ping 클라이언트 프로그램은 현재 시간 정보가 포함, ping 서버는 이 정보를 에코 응답 메시지의 데이터 필드에 동일하게 복사하여 다시 ping 클라이언트에게 전달한다.
Timestamp request and reply | 타임스탬프 요청 및 응답 (13 and 14)
왕복 시간을 결정한다.
두 시스템의 시계 동기화(오차 계산)
Address-mask request and reply | 주소 마스크 요청 및 회신 (17 and 18)
호스트의 서브넷 마스크를 식별하는 데 사용되는 메시지이다.
Ex.) 호스트가 IP주소 192;168.1.25를 알고 있지만 해당 호스트의 마스크를 모르는 경우 LAN 네트워크의 라우터에게 주소 마스크 요청 메시지를 보내서 호스트의 마스크를 알아내게 됩니다.
Router solicitation and advertisement | 라우터 요청 및 광고 (10 and 9)
라우터가 활성화 되고 작동하는지 요청한다.
*호스트가 같은 네트워크의 라우터에 관한 정보를 얻기 위해 라우터 요청 메시지 방송
*라우터 요청 메시지를 받은 라우터는 라우터 광고 메시지를 사용하여 자신의 주소 정보를 전송한다.