Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

ICMP lý thuyết và ứng dụng

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • ICMP lý thuyết và ứng dụng

    ICMP lý thuyết và ứng dụng - bài 1

    .....Có bạn băn khoăn cho rằng bạn học CCNA rồi mà vẫn chưa biết hết các thông số của lệnh ping. emThuy có vài điều muốn chao đổi về ICMP xin được đưa ra đây để mong làm "quý nhân" cho bạn đó và mong được các bạn chỉ giáo thêm. Xin nói trước là bài dài, nếu ai tuổi già sức yếu (những người dùng dialup) xin lỗi hẹn !!!
    ..... Vào đề:
    ...……. Đã nói đến ping thì phải nói đến ICMP, vậy ICMP là cái gì?
    ..... Kể rằng:
    .....IP không có cơ chế để biết data mà nó đã gửi có đến được đích chưa, nên mới sinh ra cái gọi là Internet Control Message Protocol (ICMP). ICMP không phải để giải quyết cái thuộc tính unreliability vốn có của IP mà ICMP message có nhiệm vụ đơn giản là báo cho sender biết việc gửi data đi đã có vấn đề.
    .....Ví dụ: host A gỏi một datagram tới host Z, nhưng trên đường tới đích, có thể do một trong số các nguyên nhân sau sẽ làm cho gói tin không đến được đúng đích:
    ..... + Các thiết bị trung gian như routing protocol chưa đú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 dích không hỗ trợ upper-layer protocol. Được gọi là unreachable protocol
    ..... + Host đich 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 sảy ra vấn đề sẽ gửi lại một gói tin trong đó có ICMP message 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 message trên và hoàn toàn không biết là có vấn đề trên đường truyền.
    .....Đã là một message được chuyền đi trong mạng thì nó cũng phải đi qua các lớp phía dưới. Và dữ liệu (nội dung chính của message đó) 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 message lại sảy ra lỗi và lại sinh ra một cái error report nữa (và làm tăng congestion) ICMP sẽ không có error report nữa.
    .....Có nhiều loại ICMP message và mỗi loại mang môt thông điệp lỗi cụ thể khác nhau. Kiểu message được nhận ra nhờ format dữ liệu của message đó.
    .....Các loại ICMP message được encap với header đều có 3 trường chung:
    .....+Type (8bit): Chỉ kiểu của ICMP message - tức là problem cần gửi đến sender (ví dụ: Type = 0 -> Echo request message, Type = 8 -> Echo reply message 2 cái này dùng cho ping đó)
    .....+Code (8bit): Bổ sung thông tin thêm cho Type (ví dụ với Type = 0/8 code=0 -> echo message)
    .....+Checksum (16bit)
    Sau đó là các trường option khác. Và sau header là data.

    I. Các loại ICMP message thường thấy: (có thể dùng các trình bắt gói tin để kiểm tra)
    .....1. ICMP echo messages
    Có hai loại là echo request và echo reply message tương ứng với 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 là 16bit/field) là ID và sequence Number dùng để nhận biết giữ các cặp reply/request.
    Chi tiêt về echo message và ping sẽ được bạn ở phần sau.

    .....2. ICMP Destination Unreachable message
    .....Như đã nói về Destination Unreachable. 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 nghuyê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 Unreachabl
    .........

    .....3. ICMP Parameter Problem message
    .....Vấn đề sảy ra 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. Khi đó thiêt bị trung gian gửi một ICMP Parameter Problem message cho sender với các trường như sau.
    .....Type = 12
    .....Code = 0 - 2 (cái này tui cũng không rõ cụ thể là cho loại nào)
    .....Thêm một trường Poiter (8bit) để chỉ vị trí của octet lỗi

    Control Messages
    Control Messages, không mang các thông báo về lost packet hoặc error conditions. Control Message báo cho host biết các điều kiện như đang có congestion hoặc là có gateway hợp lý hơn cho host.

    .....4. ICMP Redirect/Change Request message
    .....Là một loại Control Messages, nó chỉ được gởi đi bởi một default gateway và nó báo cho host nhận biết là có best path cho mi đọ nếu có các điều sau sảy ra (hi vọng phần này có bác nào bày tỏ quan điểm với tui):
    .....+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ùnd 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ác loại Redirec Require Message ứng với các type và code sau:
    .....Type = 5 code = 0 -> Ridirect datagram for the network
    .....Type = 5 code = 1 -> Ridirect datagram for the host
    .....Type = 5 code = 2 -> Ridirect datagram for the type of service and the network
    .....Type = 5 code = 3 -> Ridirect datagram for the type of service and the host

    .....5. ICMP Timestamp Request message
    .....Dùng để đồn 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 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 mesage thì nó là Address Mask correct của host)

    .....8. ICMP Router Discover message
    ....
    Type = 9 Code =0

    .....8. ICMP Router Solicitation message
    Được dùng khi sender mất default gateway
    Type = 10 Code = 0

    .....9. ICMP Source Quench message
    .....Được 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. Nó thuộc loại Flow-Control Message
    Type = 4 Code = 0
    …….
    để biết rõ nội tình vụ việc mời theo dõi tiếp hồi sau ….

  • #2
    RE: ICMP lý thuyết và ứng dụng

    ICMP lý thuyết và ứng dụng - bài 2
    II. Thực hành ICMP với lệnh ping
    Ứng dụng thường dung nhất của ICMP là ping để Troubleshoot. Lệnh ping có thể dùng để test 3 lớp phía dưới của mô hình TCP/IP. Bạn hãy xem hình đính kèm.
    .....Giả vờ host A ping một phát sang host B có điạ chỉ là 128.16.9.5 hặc có thể ping tới địa chỉ http://www.cisco.com các bạn có thể thực hành trên PC và trên Cisco Router và sẽ thấy là output là khác nhau.
    .....Khi bạn ping, host sẽ gửi các ICMP echo request mesage tới điạ chỉ đích. Nếu thành công, đích sẽ báo về, nếu bất thành thì cũng như là xe máy đâm vào tường và than ôi tin buồn báo về từ đồn công an xa gần nhất mà chiếc xe có thể đi ...
    Example 1: host ping unsuccessful
    C:\>ping 128.16.9.5
    Pinging 128.16.9.5 with 32 bytes of data:
    Destination host unreachable.
    Destination host unreachable.
    Destination host unreachable.
    Destination host unreachable.
    Ping statistics for 128.16.9.5:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
    C:\>
    Example 2: router ping unsuccessful
    Router_A# ping 128.16.9.5
    Type escape sequence to abort.
    Sending 5, 100byte ICMP echoes to 128.16.9.5, timeout is 2 seconds:
    . . . . .

    Success rate is 0 percent (0/5)

    Router_A#
    Example 3: host ping successful
    C:\>ping 128.16.9.5
    Pinging 128.16.9.5 with 32 bytes of data:
    Reply from 128.16.9.5: bytes=32 time=30ms TTL=247
    Reply from 128.16.9.5: bytes=32 time=20ms TTL=247
    Reply from 128.16.9.5: bytes=32 time=20ms TTL=247
    Reply from 128.16.9.5: bytes=32 time=20ms TTL=247
    Ping statistics for 128.16.9.5:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 20ms, Maximum = 30ms, Average = 22ms
    C:\>
    Example 3: router ping successful
    Router_A# ping 128.16.9.5
    Type escape sequence to abort.
    Sending 5, 100byte ICMP echoes to 128.16.9.5, timeout is 2 seconds:
    ! ! ! ! !

    Success rate is 100 percent (5/5), round-trip min/avg/max = 36/36/36/36 ms

    Router_A#
    Ý nghĩa của các kí tụ trong output khi thực hiện ping với Cisco Router.
    ..... "!" -> echo request message đến đích lành lặn và trở về OK
    ..... "." -> echo request message không đến được đích. Có thể do: echo message bị filter trên route. Do đường xa tốn săng mà không đến đựơc đích đồng thời cũng không gửi được cái ICMP destination unreachable message về. Hoặc đơn giản nhât là các vấn đề của kết nỗi vật lý...
    ..... "U" -> Nhận được ICMP unreachable message. Nguyên nhân đã nói
    ..... "C" -> Source Quench message. Nguyên nhân đã nói
    ..... "&" -> Host không thể chờ echo reply message được thêm nữa, thời gian đã vượt quá. (quá bao nhiêu vậy xem trong output thế nó mới gọi là thực hành)

    Ý nghĩa của các mô tả khác trong output khi thực hiện ping với Cisco Router.

    Với 1 output sau:

    C:\>ping www.cisco.com

    Pinging www.cisco.com[198.133.219.25] with 32 bytes of data:

    Reply from 198.133.219.25: bytes=32 time<30ms TTL=128
    Reply from 198.133.219.25: bytes=32 time<20ms TTL=128
    Reply from 198.133.219.25: bytes=32 time<20ms TTL=128
    Reply from 198.133.219.25: bytes=32 time<20ms TTL=128

    Ping statistics for 198.133.219.25:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 20ms, Maximum = 30ms, Average = 22ms
    .....- Đã gửi 4 echo request message.
    .....- Đã nhận được 4 lần echo reply message, mỗi echo có size = 32 byte
    .....- time<20ms -> thời gian từ khi echo request message đi tới khi nhận được echo reply message (round trip) <20 ms
    .....- Điều nhiều người bàn luận nhất là Time-to-Live (TTL): TTL là số nguyên.
    .....Để đón lõng trường hợp route từ source đến destination quá nhiều hop hoặc là một circular routing path, mà ta đã biết là mỗi routing Protocol đều có một giới hạn về sô hop mà nó có thể chấp nhận (như RIP là 15) vì vậy khi một echo message chạm mức đó thì Teo teo teo tèo... end of its life và khi đó thì nó cũng reach TTL.
    .....Giá trị của TTL thường tương ứng với maximum hop count của routing protocol. Với mỗi datagram sẽ được đặt TTL và khi mà router sử lý datagram đó thì nó sẽ giảm giá trị của TTL đi 1 (TTL--) Nếu TTL = 0 thì packet sẽ bị bỏ đi (bỏ đi phí nhỉ). Và nhờ ICMP, nó sẽ báo về một cái Time Excessively Message (có type = 11 và code = 0) để bào rằng. Để đến địa chỉ đích thì sẽ vượt quá ngưỡng time cho phép....

    .....Bài này được viết khi bụng đã đói cồn cào và người viết thì cũng mới mang máng về ICMP. Có gì cần bổ sờ sung xin OK nhé...

    Thân 2!

    Comment


    • #3
      RE: ICMP lý thuyết và ứng dụng

      Giao thức IP hoạt động tại lớp Network được sử dụng bởi IP cho nhiều dịch vụ khác nhau. Bản tin ICMP được mang trực tiếp trong gói tin IP với trường Protocol Number bằng 1.

      Có rất nhiều trường hợp khiến cho gói tin IP bị loại bỏ: Đường truyền có sự cố, trường Time-to-Live hết hạn, không phân mảnh được gói tin kích thước lớn hơn MTU cho phép....Khi một gói tin cần loại bỏ, bản tin ICMP được sử dụng để thông báo về địa chỉ gửi gói tin. Tuy nhiên, không phi trường hợp nào ICMP cũng cần phải báo lỗi. Sau đây là một số trường hợp mà khi xảy ra sự cố, ICMP không cần báo lỗi:

      - Định tuyến hay chuyển giao gói tin ICMP.
      - Phát quang bá hay phát theo nhóm gói tin IP.
      - Các phân đoạn gói tin khác với phân đoạn đầu tiên.
      - Bản tin có địa chỉ nguồn không xác định một host duy nhất (ví dụ: 127.0.0.1, 0.0.0.0).

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

      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.

      Trường TYPE của ICMP xác định ý nghĩa của thông điệp cũng như định dạng của nó.Các kiểu bao gồm:
      - 0: Echo reply
      - 3: Destination unreachable
      - 4: Source quench
      - 5: Redirect
      - 8: Echo
      - 9: Router advertisement
      - 10: Router solicitation
      - 11: Time exceeded
      - 12: Parameter problem
      - 13: Timestamp request
      - 14: Timestamp reply
      - 15: Information request (obsolete)
      - 16: Information reply (obsolete)
      - 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: Photuris
      The beautiful thing about learning is that no one can take it away from you. (B.B. King)

      Comment

      Working...
      X