Giao thức ICMP là gì? Tác dụng và cách hoạt động

ICMP là gì?

Giao thức ICMP là giao thức nằm trong lớp mạng thường được sử dụng bởi các công cụ như Ping hoặc Tracerouter để cung cấp các thông tin về vấn đề truyền dữ liệu giữa các thiết bị mạng, ICMP cho biết dữ liệu truyền đến đích có đúng thời điểm không?

Có thể nói đây là một trong những giao thức quan trọng và được sử dụng rất nhiều bởi anh em kỹ thuật mạng. Trong bài viết này, ta sẽ đi tìm hiểu chi tiết xem ICMP thực sự là gì?

giao thức ICMP là gì, cách hoạt động và tác dụng

Mục đích sử dụng giao thức ICMP

Chức năng chính của ICMP là để thông báo lỗi truyền dẫn. Chẳng hạn khi 1 gói tin dữ liệu kích thước quá lớn, Router quyết định loại bỏ nó và sẽ gửi một thông báo ICMP cho thiết bị gửi. Thông báo này giúp thiết bị nguồn biết rằng gói tin mình gửi đã gặp lỗi, cụ thể là do kích thước quá lớn và không được truyền đến đích.

Mục đích sử dụng khác của ICMP là được sử dụng để chuẩn đoán mạng qua 2 công cụ Traceroute và Ping:

ví dụ ping sử dụng ICMP
ví dụ ping sử dụng ICMP

Trong ảnh trên, Host A muốn biết có thể kết nối với Server không nên gửi một gói tin “Echo Request”. Khi server nhận được tin này, nó sẽ phản hồi một gói tin “Echo Reply” đến Host A để thông báo rằng có thế kết nối.

Lưu ý rằng: các gói ICMP được gói gọn trong các gói dữ liệu IP, có nghĩa là chúng không sử dụng các giao thức cấp cao hơn (như TCP hoặc UDP) để truyền.

Một trong những thông báo phổ biến của ICMP là Destination unreachable. Và đây là ví dụ của nó:

ví dụ thông báo ICMP Destination Host unreachable
ví dụ thông báo ICMP Destination Host unreachable

Khi máy chủ A gửi gói tin đến máy chủ B. Do Router R1 không hoạt động nên Router sẽ gửi 1 tin ICMP Destination Host unreachable tới Host A, thông báo rằng Host đích không thể truy cập được, ví dụ:

C:\>ping 192.168.8.11
Pinging 192.168.8.11 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.8.11:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)

Traceroute cho biết thời gian để dữ liệu truyền từ thiết bị này sang thiết bị khác. Mỗi lần dữ liệu di chuyển giữa các bộ định tuyến, dữ liệu được gọi là bước nhảy. Thông tin do traceroute cung cấp được sử dụng để để tìm ra thiết bị trên tuyến đường gây ra sự sự cố khiển mạng bị chậm.

Ping tương tự như traceroute nhưng đơn giản hơn. Nó cho biết thời gian để dữ liệu đi qua giữa 2 thiết bị. ICMP tạo điều kiện cho ping ở chỗ ICMP Echo Request và Reply được sử dụng.

ICMP cũng có thể gây ra tổn hại đến hiệu suất mạng. Các kẻ tấn công thực hiện điều này bằng cách sử dụng ICMP Flood, tấn công Smurf và tấn công ping of death làm choáng ngợp một thiết bị trên mạng và ngăn chặn chức năng bình thường.

Cấu trúc gói tin ICMP

Tiêu đề ICMP xuất hiện sau tiêu đề gói IPv4 và IPv6:

cấu trúc tiêu đề ICMP

Trong định dạng gói ICMP, 32 bit đầu tiên của gói chứa ba trường sau:

Type: có độ dài 8 bit dành cho loại tin nhắn cho biết mô tả ngắn gọn về tin nhắn để mạng có thể nhận dạng và cách để phản hồi nó. Có các loại tin nhắn sau:

  • Loại 0 – Trả lời tiếng vang
  • Loại 3 – Đích không thể truy cập được
  • Loại 5 – Tin nhắn chuyển hướng
  • Loại 8 – Yêu cầu tiếng vang
  • Loại 11 – Vượt quá thời gian
  • Loại 12 – Vấn đề về tham số

Code: cũng có độ dài 8 bit theo định dạng gói ICMP, trường này mang thông tin bổ sung về thông báo lỗi và loại.

Checksum: có độ dài 16 bit được sử dụng để thông báo hoàn chỉnh và kích hoạt công cụ ICMP để đảm bảo rằng dữ liệu hoàn chỉnh được gửi.

Extender header: có độ dài 32 bit là tiêu để mở rộng với nhiệm vụ chỉ ra vấn đề trong thông báo IP.

Phần cuối của gói ICMP là Data hoặc Payload có độ dài thay đổi. Các byte có trong IPv4 là 576 byte và trong IPv6 là 1280 byte.

Ý nghĩa các định dạng tin nhắn ICMP

Kiểu Mô tả
0 – Echo Reply 0 Trả lời Echo
3 – Destination Unreachable 0 Mạng đích không thể truy cập
1 Máy chủ đích không thể truy cập được
2 Giao thức đích không thể truy cập được
3 Cổng đích không thể truy cập được
4 cần phân mảnh (Fragmentation) và đặt cờ DF flag
5 Tuyến nguồn không thành công
5 – Redirect Message 0 Chuyển hướng datagram cho mạng
1 Chuyển hướng datagram cho máy chủ
2 Chuyển hướng datagram cho Loại dịch vụ và Mạng
3 Chuyển hướng datagram cho Dịch vụ và Máy chủ
8 – Echo Request 0 Yêu cầu Echo
9 – Router Advertisement 0 Khám phá địa chỉ của Router hoạt động
10 – Router Solicitation 0
11 – Time Exceeded 0 Thời gian sống vượt quá trong quá trình truyền
1 Thời gian vượt quá trong quá trình tạo lại các mảnh gói tin
12 – Parameter Problem 0 Con trỏ chỉ ra một lỗi.
1 Thiếu tùy chọn bắt buộc
2 Độ dài không hợp lệ
13 – Timestamp 0 Sử dụng cho đồng bộ hóa thời gian
14 – Timestamp Reply 0 Trả lời cho thông điệp Timestamp

ICMP được sử dụng trong tấn công DDoS như thế nào?

ICMP trong tấn công DDos

Giao thức ICMP bị lợi dụng trong các tấn công DDoS dưới 3 cách sau:

Tấn công ICMP Flood:

Các kẻ tấn công sẽ tấn công 1 thiết bị mục tiêu bằng lượng lớn các gói tin ICMP request còn được gọi là các yêu cầu “ping”. Thiết bị mục tiêu phải xử lý và phản hồi cho mỗi gói tin làm tiêu tốn tài nguyên dẫn đến việc sử dụng tài nguyên cao, gây ra người dùng hợp pháp không thể nhận dịch vụ.

Tấn công Ping of Death:

Tấn công này gửi một gói tin kích thước lớn vượt quá kích thước tối đa cho 1 gói tin đến một máy chủ mục tiêu. Gói tin quá lớn sẽ khiến máy chủ bị đóng băng hoặc treo. Gói tin có thể bị tách thành các phần trong quá trình truyền nhưng khi máy chủ mục tiêu tập hợp lại thành kích thước vượt quá làm tràn bộ nhớ đệm.

Các cuộc tấn công này là gây ra hậu quả khá nghiêm trọng nhưng hiện nay hầu hết các thiết bị mạng đã khắc phục lỗ hổng này. Nhưng các thiết bị cũ vẫn có thể bị tấn công.

Tấn công Smurf:

Tấn công Smurf dựa trên việc gửi gói tin ICMP với địa chỉ IP giả mạo. Thiết bị trả lời gói tin bằng các phản hồi đến địa chỉ IP ảo và làm tràn máy bằng các gói tin ICMP. Điều này khiến các thiết bị mạng bị nhắm đến sẽ không thể cung cấp dịch vụ cho người dùng thực.

ICMP không phải là giao thức duy nhất được sử dụng để tấn công DDoS, các kẻ tấn công có thể sử dụng các giao thức khác như gói tin GRE.

Cảm ơn các bạn đã theo dõi bài viết giới thiệu về giao thức ICMP của Viễn Thông Xanh!

Xem thêm các bài viết khác: