What is the purpose of ICMP messages?

What is the purpose of ICMP messages?
to inform routers about network topology changes
to ensure the delivery of an IP packet
to monitor the process of a domain name to IP address resolution
to provide feedback of IP packet transmissions

ooo