죽은 IP Datagram 중에 일부를 에러 메세지에 포함시켜서 보낸다. 그 이유는 Source에게 전달 중에 실패한 부분(특정 데이터그램 죽음)을 알려서 Source가 그 문제를 해결할 수 있게 해주기 때문이다. (Post-Mortem이라 한다.) 해당 메세지에는 Transport Port Numbers들이 포함되어 있다. (위에서 말했지만 Source가 문제 해결이 가능할 경우에만 보낸다)
위 그림에서 보면, 라우터 R2에서 생성한 ICMP Error 메세지가 만약에 R1에서 죽었다고 한다면, 죽은 것에 대한 ICMP Message를 생성하지 않는다. (이유는, 에러의 에러의 에러 메세지를 만드는 것을 생각해 보면 된다. 복잡하지 않은가?)
Checksum Error에 대한 메세지를 만들지 않는다.
→ Source가 해결할 수 있는 문제가 아니기 때문이다.
Destination Address가 Multicast/Broadcast 인 경우에 대한 메세지를 만들지 않는다
→ Source가 Broadcast로 패킷을 보냈을 경우 Source가 받게되는 패킷의 양과 그만큼 다른 라우터들의 손해를 생각해보면 된다.
0.0.0.0 (From "I")에 대한 메세지를 만들지 않는다.
IP Fragements 중에서 첫 번째 것에 대한 메세지만 만든다.
→ 첫 번째 것에만 TCP Header가 있기 때문이다. (위에서 언급했지만 Post-Mortem을 위해서 Transport Port Numbers를 메세지에 포함시켜야 하는데, 그것은 오직 IP Datagram 의 Fragments 중에서 첫 번째에만 있기 때문.)