Internet Control Message Protocol(ICMP) là một giao thức lớp thứ ba(Network layer) trong mô hình bảy lớp OSI. Giao thức chuẩn đoán sự cố kết nối mạng hoặc truyền dữ liệu giữa các thiết bị. Nó giúp bằng cách gửi, nhận và xử lý các tin nhắn ICMP để báo cáo sự cố kết nối với thiết bị mạng nguồn.

Do đó, mục đích chính của giao thức ICMP là báo cáo lỗi ở lớp mạng. Tuy nhiên, các tác nhân độc hại có thể thao túng chức năng của nó để khởi động các cuộc tấn công như tấn công DdoS, và tấn công Ping of Death. Tại đây, bạn sẽ tìm hiểu về giao thức ICMP, trường hợp sử dụng của nó và các tham số quan trọng để hiểu thông báo ICMP.

ICMP – Internet Control Message Protocol là gì? Nó hoạt động như thế nào?


ICMP hoạt động như thế nào?

Bộ định tuyến sử dụng giao thức ICMP để thực hiện quản lý mạng và chuẩn đoán sự cố. Nó tạo và gửi thông báo lỗi đến thiết bị người gửi khi mạng vô hiệu hóa việc phân phối các gói đến thiết bị đích. Các thông báo lỗi này bao gồm vượt quá thời gian, sự cố tham số, không thể truy cập đích, tắc nghẽn mạng,v.v.

Ví dụ: Khi một người gửi dữ liệu từ một thiết bị đến thiết bị đích dưới dạng một sơ đồ dữ liệu IP, nó sẽ truyền qua nhiều bộ định tuyến hoặc thiết bị trung gian. Đôi khi, có thể xảy ra lỗi khi chuyển tiếp gói dữ liệu IPv4 đó. Do đó, thông báo ICMP được chia thành 2 loại lớn: Thông báo lỗi và thông báo truy vấn.

Thông báo báo cáo lỗi

Đây là những thông báo mà bộ định tuyến hoặc máy chủ trung gian có thể gặp phải trong quá trình xử lý datagram:

1. Thời gian vượt quá(Time Exceeded): Gói ICMP có tham số thời gian tồn tại mà khi nó đạt đến 0, bộ định tuyến hoặc máy chủ lưu trữ loại gói dữ liệu và gửi thông báo lỗi vượt quá thời gian. Thông báo cũng được gửi khi đích không nhận được tất cả các đoạn dữ liệu.

2. Không thể truy cập đích(Destination Unreachable): Thiết bị khởi tạo kết nối nhận được thông báo lỗi không thể truy cập đích khi bộ định tuyến hoặc máy chủ trung gian không gửi được. Do đó, các thiết bị loại bỏ datagram.

3. Source Quench: Khi các thiết bị không gửi được gói dữ liệu do tắc nghẽn mạng, chúng sẽ gửi một ICMP “thông báo dập tắt nguồn” cho người gửi tin nhắn. Thông báo báo lỗi bổ sung kiểm soát luồng trong lớp mạng bằng cách thông báo cho thiết bị nguồn về sự tắc nghẽn trong đường dẫn và làm chậm quá trình gửi dữ liệu.

4. Chuyển hướng(Redirection): Một bộ định tuyến trong một đường dẫn không tối ưu sẽ chuyển hướng gói tin đến một bộ định tuyến có đường dẫn tối ưu giữa nguồn và đích. Như vậy, nó cập nhật nguồn về sự thay đổi trong lộ trình của nó.

5. Sự cố tham số(Parameter Problem): Thiết bị nguồn nhận được thông báo này khi thiếu bất kỳ giá trị nào trong tiêu đề datagram.

Thông báo truy vấn

Các thông báo truy vấn xảy ra theo cặp và cung cấp thông tin cụ thể từ thiết bị trung gian đến thiết bị nguồn.

1. Echo-RequestEcho-Reply Message: Những thông báo này giúp giải quyết các sự cố chuẩn đoán mạng.

2. Yêu cầu dấu thời gian và trả lời: Các yêu cầu dấu thời gian và tin nhắn trả lời này giúp xác định thời gian khứ hồi giữa các thiết bị.


Hiểu các thông số ICMP

Dữ liệu thông báo ICMP được đóng gói dưới IP Header, có nghĩa là tiêu đề sơ đồ ICMP xuất hiện sau thông tin IPv4/v6. Phần đầu của tiêu đề gói ICMP chứa các tham số giúp thiết bị mạng xác định lỗi hoặc thông báo truy vấn.

Trong số 32bit đầu tiên, 8 bit đầu tiên xác định loại thông điệp, 8bit tiếp theo xác định mã  của thông điệp, và các bit còn lại chứa thông tin liên quan đến tính toàn vẹn của dữ liệu. Do đó, 3 trường thông tin là: ICMP type, ICMP code và Checksum.

ICMP Type

ICMP Type xác định mục đích của gói ICMP. Vì nó giải thích ngắn gọn lý do tại sao thiết bị nguồn lại nhận được thông báo đó. Có 0-255 loại tin nhắn ICMP, mỗi loại cung cấp thông tin khác nhau. Một số loại ICMP quan trọng là:

0. Echo Request

3. Destination Unreachable

4. Source Quench

5. Redirect

8. Echo Reply

11. Time Exceeded

12. Parameter Problem

30. Traceroute

ICMP Code

ICMP Code cung cấp thông tin bổ sung về các tin nhắn. Ví dụ: ICMP type 3 với code 0-15 chỉ định lý do tại sao không thể truy cập được đích. Ví dụ. Nếu code là 0 thì đó là do mạng không khả dụng. Tương tự đối với Type 3 code 1 thông báo chỉ định rằng máy chủ không thể truy cập được.

Hơn nữa, Type 8 code 0 và type 0 code 0 đại diện cho các thông báo phản hồi yêu cầu và phản hồi tiếng vọng. Do đó, mỗi loại tin nhắn có cùng giá trị code sẽ cung cấp các thông tin mạng khác nhau.

Checksum

Checksum là một cơ chế phát hiện lỗi xác định tính toàn vẹn của dữ liệu. Checksum đại diện cho các bit trong thông điệp truyền. Người gửi tính toán và bao gồm tổng kiểm tra dữ liệu, và người nhận sẽ tính toán lại giá trị và so sánh với giá trị ban đầu để xác định bất kỳ thay đổi nào đối với thông điệp gốc trong quá trình truyền.

Phần thứ 2 của tiêu đề trỏ đến giá trị byte là nguyên nhân gây ra sự cố trong thư gốc. Cuối cùng, phần cuối của gói ICMP là gói dữ liệu thực tế.


Ví dụ về ICMP đang được sử dụng

Dưới đây là một số ví dụ hoạt động của giao thức ICMP trong các tiện ích quản trị và quản lý mạng khác nhau.

Ping

Ping là một tiện ích dòng lệnh dựa trên các thông báo ICMP Echo-request và Echo-Reply để kiểm tra độ khả dụng và độ trễ của mạng giữa các thiết bị. Tiện ích chỉ đơn giản là xác định tính khả dụng của máy chủ đích bằng cách ước tính tổng gói được gửi hoặc nhận và phần trăm gói mất. Nó cũng giúp xác định tổng kích thước đơn vị truyền tải tối đa(MTU).

ICMP – Internet Control Message Protocol là gì? Nó hoạt động như thế nào?

Traceroute

Traceroute là một tiện ích dòng lệnh khác sử dụng các thông báo Echo-request và Echo-reply với một biến TTL để ánh xạ đường dẫn giữa thiết bị nguồn và thiết bị đích. Nó cũng hữu ích trong việc xác định độ trễ phản hồi và đảm bảo chính xác bằng cách truy vấn mỗi bước nhảy nhiều lần.

ICMP – Internet Control Message Protocol là gì? Nó hoạt động như thế nào?


ICMP hoạt động như thế nào khi không có Port?

Từ giải thích ở trên, ICMP là một giao thức không kết nối gửi dữ liệu độc lập dưới dạng một biểu đồ dữ liệu và tiêu đề của nó xuất hiện sau chi tiết IPv4. Tuy nhiên, bạn cũng có thể nhận thấy sự vắng mặt của số cổng, điều này đặt ra câu hỏi về cách các thiết bị nhận dữ liệu ICMP hoặc nhận biết được bất kỳ kết nối nào?

Câu trả lời là khá đơn giản. Giao thức ICMP được thiết kế để hoạt động ở lớp mạng của Mô hình OSI và giao tiếp giữa các bộ định tuyến và máy chủ để chia sẻ thông tin. Số cổng là một phần của Lớp truyền tải và ICMP không phải là giao thức TCP hay UDP. Cuối cùng, loại ICMP và sự kết hợp mã giúp thiết bị xác định thông báo và nhận tất cả thông tin về mạng.


Kiểm soát lỗi và luồng với ICMP

Các chi tiết ở trên về giao thức ICMP cho thấy cách nó đảm bảo kiểm soát luồng và kiểm soát lỗi dữ liệu ở lớp ba của mô hình OSI. Các thông báo và tham số giao thức trong phần đầu tiên của tiêu đề gói ICMP bao gồm tất cả các khía cạnh của các vấn đề về quản lý và chẩn đoán mạng.

Điều quan trọng cần biết là cài đặt tường lửa không phù hợp có thể cho phép những kẻ tấn công quét qua mạng của tổ chức và khiến tổ chức dễ bị tấn công DDOS, ping chết và ICMP. Bạn có thể sử dụng Wireshark để nắm bắt các gói từ internet và thực hiện phân tích chi tiết các gói ICMP để hiểu rõ hơn.