Trang chủ Kiến thức cơ bản

Giao thức ICMP là gì? Từ lý thuyết đến ứng dụng

Giao thức ICMP là gì?

ICMP (Internet Control Message Protocol) là một giao thức báo cáo lỗi, thông báo cho sender biết việc gửi data đi có vấn đề, cũng giống như bộ định tuyến sử dụng để tạo thông báo lỗi đến địa chỉ IP nguồn khi các sự cố mạng ngăn chặn việc phân phối các IP packages. ICMP tạo và gửi thư đến địa chỉ IP nguồn, cho biết rằng một gateway vào Internet mà không thể truy cập được. Mọi thiết bị mạng IP đều có khả năng gửi, nhận hoặc xử lý tin nhắn ICMP.

ICMP không phải là giao thức truyền tải gửi dữ liệu giữa các hệ thống.

ICMP không được sử dụng thường xuyên trong các ứng dụng người dùng cuối, nó được sử dụng bởi các quản trị mạng, nhằm mục đích khắc phục các kết nối Internet trong các tiện ích chẩn đoán (diagnostic utilities) bao gồm ping và traceroute.

Một trong những giao thức chính của Internet Protocol suite là ICMP, ICMP được sử dụng bởi các routes, thiết bị trung gian hoặc máy chủ để truyền thông tin lỗi hoặc cập nhật cho các routes, thiết bị trung gian hoặc máy chủ khác. IPv4 được sử dụng rộng rãi (Giao thức Internet phiên bản 4), còn IPv6 mới hơn sử dụng các phiên bản tương tự của giao thức ICMP (ICMPv4 và ICMPv6 tương ứng).

>> Tham khảo thêm:  Giới thiệu về địa chỉ IP Version 6

Các thông điệp ICMP được truyền dưới dạng các datagrams, bao gồm một IP header đóng gói dữ liệu ICMP. CMP packets là IP packets với ICMP trong phần dữ liệu IP. Các tin nhắn ICMP cũng chứa toàn bộ tiêu đề IP từ tin nhắn gốc, vì vậy end system sẽ biết được packet nào đang có vấn đề.

ICMP header xuất hiện sau IPv4 hoặc IPv6 packet header và được xác định là IP protocol số 1. Thông thường, một giao thức phức tạp chứa ba trường:

- Loại chính (major type) xác định ICMP message.

- Mã phụ (minor code) có chứa nhiều thông tin hơn về type field.

- Việc kiểm tra tổng (checksum) giúp phát hiện các lỗi được phát sinh trong quá trình truyền tải.

- Dựa theo ba trường là dữ liệu ICMP và IP header ban đầu, chúng ta có thể xác định được các gói nào thực sự không thành công.

- ICMP đã được sử dụng để thực hiện các cuộc tấn công từ chối dịch vụ (còn gọi là ping of death) bằng cách gửi một gói IP lớn hơn số byte được cho phép bởi giao thức IP.

>> Tham khảo thêm: Tìm hiểu chung về địa chỉ IP

Chức năng của ICMP

    1. Điều khiển dòng dữ liệu

Khi trạm nguồn gửi dữ liệu tới quá nhanh, trạm đích không kịp xử lý, trạm đích – hay một thiết bị dẫn đường gửi trả trạm nguồn một thông báo để trạm nguồn tạm ngừng việc truyền thông tin.

2. Thông báo lỗi

- Khi không tìm thấy trạm đích, một thông báo lỗi Destination Unreachable được Router gửi trả lại trạm nguồn.

- Nếu số hiệu cổng không phù hợp, trạm đích gửi thông báo lỗi lại cho trạm nguồn.

3. Kiểm tra trạm làm việc

Khi một máy tính muốn kiểm tra một máy khác có tồn tại và đang hoạt động hay không, nó gửi một thông báo Echo Request. Khi trạm đích nhận được thông báo đó, nó gửi lại một Echo Reply. Lệnh ping sử dụng các thông báo này. Ping là một lệnh phổ biến và thường được sử dụng để kiểm tra kết nối .

Giao thức ICMP là gì? Từ lý thuyết đến ứng dụng - Ảnh 1.

Bạn có thể thực hiện lệnh Ping đến một địa chỉ IP hay tên miền cụ thể nào đó như sau :

Vào Start -> Run -> Gõ lệnh cmd ( với Window xp, 2K ), lệnh command ( với Window 9x ) -> Xuất hiện cửa sổ MS-DOS -> sau đó bạn gõ lệnh C:\>Ping 10.0.0.2.

Nếu màn hình xuất hiện như dưới :

Pinging 10.0.0.2 with 32 bytes of data:

Reply from 10.0.0.2: bytes=32 time<1ms TTL=64

Reply from 10.0.0.2: bytes=32 time<1ms TTL=64

Reply from 10.0.0.2: bytes=32 time<1ms TTL=64

Reply from 10.0.0.2:

Như vậy là lệnh Ping thành công và kết nối từ PC của tôi đến 10.0.0.2 là OK

Khi Ping tên miền bạn làm tương tự, ví dụ :

C:\>ping ciscobachkhoa.com

Pinging ciscobachkhoa.com [67.19.193.26] with 32 bytes of data:

Reply from 67.19.193.26: bytes=32 time=372ms TTL=45

Reply from 67.19.193.26: bytes=32 time=391ms TTL=45

Reply from 67.19.193.26: bytes=32 time=421ms TTL=45

Reply from 67.19.193.26: bytes=32 time=407ms TTL=46

Ping statistics for 67.19.193.26:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in mili-seconds:

Minimum = 372ms, Maximum = 421ms, Average = 397 ms

Như vậy là kết nối thành công .

Với một lệnh Ping không thành công :

C:\>Ping 10.0.0.3

Pinging 10.0.0.4 with 32 bytes of data:

Request timed out.

Request timed out.

Request timed out.

Request timed out.

Ping statistics for 10.0.0.4:

Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)

Với kết quả này, tức kết nối không thành công.

Các bạn có thể thử Ping default Gateway, DNS server của các bạn để kiểm tra mỗi khi không kết nối được ra mạng ngoài.

Giao thức ICMP là gì? Từ lý thuyết đến ứng dụng - Ảnh 2.

Các loại ICMP message thường thấy

1. ICMP echo messages

Có hai loại là echo request và echo reply message tương ứng với các trường:

Type = 0 -> echo request, code = 0

Type = 8 -> echo reply, code = 0

Ngoài ra còn có 2 trường (size 16 bit/field) là ID và sequence Number dùng để nhận biết giữ các cặp reply/request.

2. ICMP Destination Unreachable message

Nếu bị Destination Unreachable, thiết bị trung gian sẽ gửi một Destination Unreachable message về sender.

Destination Unreachable có nhiều loại ứng với các nguyên nhân khác nhau và chúng sẽ có các cặp giá trị code khác nhau:

Ví dụ:

Type = 3, code = 0 -> Network Unreachable

Type = 3, code = 1 -> Host Unreachable

Type = 3, code = 2 -> Protocol Unreachable

Type = 3, code = 3 -> Port Unreachable

3. ICMP Parameter Problem message

Thông điệp này xuất hiện khi có một vài error trong header của datagram (ở một vài octet) và không thể chuyển nó đi tiếp được. Lúc này thiết bị trung gian gửi một ICMP Parameter Problem message cho sender với các trường sau.

Type = 12

Code = 0 - 2

Thêm một trường Pointer (8 bit) để chỉ vị trí của octet lỗi.

4. ICMP Redirect/Change Request message

Là loại Control Messages, được gửi đi bởi một default gateway, báo cho host nhận biết là có best path:

- Tại Interface mà packet đã đi vào sau đó lại đựơc routed đi ra.

- Tại subnet/network của địa chỉ IP nguồn cùng subnet/network với nexthop.

Khi host được để mặc định là gửi ICMP Redirect message. Có thể bỏ default này bằng command: "no ip redirects".

Các loại Redirect Require Message ứng với các type và code sau:

Type = 5 code = 0 -> Redirect datagram for the network

Type = 5 code = 1 -> Redirect datagram for the host

Type = 5 code = 2 -> Redirect datagram for the type of service and the network

Type = 5 code = 3 -> Redirect datagram for the type of service and the host

5. ICMP Timestamp Request message

Đồng bộ thời gian cho các ứng dụng giữa nơi chuyền và nơi nhận:

Type = 13, code = 0 -> ICMP Timestamp Request message

Type = 14, code = 0 -> ICMP Timestamp reply message

Ngoài ra còn có 2 trường có size là 16 bit là ID và sequence Number dùng để nhận biết giữ các cặp reply/request.

6. ICMP Information Request and Reply message

Để xác định số network được sử dụng.

Type = 15, code = 0 -> ICMP Information Request message

Type = 16, code = 0 -> ICMP Information reply message

Ngoài ra còn có 2 trường có size là 16 bit là ID và sequence Number dùng để nhận biết giữ các cặp reply/request.

7. ICMP Address Mask Request message

Host tìm được subnetmask của mình khi không được cấu hình bằng tay.

Type = 17, code = 0 -> ICMP Address Mask Request message

Type = 118, code = 0 -> ICMP Address Mask reply message

Ngoài ra còn có 2 trường có size là 16 bit là ID và sequence Number dùng để nhận biết giữ các cặp reply/request. Và thêm 1 trường 32 bit dành cho Address Mask (với request message thì nó được cho về not use với reply message thì nó là Address Mask correct của host).

8. ICMP Router Discover message

Type = 9 Code =0

9. ICMP Router Solicitation message

Được áp dụng khi sender mất default gateway.

Type = 10 Code = 0

10. ICMP Source Quench message

Được sử dụng để báo cho sender biết là có congestion và hỏi sender xem có giảm tốc độ gửi packet đi không, thuộc loại Flow-Control Message.

Type = 4 Code = 0

Nguồn: Tech.vccloud.vn

>> Có thể bạn quan tâm: Tìm hiểu về SMTP - giao thức truyền tải thư tín đơn giản

Kể từ ngày 05/11/2018, VCCloud chính thức đổi tên thành BizFly Cloud - là nhà cung cấp các dịch vụ đám mây hàng đầu tại Việt Nam hiện nay với các dịch vụ nổi bật như: BizFly Cloud Server, BizFly CDN, BizFly Load Balancer, BizFly Pre-built Application, BizFly Business Mail, BizFly Simple Storage. Hãy tăng tốc thích nghi cho doanh nghiệp cùng các giải pháp công nghệ của BizFly Cloud tại đây.