Khi truyền tin giữa các thiết bị từ đích đến nguồn, việc xảy ra lỗi là không thể tránh khỏi. Vậy khi xảy ra lỗi làm thế nào mà thiết bị gửi tin biết được có lỗi xảy ra? Đó là nhờ giao thức Internet Control Message Protocol hay ICMP. Trong bài viết này, ta sẽ đi tìm hiểu xem giao thức ICMP là gì? Tác dụng và cách thức nó hoạt động!
Giao thức ICMP là gì?
Giao thức ICMP là một giao thức hỗ trợ trong bộ giao thức IP với chức năng để gửi thông báo kiểm soát và thông báo lỗi giữa các thiết bị trong mạng. ICMP thường được sử dụng trong quá trình kiểm tra kết nối, chẩn đoán sự cố, và truyền tải thông báo về các vấn đề liên quan đến giao tiếp mạng.
Một trong những trường hợp phổ biến sử dụng ICMP là khi bạn sử dụng lệnh “ping” để kiểm tra xem một thiết bị có thể truy cập được hay không, và đo đạc thời gian mà một gói tin mất đi và trở lại (round-trip time).
ICMP cũng được sử dụng để thông báo lỗi khi có vấn đề xảy ra trong quá trình truyền thông mạng, như khi một đích không thể đạt được hoặc khi một dịch vụ không khả dụng.
Giao thức ICMP dùng để làm gì?
- Kiểm tra Kết nối (Ping): ICMP được sử dụng để kiểm tra tính liên thông giữa hai thiết bị trong mạng. Lệnh ping là một ví dụ phổ biến, trong đó một thiết bị gửi gói tin ICMP đến một đích và chờ đợi phản hồi. Thời gian và trạng thái của gói tin được sử dụng để đánh giá chất lượng kết nối.
- Thông báo lỗi (Error Reporting): ICMP được sử dụng để thông báo về các sự cố mạng, bao gồm việc báo cáo lỗi khi không thể gửi gói tin đến đích hoặc khi một dịch vụ không khả dụng.
- Chuyển hướng (Redirect): ICMP có thể được sử dụng để chuyển hướng gói tin theo một định tuyến khác khi cần thiết.
- Quảng bá (Broadcast): ICMP được sử dụng để gửi thông điệp đến tất cả các thiết bị trong mạng, chẳng hạn như khi một mạng thay đổi.
- ICMP có thể được sử dụng để báo cáo thông tin trạng thái của một thiết bị hoặc mạng.
Đặc điểm giao thức ICMP
ICMP là giao thức quan trọng nhưng nó không được sử dụng với các giao thức lớp vận chuyển nào như TCP hoặc UDP. Vì nó là giao thức không kết nối. Do đó, nó không cần thiết lập kết nối với thiết bị đích trước khi gửi tin nhắn.
Gói tin ICMP truyền dưới dạng Datagram chứa tiêu đề IP với dữ liệu ICMP. Nó là một dữ liệu độc lập. Mỗi gói tin ICMP chứa một trường checksum, giúp đảm bảo tính toàn vẹn của dữ liệu trong gói tin. Quy trình này giúp người nhận xác minh xem gói tin đã bị hỏng hay không.
ICMP sử dụng các loại gói tin để thực hiện các chức năng khác nhau. Ví dụ bao gồm Echo Request/Reply (được sử dụng trong lệnh “ping”), Destination Unreachable (khi một đích không thể đạt được), và Time Exceeded (khi một gói tin vượt quá thời gian cho phép).
Cách giao thức ICMP hoạt động
ICMP hoạt động dựa trên việc chèn các gói tin vào trong gói tin IP và thực hiện các chức năng quan trọng như kiểm tra tính liên thông, báo cáo lỗi và thực hiện các chức năng khác liên quan đến kiểm soát mạng.
Khi một thiết bị muốn kiểm tra tính liên thông đến một thiết bị khác, nó sử dụng gói tin ICMP loại “Echo Request.” Gói tin này chứa một đoạn dữ liệu và được gửi đến đích mong muốn. Thiết bị đích nhận được gói tin và gửi lại một gói tin “Echo Reply” với cùng nội dung dữ liệu. Quá trình này tạo ra một kiểm tra đơn giản nhưng hiệu quả về tính liên thông giữa hai thiết bị.
Khi ICMP được dùng để thông báo lỗi trong mạng. Nếu một đích không thể đạt được hoặc có vấn đề xảy ra trong quá trình truyền thông, thiết bị gửi một gói tin ICMP loại “Destination Unreachable” hoặc “Time Exceeded” để báo cáo về tình trạng lỗi.
Cấu trúc gói tin ICMP
Một gói tin ICMP có chiều dài 32 bit với 4 trường như sau:
1. Kiểu (Type):
Nó có độ dài 8 bit nằm ở vị trí đầu tiên của gói ICMP và cho biết loại gói tin ICMP. Có các loại hay gặp sau:
- 0 – Echo Reply (Echo Reply)
- 3 – Destination Unreachable (Không thể đạt được đích)
- 8 – Echo Request (Yêu cầu Echo)
- 11 – Time Exceeded (Vượt quá thời gian)
- 13 – Timestamp Request (Yêu cầu Timestamp)
- 14 – Timestamp Reply (Phản hồi Timestamp)
- 15 – Information Request (Yêu cầu Thông tin)
- 16 – Information Reply (Phản hồi Thông tin)
2. Mã (Code):
Trường này cũng có độ dài 8 Bit và cho biết thông tin chi tiết hơn về gói tin IPC. Trường này thường có giá trị từ 0, 1, 2, 3, 4, 5. Nhưng còn tùy thuộc vào từng loại tin ICMP mà có ý nghĩa khác nhau.
Ví dụ:
- Code 1 của Type 3 là: Host Unreachable (Máy chủ không thể đạt được).
- Code 1 của Type 12 là: Missing a required option (Thiếu một tùy chọn yêu cầu).
3. Checksum:
Trường này có chiều dài 16 Bit và đóng vai trò quan trọng trong gói tin ICMP dùng để kiểm tra xem gói tin có bị hỏng trong quá trình truyền hay không? Giá trị của trường “Checksum” được tính dựa trên thuật toán kiểm tra CRC (Cyclic Redundancy Check).
Khi gói tin được gửi, trình gửi tính toán giá trị checksum bằng cách sử dụng một phép toán số học phức tạp trên tất cả các bit trong gói tin, bao gồm cả trường “Checksum” ban đầu. Giá trị checksum được tính và sau đó được gán vào trường “Checksum” trong gói tin.
Khi gói tin đến đích, người nhận tính toán lại giá trị checksum bằng cách sử dụng cùng một thuật toán. Nếu giá trị checksum tính toán được khớp với giá trị trong trường “Checksum,” gói tin được coi là nguyên vẹn. Ngược lại, nếu có sự không khớp, gói tin được coi là bị hỏng và có thể bị loại bỏ hoặc xử lý tùy thuộc vào ứng dụng cụ thể.
4. Dữ Liệu (Data):
Trường này phụ thuộc vào từng loại tin ICMP mới có. Ví dụ, trong trường hợp gói tin “Echo Request/Reply” (ping), phần dữ liệu chứa thông điệp mà người gửi muốn kiểm tra tính liên thông.
Những hạn chế của giao thức ICMP
ICMP có thể bị lạm dụng để thực hiện các cuộc tấn công mạng, bao gồm cuộc tấn công DDoS (Distributed Denial of Service) bằng cách gửi một lượng lớn các gói tin ICMP đến một đích, gây quá tải và làm ngưng trệ dịch vụ.
Các gói tin ICMP thường chứa thông tin quan trọng về cấu hình mạng và thiết bị. Do đó, chúng có thể bị tận dụng để thực hiện các tấn công theo dõi hoặc làm lộ thông tin nhạy cảm.
Để ngăn chặn những hạn chế của giao thức ICMP ta có thể sử dụng:
- Sử dụng tường lửa (firewall) hoặc danh sách kiểm soát truy cập (ACLs) để kiểm soát và lọc gói tin ICMP. Bạn có thể chỉ cho phép các loại gói tin ICMP cụ thể cần thiết cho môi trường mạng của bạn và chặn các loại không mong muốn.
- Sử dụng các kỹ thuật giới hạn tần suất (rate limiting) để đảm bảo rằng lượng gói tin ICMP không vượt quá giới hạn nào đó trong một khoảng thời gian. Điều này có thể giảm nguy cơ tấn công DDoS từ giao thức ICMP.
- ICMP Redirects có thể được sử dụng để thực hiện các cuộc tấn công định tuyến. Nếu không cần thiết, bạn có thể chặn hoặc giảm thiểu sử dụng ICMP Redirects.
- Sử dụng VLANs để tách mạng thành các phân đoạn khác nhau và giảm thiểu khả năng tấn công từ bên trong mạng.
Mong rằng qua bài viết này bạn đã hiểu rõ cách thức hoạt động và vai trò của giao thức ICMP trong mạng. Nếu còn thắc mắc bất kỳ vấn đề gì? Hãy để lại dưới phần bình luận để nhận được giải đáp từ mình nhanh nhất!
Thông Tin Về Tác Giả
Nguyễn Thành Hợp là một chuyên gia về lĩnh vực thiết bị mạng, viễn thông gần 10 năm kinh nghiệm với nhiều chứng chỉ chất lượng như CCNA 200-301, CCNP, CCDA, CCDP,... do Cisco cung cấp. Sở thích cá nhân là khám phá những kiến thức mới mẻ về công nghệ nói chung và đặc biệt là liên quan đến lĩnh vực mạng!