ICMP is the Internet Control Message Protocol. This protocol is specifically for handling control and error information between gateways and hosts on the Internet. IP stands for Internet Protocol, which forms the foundation for most Internet data transmissions.
Most people are horrified to find that the fundamental protocol used on the Internet is unreliable.
However, it is actually a feature that places the responsiblity for the guaranteed delivery of data on higher level protocols and removes any dependancy on the reliability of underlying hardware systems or transmission mediums. UDP stands for User Datagram Protocol. UDP is generally implemented on top of IP, and offers similar functionality and guarantees. TCP provides the basis for reliable transmission of data across the Internet by providing virtual circuits between peers, where data is guaranteed to be delivered in sequence and without loss or duplication. TCP also provides for Out of Band signalling which is essential to many of the higher level application protocols.