Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

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.

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Lưu ý về định nghĩa của ICMP

Các bạn nên nhớ rằng 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 với nhau mà chúng được xem như bộ định tuyến. Ngay sau khi phát hiện lỗi thì lập tức ICMP sẽ tạo và gửi thông báo đến địa chỉ IP nguồn.

Trong trường hợp có các sự cố mạng ngăn chặn việc phân phối các IP packages hay một gateway không thể truy cập internet được.

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).

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.

Đã nói đến ping thì phải nói đến ICMP, vậy ICMP là cái gì?

– IP không có cơ chế để biết được data nó gửi đã đến được đích chưa, nên mới sinh ra cái gọi là Internet Control Messenger Protocol(ICMP). ICMP sinh ra không phải để giải quyết cái thuộc tính không đáng tin cậy(unreliability) vốn có của IP mà ICMP messenger có nhiệm vụ đơn giản là thông báo cho sender biết việc gửi data đi có vấn đề.

– VD: host A gửi 1 datagram tới host Z, nhưng do một số nguyên nhân mà gói thông tin gửi tới không đúng đích.

  • Các thiết bị trung gian như routing protocol không đúng, chúng được gọi là unreachable network.
  • Cấu hình TCP/IP chưa đúng về địa chỉ, subnetmask hay default gateway, chúng được gọi là unreachable host.
  • Host đích không hỗ trợ upper-layer protocol, được gọi là unreachable protocol.
  • Host đích không hỗ trợ loại dịch vụ cần truy cập, gọi là unreachable port/socket.

– Khi đó thiết bị trung gian(router) nơi xảy ra vấn đề sẽ gửi lại một gói tin trong đó có ICMP messenger chỉ dành cho sender để thông báo về nguyên nhân. Các thiết bị trung gian khác không nhận được messenger trên và hoàn toàn không biết là có vấn đề trên đường truyền.

– Đã là một messenger được truyền đi trong mạng thì nó cũng phải đi qua những lớp dưới. Và dữ liệu (nội dung chính của messenger đó) sẽ được encap cũng như các loại data khác( nghĩa là cũng phải có Frame header, IP datagram header..) sau đó nó sẽ được chuyền đi.

– Để tránh trường hợp khi truyền ICMP messenger lại xảy ra lỗi và lại sinh ra một cái error report nữa ( và làm tăng congestion( tắc nghẽn)) ICMP sẽ không có error report nữa.

– Có nhiều loại ICMP messenger khác nhau và mỗi loại mang 1 thông điệp lỗi cụ thể khác nhau. Kiểu messenger được nhận ra nhờ format dữ liệu của messenger đó.

Trong một số trường hợp thực hiện lệnh Ping lần đầu ta nhận thấy có một gói Request Timeout và ba gói còn lại thành công, gói đầu ấy là do ARP đang làm việc nên mới không thành công. Có hai loại Ping là Standard Ping và Extended Ping.

Extended Ping cho phép ta lựa chọn một Source Interface chính xác để kiểm tra kết nối giữa một điểm bắt đầu và đích đến cụ thể. Tại sao lại phải có Extended Ping với Source cụ thể?

Ping Source hay Extended Ping chỉ được dùng trên Router mà thôi còn trên Host ta sẽ không dùng Ping Source được, với vai trò là một nhà quản trị khi ta cần kiểm tra kết nối giữa các Host với nhau ta thường sẽ kiểm tra Ping trên Router với Source.

Standard Ping là cách Ping bình thường tới một địa chỉ đích nên ta không thể biết được kết nối giữa các Host có thật sự thông với nhau hay không bởi vì trên Router có nhiều Interface nên nó sẽ chọn ngẫu nhiên một Interface mà nó Ping thành công.

Do đó trong nhiều trường hợp ta Ping thì thành công nhưng thực chất Interface đó không thể đi tới Host đích được vì thật ra là ta đang Ping giữa một con Router đi tới Host chứ không phải giữa hai Host cụ thể.

Ngoài Ping ra thì đại diện cho ICMP còn có tiện ích “Traceroute” dùng để liệt kê và thăm dò tất cả các đường đi tới đích. Thông điệp ICMP được đóng gói vào trong gói IP Packet vì thế người ta thường hay nghĩ ICMP nằm ở tầng 4 (Transport) nhưng ICMP là một phần quan trọng của giao thức IP nên thật ra nó nằm ở tầng 3 (Network). Giải thích điều dễ gây nhầm lẫn trên là do lệnh Traceroute chỉ hoạt động ở tầng 4 (Transport)

Tương tự lệnh Ping thì Traceroute cũng có hai loại là Standard Straceroute và Extended Traceroute (Dùng Source cụ thể). Khi Traceroute một mạng mà ta nhận về một thông báo hết hạn TTL Exceeded thì nghĩa là đã xảy ra Loop mạng, thường thì TTL mặc định sẽ là 32 và khi qua mỗi thiết bị sẽ giảm đi một đơn vị cho tới khi về 0 thì hết hạn.

Định dạng của bản tin ICMP

Bản tin ICMP được mang trong phần dữ liệu của gói tin IP. Mặcdù mỗi bản tin ICMP có dạng riêng của nó, nhưng chúng đều bắt đầu với ba trường sau:

  • TYPE (8bit): là một số nguyên 8bit để xác định thông điệp.
  • CODE (8bit):cung cấp thêm thông tin về kiểu thông điệp.
  • CHECKSUM(16bit) : ICMP sử dụng thuật gii checksum như IP, nhưng ICMP checksum chỉ tính đến thông điệp ICMP.

Hơn nữa, các thông điệp ICMP thông báo lỗi luôn luôn bao gồm phần đầu và 64bit đầu tiên của packet gây nên lỗi. Lý do có thêm phần đầu này cùng với phần đầu packet là để cho phép nơi nhận xác định chính xác hơn những giao thức nào và chương trình ứng dụng có trách nhiệm đối với packet.

ICMP có tác dụng gì?

ICMP có rất nhiều ứng dụng, trong đó ứng dụng Ping được sử dụng nhiều nhất.

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

  • Để kiểm tra Host A với địa chỉ “IP A” có đi đến được Host B với “IP B” hay không thì trên Host A thực hiện Ping đến IP B.
  • Ping sử dụng 2 thông diệp “ICMP echo request” và “ICMP echo reply” để thực hiện quy trình ping.
  • Khi Host A ping B thì lập tức A gửi một loạt các gói tin (thông thường PC gửi 4 gói) ICMP echo request.
  • Host B nhận đươc bao nhiêu ICMP echo request thì sẽ trả về bấy nhiêu gói ICMP echo reply.

Các thông số cơ bản trong ICMP

  • bytes: kích thước của gói tin.
  • time: thời gian hồi đáp.
  • TTL (time -to-live) là một trường dài 8 bit. Giá trị tối đa là 255, cứ mỗi khi đi qua con Router thì giá trị
  • TTL giảm đi 1 đơn vị, khi Router nhận gói tin có TTL = 0 thì nó sẽ tự “drop” gói tin đó.
  • Ý nghĩa của TTL: dùng để chống lại sự lặp vòng (routing loop)

Các kết quả có thể trả về sau khi Ping:

Ping thành công

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Ping không thành công :

Request time out: PC gửi gói tin ICMP request đi, sau khoảng thời gian “time out” mà không thấy gói tin trở về.

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Nguyên nhân:

  • Do đường truyền vật lý (kiểm tra lại kết nối, cáp).
  • IP không tồn tại, máy PC đích bị tắt
  • Máy đích bị chặn bởi Firewall, firewall cấm ping (tắt firewall, hoặc cấu hình lại).
  • Gửi thành công nhưng firewall bên máy đích chặn ping => không reply được.

Destination host unreachable do đâu?

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

TH 1: 2 host khác lớp mạng

Gói tin đi đến default gateway nhưng default gateway lại không biết đường đi tới đích (không có trong bảng định tuyến). Nó gửi lai gói “reply from < IP default gateway > destination host unreachable” với ý nghĩa: gói tin đến Router là “cụt đường”.

TH2: 2 host cùng lớp mạng

Đương nhiên khi 2 host cùng lớp mạng thì không có sự góp mặt của Router, Host A gửi nếu không thể đến được thì trả về gói “reply from < IP source> destination host unreachable”.

Nguyên nhân:

  • Router không biết đường đi.
  • IP không tồn tại, máy PC đích bị tắt.
  • Do đường truyền vật lý.

Lệnh Ping giúp cho chúng ta chuẩn đoán nhanh chóng và hiệu quả các sự cố mạng, ping là ứng dụng luôn được sử dụng đầu tiên khi có lỗi xảy ra.

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ì, có mấy loại gói tin, hạn chế của ICMP là gì

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì

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 massageishealthy.com

Pinging massageishealthy.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.

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

Giao thức ARP và giao thức RARP là gì, có ý nghĩa gì?

Trên một mạng cục bộ hai trạm chỉ có thể liên lạc với nhau nếu chúng biết địa chỉ vật lý của nhau. Như vậy vấn đề đặt ra là phải thực hiện ánh xạ giữa địa chỉ IP (32 bits) và địa chỉ vật lý (48 bits) của một trạm.

Giao thức ARP (Address Resolution Protocol)

Giao thức ARP (Address Resolution Protocol) đã được xây dựng để chuyển đổi từ địa chỉ IP sang địa chỉ vật lý khi cần thiết. Ngược lại, giao thức RARP (Reverse Address Resolution Protocol) được dùng để chuyển đổi địa chỉ vật lý sang địa chỉ IP. Các giao thức ARP và RARP không phải là bộ phận của IP mà IP sẽ dùng đến chúng khi cần.

Giao thức TCP

TCP (Transmission Control Protocol) là một giao thức “có liên kết” (connection – oriented), nghĩa là cần thiết lập liên kết (logic), giữa một cặp thực thể TCP trước khi chúng trao đổi dữ liệu với nhau.

TCP cung cấp khả năng truyền dữ liệu một cách an toàn giữa các máy trạm trong hệ thống các mạng. Nó cung cấp thêm các chức năng nhằm kiểm tra tính chính xác của dữ liệu khi đến và bao gồm cả việc gửi lại dữ liệu khi có lỗi xảy ra. TCP cung cấp các chức năng chính sau:

  • Thiết lập, duy trì, kết thúc liên kết giữa hai quá trình.
  • Phân phát gói tin một cách tin cậy.
  • Đánh số thứ tự (sequencing) các gói dữ liệu nhằm truyền dữ liệu một cách tin cậy.
  • Cho phép điều khiển lỗi.
  • Cung cấp khả năng đa kết nối với các quá trình khác nhau giữa trạm nguồn và trạm đích nhất định thông qua việc sử dụng các cổng.
  • Truyền dữ liệu sử dụng cơ chế song cổng (full-duplex).

Thông tin tổng hợp nhiều nguồn từ Massageishealthy.

Giao thức ICMP là gì, có mấy loại gói tin, hạn chế của ICMP là gì
5 (100%) 1 vote[s]
Chia sẻ để mọi người cùng biết nhé ❤

Tác giả: Lê Định

Tôi là Lê Định - CEO & Founder của Massageishealthy. Chuyên viên sức khỏe và đời sống, biên tập viên cho các báo về chuyên đề sức khỏe con người, cuộc sống lành mạnh. Hiện đang công tác tại Massageishealthy với vai trò cố vấn chuyên môn về sức khỏe và đời sống, ẩm thực dinh dưỡng khỏe và đẹp cho mọi người. Đầy đủ thông tin tại Lê Định CEO Massageishealthy Email ledinh121189@gmail.com

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *