12/10/2023
Chia sẻ
11610 lượt xem

ICMP (Internet Control Message Protocol) là một giao thức cốt lõi trong bộ giao thức TCP/IP, được các thiết bị mạng sử dụng để chẩn đoán và báo cáo lỗi. ICMP đóng vai trò như “tai mắt” giúp các kỹ sư quản trị giám sát tình trạng hệ thống và xử lý sự cố mạng kịp thời. Cùng khám phá chi tiết  ICMP là gì và 9 loại thông báo ICMP phổ biến nhất trong bài viết dưới đây của Tenten. 

ICMP là gì?

ICMP (Internet Control Message Protocol – Giao thức Điều khiển Thông báo Internet) là một giao thức cốt lõi thuộc bộ giao thức TCP/IP, hoạt động tại tầng mạng, có chức năng chẩn đoán sự cố, gửi thông báo lỗi và kiểm tra kết nối.

Ví dụ, nếu một gói tin IP không thể được chuyển đến thiết bị đích hoặc router gặp sự cố như tắc nghẽn, quá tải đường truyền hay lỗi định tuyến, router sẽ tạo và gửi một bản tin ICMP về thiết bị nguồn để thông báo nguyên nhân của lỗi.

Khác với TCP hoặc UDP, ICMP không dùng để truyền tải dữ liệu ứng dụng như tải trang web hay gửi email mà chỉ hoạt động như một hệ thống “cảnh báo và kiểm tra” của hạ tầng mạng.

ICMP là một giao thức điều khiển thông báo internet

Các công dụng chính của giao thức ICMP

Giao thức ICMP có nhiều công dụng quan trọng trong việc quản lý và duy trì mạng máy tính. Dưới đây là các chức năng chính của ICMP:

  • Thông báo lỗi và cảnh báo: ICMP thông báo về lỗi và vấn đề xảy ra trong quá trình truyền thông dữ liệu. Qua đó giúp quản trị viên mạng xác định và xử lý lỗi mạng kịp thời, ví dụ như thời gian sống của gói tin hết hạn và lỗi tham số.
  • Kiểm tra hoạt động của thiết bị mạng: ICMP cho phép gửi các yêu cầu “Echo Request” để kiểm tra hoạt động của một thiết bị mạng. Thiết bị đó sẽ phản hồi lại với một thông báo “Echo Reply”. Điều này hữu ích để kiểm tra xem một thiết bị có hoạt động hay không.
  • Điều hướng địa chỉ IP: ICMP có thể được sử dụng để cập nhật bảng định tuyến của các thiết bị mạng (như router) bằng cách gửi các thông báo “Redirect” để chỉ định địa chỉ IP mới cho các máy tính mạng.
  • Thiết lập và giữ kết nối: ICMP có vai trò quan trọng trong việc thiết lập và duy trì kết nối mạng, đặc biệt khi giao thức TCP/IP được sử dụng. Các thông báo ICMP giúp quá trình này diễn ra hiệu quả và ổn định.
  • Phân tích môi trường mạng: ICMP có thể được sử dụng để phân tích môi trường mạng bằng cách kiểm tra các thông số như độ trễ (ping), thời gian sống (TTL), và quá trình đánh giá đường truyền.
  • Kiểm tra tính sẵn sàng của dịch vụ: Bằng cách sử dụng ICMP, người quản trị mạng có thể kiểm tra tính sẵn sàng và hoạt động của các dịch vụ mạng và ứng dụng bằng cách gửi các yêu cầu “Echo Request” đến các cổng (port) cụ thể trên thiết bị mạng.

Giao thức ICMP có nhiều công dụng quan trọng trong việc quản lý và duy trì mạng máy tính

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

ICMP hoạt động song song với các giao thức mạng như TCP/IP và UDP, đảm nhiệm vai trò truyền tải các thông điệp điều khiển, thông báo lỗi và trạng thái giữa các thiết bị trong mạng. Khi phát sinh một sự kiện như lỗi truyền dữ liệu, thay đổi tuyến đường hoặc yêu cầu kiểm tra kết nối, các thiết bị như máy tính, máy chủ và router sẽ trao đổi các gói tin ICMP để thông báo và xử lý sự cố.

Quy trình hoạt động của ICMP diễn ra theo các bước sau:

  • Tạo thông điệp ICMP: Khi cần gửi thông báo điều khiển hoặc báo lỗi, thiết bị nguồn sẽ tạo một gói tin ICMP chứa các trường thông tin như loại thông điệp (Type), mã lỗi (Code), Checksum và các dữ liệu liên quan.
  • Nhúng vào gói tin IP: Gói tin ICMP được đóng vai trò là phần dữ liệu (payload) của một gói tin IP để truyền qua mạng dựa trên giao thức IP.
  • Chuyển đến địa chỉ đích: Gói tin ICMP được gửi tới địa chỉ IP của thiết bị nhận. Trong trường hợp sử dụng bản tin Redirect, gói tin có thể được chuyển hướng sang một đích hoặc tuyến đường khác phù hợp hơn.
  • Truyền tải qua mạng: Gói tin ICMP đi qua các thiết bị mạng như router và được xử lý tương tự các gói tin IP thông thường trong suốt quá trình truyền.
  • Xử lý tại thiết bị đích: Khi đến nơi, lớp IP sẽ tách gói ICMP và chuyển cho giao thức ICMP trên thiết bị đích xử lý. Cách xử lý sẽ phụ thuộc vào loại thông điệp và mã lỗi đi kèm.
  • Xử lý thông điệp ICMP: Dựa trên nội dung của thông điệp ICMP, thiết bị đích có thể cập nhật bảng định tuyến, gửi thông báo lỗi lên hệ điều hành hoặc ứng dụng, hoặc thực hiện phản hồi theo yêu cầu.
  • Gửi phản hồi (nếu cần): Với các thông điệp yêu cầu phản hồi, chẳng hạn Echo Request, thiết bị đích sẽ gửi lại Echo Reply để xác nhận khả năng kết nối và hỗ trợ kiểm tra trạng thái hoạt động của mạng.

Quy trình hoạt động của ICMP

Định dạng của gói tin ICMP

Gói tin ICMP được tạo thành từ hai phần chính là phần header và phần dữ liệu. Cụ thể như sau:

Phần Header

Phần ICMP Header bao gồm:

  • Type (Loại): Có chiều dài 8 bit, dùng để xác định loại bản tin ICMP đang được truyền, chẳng hạn như Echo Request, Echo Reply, Destination Unreachable hoặc Time Exceeded.
  • Code (Mã): Cũng có chiều dài 8 bit, cung cấp mã chi tiết nhằm mô tả cụ thể hơn loại thông điệp đã được xác định trong trường Type hoặc chỉ ra nguyên nhân của lỗi.
  • Checksum (Kiểm tra lỗi): Có độ dài 16 bit, có nhiệm vụ kiểm tra tính toàn vẹn của toàn bộ gói tin ICMP trong quá trình truyền, giúp phát hiện lỗi nếu dữ liệu bị thay đổi.
  • Identifier và Sequence Number (Định danh và số thứ tự): Đều có chiều dài 16 bit, thường xuất hiện trong các bản tin Echo Request và Echo Reply và được sử dụng để nhận diện từng phiên trao đổi giữa thiết bị gửi và thiết bị nhận, đồng thời theo dõi thứ tự của các gói tin trong quá trình truyền.

Phần Dữ liệu

Nội dung và kích thước của phần dữ liệu sẽ thay đổi tùy theo từng loại thông điệp ICMP. Chẳng hạn, với các bản tin Echo Request và Echo Reply, phần này chứa dữ liệu do thiết bị gửi tạo ra để kiểm tra khả năng kết nối. Với các thông điệp báo lỗi, phần này bao gồm một phần tiêu đề IP cùng 8 byte đầu tiên của gói tin IP đã phát sinh lỗi.

Cấu trúc gói tin icmp gồm phần header và phần dữ liệu

9 loại ICMP thường gặp

ICMP định nghĩa nhiều loại thông báo (Type) và mã trạng thái (Code) khác nhau nhằm phục vụ việc kiểm tra kết nối, thông báo lỗi và hỗ trợ quản lý mạng. Dưới đây là những loại thông báo ICMP được sử dụng phổ biến nhất:

Loại ICMP

Type / Code

Chức năng chính

Tình huống sử dụng phổ biến

ICMP Echo Request / Echo Reply

Type 8 (Request), Type 0 (Reply) – Code 0

Kiểm tra khả năng kết nối giữa hai thiết bị mạng

Được sử dụng trong lệnh Ping để xác minh thiết bị đích có thể truy cập và đo độ trễ mạng.

ICMP Destination Unreachable

Type 3 – nhiều Code

Thông báo gói tin không thể đến được đích

Xuất hiện khi mạng hoặc máy chủ không thể truy cập, cổng dịch vụ bị đóng (Port Unreachable) hoặc xảy ra lỗi phân mảnh gói tin.

ICMP Time Exceeded

Type 11 – Code 0 hoặc 1

Báo hiệu gói tin đã vượt quá giới hạn TTL

Thường gặp khi sử dụng Traceroute/Tracert để xác định đường đi của gói tin qua các router trung gian.

ICMP Parameter Problem

Type 12 – Code 0–2

Thông báo lỗi trong phần tiêu đề IP

Được gửi khi phát hiện tiêu đề IP chứa tham số không hợp lệ, sai định dạng hoặc dữ liệu bất thường.

ICMP Redirect

Type 5 – Code 0–3

Đề xuất sử dụng tuyến đường tối ưu hơn

Router gửi bản tin này để hướng dẫn thiết bị cập nhật gateway hoặc lựa chọn tuyến định tuyến hiệu quả hơn.

ICMP Source Quench

Type 4 – Code 0

Yêu cầu thiết bị gửi giảm tốc độ truyền dữ liệu

Trước đây được sử dụng để xử lý tình trạng tắc nghẽn mạng nhưng hiện đã bị loại bỏ khỏi các tiêu chuẩn ICMP hiện đại do các rủi ro bảo mật.

ICMP Timestamp Request / Reply

Type 13 (Request), Type 14 (Reply) – Code 0

Đồng bộ và xác minh thông tin thời gian

Được dùng để đo độ trễ và trao đổi thông tin thời gian giữa hai thiết bị mạng.

ICMP Information Request / Reply

Type 15 (Request), Type 16 (Reply) – Code 0

Thu thập thông tin cấu hình mạng

Từng được sử dụng để lấy thông tin cấu hình IP, tuy nhiên hiện nay hầu như không còn được áp dụng.

ICMP Address Mask Request / Reply

Type 17 (Request), Type 18 (Reply) – Code 0

Xác định subnet mask của mạng

Hỗ trợ thiết bị xác định subnet mask và cấu hình địa chỉ IP trong một số hệ thống mạng cũ.

2 lệnh ICMP thông dụng và ứng dụng trong thực tế

Ping và Traceroute là 2 lệnh chẩn đoán thông dụng nhất sử dụng giao thức ICMP.

Lệnh Ping

Ping là lệnh phổ biến nhất sử dụng giao thức ICMP, dùng để kiểm tra kết nối giữa các thiết bị và đo độ trễ (latency).

Cách sử dụng:

  • Trên Windows: Mở Command Prompt (CMD) và nhập ping <địa chỉ IP hoặc tên miền>
  • Trên Linux/macOS: Mở Terminal và nhập ping <địa chỉ IP hoặc tên miền>

Một số tham số thường dùng:

  • Ping liên tục: Trên Windows, sử dụng:
    ping -t <địa chỉ>
    Trên Linux/macOS, chỉ cần nhập:
    ping <địa chỉ>
    Nhấn Ctrl + C để dừng quá trình Ping.
  • Giới hạn số lượng gói tin (Linux/macOS):
    ping -c <số_gói> <địa chỉ>

Cách đọc kết quả:

Kết quả trả về sẽ hiển thị thời gian phản hồi (time) theo đơn vị mili giây (ms) và tỷ lệ mất gói tin (packet loss). Thời gian phản hồi càng thấp và tỷ lệ mất gói bằng 0% thì kết nối mạng càng ổn định.

Lệnh Traceroute/Tracert

Traceroute (Linux/macOS) hoặc Tracert (Windows) là công cụ chẩn đoán mạng giúp xác định lộ trình mà các gói tin đi từ thiết bị nguồn đến một máy chủ hoặc thiết bị đích. 

Traceroute ICMP hoạt động bằng cách gửi các gói tin ICMP với giá trị TTL tăng dần. Mỗi khi gói tin đi qua một router (hop), giá trị TTL sẽ giảm đi một đơn vị. Khi TTL giảm về 0, router sẽ loại bỏ gói tin và gửi lại thông điệp ICMP Time Exceeded cho thiết bị gửi. Dựa trên các phản hồi này, Traceroute sẽ ghi nhận và hiển thị từng hop mà gói tin đã đi qua trước khi đến đích.

Cách sử dụng:

  • Trên Windows: Mở Command Prompt và nhập tracert <địa chỉ IP hoặc tên miền>
  • Trên Linux/macOS: Mở Terminal và nhập traceroute <địa chỉ IP hoặc tên miền>

Cách đọc kết quả:

Kết quả sẽ liệt kê địa chỉ IP hoặc tên của từng router cùng với thời gian phản hồi tại mỗi hop. Nếu xuất hiện thông báo “Request timed out” hoặc một hop có thời gian phản hồi tăng bất thường, đó có thể là dấu hiệu của sự cố hoặc điểm nghẽn trên đường truyền. 

So sánh ICMP với TCP và UDP

ICMP, TCP, và UDP là ba giao thức nền tảng trong mạng máy tính. Về cơ bản, ICMP dùng để chẩn đoán và báo lỗi mạng, trong khi TCP và UDP là giao thức lớp vận chuyển dùng để truyền dữ liệu ứng dụng.

Dưới đây là bảng so sánh chi tiết:

Đặc điểm

ICMP (Internet Control Message Protocol)

TCP (Transmission Control Protocol)

UDP (User Datagram Protocol)

Tầng mạng (OSI Model)

Tầng Mạng (Lớp 3)

Tầng Giao Vận (Lớp 4)

Tầng Giao Vận (Lớp 4)

Mục đích chính

Chẩn đoán mạng, thông báo lỗi.

Truyền dữ liệu đáng tin cậy và có thứ tự.

Truyền dữ liệu tốc độ cao.

Độ tin cậy

Không bảo đảm (chỉ gửi/nhận thông điệp lỗi).

Rất cao (xác nhận gói tin, gửi lại nếu mất).

Không bảo đảm (không có cơ chế báo nhận hay gửi lại).

Xử lý kết nối

Không hướng kết nối (Connectionless).

Hướng kết nối (Connection-oriented).

Không hướng kết nối (Connectionless).

Kiểm tra lỗi

Không kiểm tra lỗi dữ liệu.

Có (checksum đầy đủ).

Có (checksum cơ bản).

Sử dụng Port (Cổng)

Không sử dụng.

Có sử dụng (Source/Destination Port).

Có sử dụng (Source/Destination Port).

Tốc độ truyền tải

Cực nhanh (gói tin nhỏ, đơn giản).

Chậm hơn (do phải bắt tay, xác thực, quản lý).

Rất nhanh (truyền ngay lập tức).

Ứng dụng tiêu biểu

Lệnh Ping, Traceroute.

HTTP/HTTPS, Email, Truyền tệp (FTP).

[DNS](1.1.3, 1.3.4), VoIP, Game trực tuyến, Streaming.

Các rủi ro bảo mật liên quan đến ICMP

Mặc dù ICMP là giao thức quan trọng trong việc kiểm tra kết nối và chẩn đoán mạng, nhưng nếu không được cấu hình và kiểm soát đúng cách, giao thức này có thể bị kẻ tấn công lợi dụng để thực hiện nhiều hình thức tấn công mạng khác nhau.

Ping Flood (ICMP Flood)

Ping Flood là hình thức tấn công từ chối dịch vụ (DoS/DDoS) bằng cách gửi liên tục một lượng lớn gói ICMP Echo Request đến thiết bị mục tiêu. Việc phải xử lý và phản hồi quá nhiều yêu cầu trong thời gian ngắn có thể khiến băng thông hoặc tài nguyên hệ thống bị quá tải, làm giảm hiệu suất hoặc khiến dịch vụ ngừng hoạt động.

Smurf Attack

Smurf Attack là hình thức tấn công khuếch đại. Tin tặc gửi yêu cầu đến địa chỉ broadcast của mạng trung gian nhưng giả mạo địa chỉ IP nguồn thành IP của nạn nhân. Mọi thiết bị trong mạng đó sẽ đồng loạt gửi trả phản hồi đến nạn nhân, làm mạng của họ bị làm ngập trong lưu lượng lớn

Ping of Death

Ping of Death là cuộc tấn công sử dụng các gói ICMP có kích thước vượt quá giới hạn cho phép của IPv4 (65.535 byte). Khi thiết bị nhận cố gắng ghép các mảnh dữ liệu này, lỗi tràn bộ nhớ có thể khiến hệ thống bị treo hoặc sập. Đây là một lỗ hổng đã tồn tại từ lâu và hiện phần lớn hệ điều hành hiện đại đều đã được vá.

Redirect spoofing/MITM

ICMP Redirect thường được dùng để thông báo cho router biết tuyến đường tối ưu. Tin tặc có thể giả mạo thông điệp này, đánh lừa hệ thống chuyển hướng lưu lượng mạng qua thiết bị của chúng, từ đó thực hiện tấn công trung gian (Man-in-the-Middle) để nghe lén hoặc đánh cắp dữ liệu.

Các lỗ hổng khác

ICMP cũng bị lợi dụng trong các cuộc tấn công khai thác đường hầm (ICMP Tunneling) để vượt tường lửa, hoặc gửi thông điệp báo lỗi bị thao túng nhằm lập bản đồ cấu trúc mạng nội bộ. Ngoài ra, việc gửi các gói tin ICMP trinh sát không được kiểm soát giúp tin tặc dễ dàng phát hiện các thiết bị đang trực tuyến trong hệ thống.

Rủi ro bảo mật liên quan đến ICMP bao gồm Ping Flood, Smurf Attack, Ping of Death

Câu hỏi thường gặp

ICMPv6 là gì?

ICMPv6 là phiên bản ICMP dành cho IPv6, đảm nhiệm việc thông báo lỗi, chẩn đoán mạng, phát hiện router và tự động cấu hình địa chỉ.

Giao thức icmp thuộc tầng nào?

Giao thức ICMP (hoạt động tại tầng Mạng (Network Layer) trong mô hình OSI.

ICMP có ICMP port không?

Không. ICMP hoạt động ở tầng mạng và không sử dụng port. Các thông điệp được phân biệt qua trường Type và Code.

ICMP ping là gì?

ICMP ping là gì là cơ chế kiểm tra kết nối bằng cách gửi gói tin Echo Request và chờ Echo Reply để xác nhận phản hồi và đo độ trễ.

Giao thức ICMP có an toàn không?

Về bản chất, ICMP không an toàn vì nó không có cơ chế mã hóa hay xác thực dữ liệu. Dữ liệu ICMP có thể bị lợi dụng để tấn công từ chối dịch vụ (DDoS). Do đó, quản trị viên cần thiết lập tường lửa để kiểm soát lưu lượng ICMP thay vì mở hoặc chặn hoàn toàn.

TTL trong ICMP là gì?

TTL (Time-To-Live) là bộ đếm số bước nhảy (hop) tối đa một gói tin được phép đi qua mạng. Mỗi khi đi qua một bộ định tuyến, giá trị TTL bị trừ đi 1. Nếu TTL giảm về 0 mà chưa đến đích, gói tin sẽ bị hủy nhằm tránh lặp vô hạn và gây nghẽn mạng.

giao thức icmp được sử dụng trong gói tin nào

Kết luận

Hy vọng qua bài viết, bạn đã hiểu rõ ICMP là gì, các loại thông báo phổ biến của giao thức này và cách ứng dụng chúng vào việc quản trị, xử lý sự cố mạng thực tế. Nắm vững kiến thức về ICMP sẽ giúp bạn chẩn đoán lỗi chính xác và tối ưu hiệu suất và bảo mật hạ tầng mạng của mình

Tag