* ICMP *
- 패킷의 에러를 리포트하기 위해 사용됨
- 쿼리 관리를 위해 사용됨
* Error-Reporting *
- 에러 수정을 하는것은 아님
- original source에 대한 에러 메세지만 리포트함
- 모든 에러메세지는 original 데이터그램의 헤더와 데이터의 첫 8바이트를 포함
- 8바이트의 데이터는 전송 계층의 포트 번호와 시퀀스 번호를 담고 있음(UDP, TCP)
- Destination Unreachable : 라우터가 데이터그램을 라우트할 수 없거나 호스트가 데이터그램을 전달할 수 없을때, 데이터그램은 버려지고 해당 메세지 전송
- Source Quench : congestion에 의해 데이터그램을 폐기했을 때 해당 메세지 전송(일종의 흐름제어 추가)
- Time Exceeded : time-to-live 필드가 0일때 데이터그램 폐기 후 해당 메세지 전송
목적지에서 시간 내에 모든 조각을 받지 못해도 폐기 후 메세지 전송
- Parameter Problems : 모호성 또는 헤더 부분의 손실에 의해 전송됨
- Redirection : 라우터가 같은 로컬 네트워크에 있는 호스트에게 전달하는 메세지
* Query *
- 네트워크 문제를 진단
- Echo Request and Reply : ping을 사용해 도달가능성 테스트
- Timestamp Request and Reply : 왕복시간 결정하는데 사용(clock이 동기화돼있지 않아도 사용 가능)
- Address mask Request and Reply : 네트워크 주소, 호스트 ID, 서브네트워크 주소를 찾는데 사용. 시작 시 디스크가 없는 스테이션에는 마스킹이 필요
- Router Solicitation and Advertisement : 다른 네트워크에 있는 호스트에게 데이터를 보내고싶을 때 메세지를 solicitation함. 해당 메세지를 받은 라우터는 정보를 advertisement함.
* Checksum *
- 헤더와 데이터 전체에 대해 계산
* ICMP design *
- 네트워크에서 들어온 ICMP 패킷은 인풋 모듈에서 처리
- 오류메세지는 상위 계층에 전달
- 응답 메시지 (예: Echo Reply)는 요청을 보낸 애플리케이션으로 반환
- 상위 계층이나 IP 계층에서 ICMP 메시지를 생성하고자 하는 요청이 발생하면, 출력 모듈이 메시지를 생성