ICMP - это протокол управления, означающий, что он предназначен не для переноса данных приложения, а скорее для информации о состоянии самой сети. Наиболее известным примером ICMP на практике является утилита ping, которая использует ICMP для проверки удаленных хостов на предмет отклика и общего времени обхода тестовых сообщений.
И протокол управления передачей (TCP), и протокол пользовательских дейтаграмм (UDP) являются транспортными протоколами, они используются для передачи фактических данных. Основное различие между TCP и UDP состоит в том, что TCP является протоколом, ориентированным на установление соединения, он гарантирует, что все отправленные пакеты достигнут пункта назначения в правильном порядке.
UDP, с другой стороны, является протоколом без установления соединения. Связь ориентирована на дейтаграммы, поэтому целостность гарантируется только для одной дейтаграммы. Датаграммы достигают пункта назначения и могут прибыть из строя или не прибыть вообще. Обычно он используется для связи в реальном времени, где небольшой процент потери пакетов предпочтительнее, чем издержки соединения TCP.