Internet Control Message Protocol (viết tắt là ICMP), là một giao thức của gói Internet Protocol. Giao thức này được các thiết bị mạng như router dùng để gửi đi các thông báo lỗi chỉ ra một dịch vụ có tồn tại hay không, hoặc một địa chỉ host hay router có tồn tại hay không. ICMP cũng có thể được sử dụng để chuyển tiếp các thông điệp truy vấn.[1] Giao thức này được đánh số 1.[2] ICMP [3] khác với các giao thức vận chuyển như TCP và UDP ở chỗ nó không thường được sử dụng để trao đổi dữ liệu giữa các hệ thống, cũng không thường xuyên được sử dụng bởi các ứng dụng mạng của người dùng cuối (với ngoại lệ của một số công cụ chẩn đoán như ping và traceroute).
Nó tuân theo các nguyên tắc sau đây:
ICMP sử dụng IP để làm cơ sở thông tin liên lạc bằng cách giải thích chính nó như là một lớp giao thức cao hơn, d. h. thông điệp ICMP được đóng gói trong các gói tin IP.
ICMP nhận ra một số tình trạng lỗi, nhưng không làm IP trở thành một giao thức đáng tin cậy.
ICMP phân tích sai sót trong mỗi gói IP, trừ các đối tượng mà mang một thông điệp ICMP.
Thông điệp ICMP không được gửi để trả lời các gói tin gởi tới các điểm đến mà có các địa chỉ multicast hoặc broadcast.
Thông điệp ICMP chỉ trả lời một địa chỉ IP định rõ.
Internet Control Message Protocol có thể được sử dụng cho một tấn công từ chối dịch vụ (DoS) hoặc tấn công từ chối dịch vụ phân tán (DDoS) vào một thiết bị. Ngoài ra, một thiết bị có thể bị lạm dụng bởi một kẻ tấn công như một phần của một cuộc tấn công DDoS tới một thiết bị thứ ba. Các phương pháp tấn công điển hình là tấn công Smurf, tấn công Flooding hoặc Ping of Death. Một cách khác để lợi dụng giao thức ICMP là việc sử dụng nó để truyền dữ liệu trái phép bằng phương pháp kết nối đường hầm ICMP.