
ICMP(internet controll protocal) 프로토콜: 인터넷 제어 메시지 프로토콜(ICMP)로 .ICMP는 오류를 처리하고 IP 메시지를 제어한다. IP에는 오로지 패킷을 목적지에 도달시키기 위한 내용들로만 구성되어 있다. 따라서 정상적으로 목적지 호스트에 도달하는 경우에는 IP에서 통신이 성공하고 종료되므로 아무런 문제가 없다.
그러나, 만일 전달해야 할 호스트가 꺼져 있거나, 선이 단절된 경우와 같은 비정상적인 경우에 이 패킷 전달을 의뢰한 출발지 호스트에 이러한 사실을 알려야하지만, IP에는 그러한 에러에 대한 처리 방법이 명시되어있지 않다.
이러한 IP의 부족한 점을 메꾸기 위하여 사용되는 것이 바로 ICMP 프로토콜이다.

구조 요약

Type: 에러 타입
Code: 상세 에러
CheckSum: 에러 체크
Data section: 오류난 곳의 IP 커버 + TCP의 앞 8byte
ICMP는 에러메세지를 항상 송신 컴퓨터에 보고한다.


received Datagram의 IP header: 어느 IP 주소에 보내려던 패킷인지 알 수 있다.
received Datagram의 8byte: post, sequence(TCP 헤더의 앞 8byte)로 어떤 어플리케이션에 전달하려던 패킷인지 알 수 있다.
sent IP Datagram의 ICMP header: 무슨 에러인지 알 수 있다.
sent IP Datagram의 IP header: 어디에서 에러가 났는지 알 수 있다.
error type3 - code 0 ~ 15
목적지를 도달 할 수 없는 경우
ㅇ 네트워크 도달불가(Network Unreachable) : code 0 - 목적지 네트워크로 가는 경로 없음 . 목적지 주소가 라우팅 테이블에 없을 경우 및 디폴트 라우트가 없을 경우
ㅇ 호스트 도달불가(Host Unreachable) : code 1 - 최종 목적지 호스트에 도달할 수 없을 때, - 호스트 또는 라우터에서 생성됨
ㅇ 프로토콜 도달불가(Protocol Unreachable) : code 2 - 목적지 시스템에서 특정 프로토콜을 사용할 수 없다는 사실을 통보
ㅇ 포트 도달불가(Port Ureachable) : code 3 - 목적지 호스트에서 특정 포트번호가 사용될 수 없음을 알림
ㅇ 단편화 필요하지만 DF 설정됨(Fragmentation Required but DF bit is set) : code 4 – IP 데이터그램이 MTU가 작은 네트워크를 통과하려면 단편화되야 하는데, 라우터는 DF 비트가 셋팅된 것을 확인하고 그냥 폐기하고 송신측에 이를 통보
ㅇ 목적지와의 통신이 관리적으로 금지됨 : code 13 - 어떤 이유든지 목적지가 통신을 원하지 않을 경우 - 예를들면, 방화벽은 운용 정책에 위배되는 데이터그램을 의도적으로 폐기함 . 이때, 이 오류메세지를 원천지에 보낼수도 아닐수도 있음
error type4 code - 0
Source quenchs는 전화 접속 서버에 혼잡이 발생하였다고 송신 시스템에 알리고 전송속도를 늦출 것을 요구한다. Source Quench는 집중적인 트래픽의 흐름을 제어하는 데 효율적인 도구이다.
(송신자에게 보낸다고 해서 network layer에서 해결하는게 아님 TCP에서 알아서함)
error type 11 code - 0 or 1
TTL이 초과됬을 때 error code 0,
fragmentation된 패킷이 모두 도착하지 않았을 때 error code 1을 송신자에게 보냄
error type 12 code - 0 or 1
IP 헤더에 이상한 값이 있을 때도 source한테 알려주고 버림