ICMP (Internet Control Message Protocol)
Chủng loại
ICMP echo
ICMP Destination Unreachable
ICMP Parameter Problem
ICMP Redirect/ Change Request
ICMP Timestamp request
ICMP Information Request and Reply
ICMP Address Mask Request
ICMP Router Discovery
ICMP Source Quench
TYPE
0: Echo reply
3: Destination unreachable
4: Source quench
5: Redirect
8: Echo
9: Router advertisement
10: Router selection
11: Time exceeded
12: Parameter problem
13: Timestamp
14: Timestamp reply
15: Information request
16: Information reply
17: Address mask request
18: Address mask reply
30: Traceroute
31: Datagram Conversion Error
32: Mobile Host Redirect
33: IPv6 Where-Are-You
34: IPv6 I-Am-Here
35: Mobile Registration Request
36: Mobile Registration Reply
37: Domain Name Request
38: Domain Name Reply
39: SKIP
40: Security Failures
ICMP nằm ở Network Layer
ICMP tiêu biểu
ICMP Echo
echo reply, code = 0
echo request, code = 0
ICMP Destination Unreachable
ICMP Parameter Problem
Nếu khi sảy ra lỗi ở dữ liệu và không thể chuyển tiếp nó đi được thì thiết bị trung gian sẽ gửi một thông báo cho Sender trong các trường như sau:
Type = 12 Code = 0 – 2
Lưu ý rằng phần này chỉ kiểm soát thông tin và các thông báo chứ chúng 0 mang thông báo đi.
ICMP Redirect/ Change Requesst
.
Là phương thức được gửi đi bởi một gateway mặc định sau đó báo cho host nhận biết là có best path:
Tại giao diện mà các gói đã đi vào sau đó lại đựơc các định tuyến đi ra.
Tại mạng con hay mạng của địa chỉ IP nguồn cùng mạng con hay mạng với nexthop.
Khi host được để mặc định là gửi thông báo thì ICMP để bỏ default này sẽ nhận lệnh: "no ip redirects".
.
Ứ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
ICMP Timestamp request
.
Đây là phương thức đồng bộ thời gian giữa nơi truyền và nơi nhận tin có thể thực hiện qua:
Type = 13, code = 0 -> ICMP Timestamp Request
Type = 14, code = 0 -> ICMP Timestamp reply
Trong trường hợp size là 16 bit là ID thì để nhận biết giữ các cặp reply/request có thể dùng số thứ tự.
ICMP Information Request and Reply
.
Phương thức này để có thể xác định số mạng được sử dụng. Thực hiện qua:
Type = 15, code = 0 -> ICMP Information Request
Type = 16, code = 0 -> ICMP Information reply
Trong trường hợp size là 16 bit là ID thì để nhận biết giữ các cặp reply/request có thể dùng số thứ tự.
ICMP Address Mask Request
.
Khi máy chủ tìm được mạng con của mình thì sẽ sử dụng các hình thức:
Type = 17, code = 0 -> ICMP Address Mask Request
Type = 118, code = 0 -> ICMP Address Mask reply
Ngoài ra còn có 2 trường có size là 16 bit và là ID và 32 bit dành cho Address Mask, chúng sẽ liên kết với nhau và không sử dụng thông báo trả lời vì nó là địa chỉ chính xác của máy chủ.
Định dạng gói tin ICMP Message
ICMP Source quench
Type = 4
Giả sử người gửi gửi lại gói với tốc độ cao hơn và bộ định tuyến không thể xử lý tốc độ dữ liệu cao. Để khắc phục tình trạng như vậy, bộ định tuyến sẽ gửi một bản tin ngắt nguồn để bảo người gửi gửi gói tin với tốc độ thấp hơn.
Thông báo ngắt nguồn thông báo cho người gửi rằng gói dữ liệu đã bị loại bỏ do tắc nghẽn xảy ra trong lớp mạng.
Vì vậy, người gửi phải dừng hoặc làm chậm việc gửi các gói dữ liệu cho đến khi giảm tắc nghẽn.
Bộ định tuyến sẽ gửi một thông báo ngắt nguồn cho mỗi sơ đồ dữ liệu bị loại bỏ do tắc nghẽn trong lớp mạng.
ICMP Time Exceeded
Đôi khi tình huống phát sinh khi có nhiều bộ định tuyến tồn tại giữa người gửi và người nhận. Khi người gửi gửi gói tin, thì gói tin đó sẽ di chuyển trong một vòng lặp định tuyến. Thời gian vượt quá được dựa trên giá trị thời gian tồn tại. Khi gói tin truyền qua bộ định tuyến, thì mỗi bộ định tuyến giảm giá trị của TTL đi một. Bất cứ khi nào một bộ định tuyến giảm một sơ đồ có giá trị thời gian tồn tại xuống 0, thì bộ định tuyến sẽ loại bỏ một sơ đồ và gửi thông báo vượt quá thời gian đến nguồn ban đầu.
Mỗi lớp MAC có các đơn vị dữ liệu khác nhau. Ví dụ: một số lớp có thể xử lý tối đa 1500 đơn vị dữ liệu và một số lớp có thể xử lý tối đa 300 đơn vị. Khi gói được gửi từ lớp có 1500 đơn vị đến lớp có 300 đơn vị, thì gói tin được chia thành các đoạn; quá trình này được gọi là phân mảnh. 1500 đơn vị này được chia thành 5 mảnh, tức là f1, f2, f3, f4, f5, và những mảnh này đến đích theo một chuỗi. Nếu tất cả các mảnh không đến đích trong một thời gian nhất định, chúng sẽ loại bỏ tất cả các mảnh đã nhận và gửi một thông báo đã vượt quá thời gian tới nguồn ban đầu.