Giới thiệu
Thông điệp 'ICMP Destination Unreachable' khá thú vị, bởi vì thực sự là nó không chỉ chứa 1 thông điệp mà có tới tận 6 thông điệp. Điều này có nghĩa là ICMP Destination Unreachable được chia thành 6 thông điệp khác nhau.
Bài này sẽ phân tích tất cả 6 thông điệp Destination Unreachable và giải thích mỗi thông điệp được sử dụng làm gì. Bảng dưới đây cho thấy 1 bảng tóm tắt ngắn gọn về các thông điệp sẵn có và giá trị của chúng có chứa trong ICMP Header.
Để khỏi lẫn lộn, thì các bạn hãy ghi nhớ rằng: ICMP Destination Unreachable là 1 thông điệp chung, các giá trị code khác nhau hoặc các thông điệp là 1 phần của nó là để làm rõ loại thông điệp "Destination Unreachable" nhận được là loại nào.
Thông điệp ICMP Destination Net Unreachable là loại thông điệp mà người dùng thường nhận được từ 1 gateway khi nó không biết làm thế nào để đi đến 1 mạng cụ thể nào đó.
Thông điệp ICMP Destination Host Unreachable là loại thông điệp mà người dùng thường nhận được từ remote gateway khi host đích không thể truy cập.
Nếu trong host đích các modul IP không thể chuyển đến gói tin bởi vì các modul giao thức hay các cổng quá trình không hoạt động, thì host đích có thể gửi 1 thông điệp ICMP Destination Protocol/Port Unreachable tới host nguồn.
Trong trường hợp khác, khi gói tin nhận được phải được phân mảnh để được chuyển tiếp bởi 1 Gateway nhưng cờ "Don't Fragment" được bật, thì gateway phải loại bỏ gói tin đó và gửi 1 thông điệp ICMP Destination Fragmentation Needed and DF Set Unreachable tới host nguồn.
Các thông điệp ICMP này rất hữu ích khi khắc phục sự cố mạng. Bạn có thể kiểm tra xem tất cả các router và gateway được cấu hình đúng và bảng định tuyến của chúng được cập nhật và đồng bộ.
Chúng ta hãy xem cấu trúc của 1 gói tin ICMP Destination Unreachable:
Phân tích
Khi bạn mở chương trình command promt và gõ "ping 200.200.200.200", giả sử rằng máy của bạn không phải là 1 phần của mạng đó, thì nó sẽ chuyển yêu cầu ICMP Echo tới gateway đã được cấu hình trong TCP/IP Properties của bạn. Vào thời điểm đó, gateway có thể tìm ra nơi để chuyển tiếp yêu cầu ICMP Echo.
Gateway thường có 1 entry là "default route", entry này thường được sử dụng khi gateway không biết mạng đích ở đâu. Bây giờ, nếu gateway không có "default route" bạn sẽ nhận được 1 thông điệp "ICMP Destination Net Unreachable". Khi bạn kết nối với Internet thông qua 1 modem thì gateway mặc định của bạn chính là modem đó.
Tôi sẽ phân tích tại sao bạn lại nhận được thông điệp ICMP Destination Net Unreachable:
Trong ví dụ ở trên, tôi đã thiết lập máy trạm của tôi sử dụng máy chủ Linux như là 1 gateway mặc định, máy chủ Linux có địa chỉ IP là 192.168.0.5. Máy chủ Linux cũng có 1 entry "default gateway" với địa chỉ IP: 192.168.0.1 (Windows 2000 Server).
Khi máy trạm của tôi cố gắng ping (gửi 1 yêu cầu ICMP Echo) tới địa chỉ IP 200.200.200.200, nó nhận ra rằng nó đang ở trên 1 mạng khác với địa chỉ IP đấy, bởi vậy nó sẽ gửi đến máy chủ Linux, sau đó máy chủ Linux sẽ chuyển tiếp đến default gateway (Windows 2000 Server) để có thể chuyển tiếp ra Internet và cuối cùng tôi sẽ nhận được 1 thông điệp ping reply (ICMP Echo Reply) nếu host có địa chỉ 200.200.200.200 tồn tại và không có tường lửa nào chặn các yêu cầu ICMP Echo.
Đây là gói tin mà tôi đã chụp được:
Khi nhìn vào gói dữ liệu được giải mã bạn có thể nhìn thấy phần ICMP type trong ICMP Header có giá trị là 8, vì vậy có thể chắc chắn rằng nó là 1 ICMP Echo (ping). Như đã đề cập trước đó, chúng ta mong muốn nhận được 1 ICMP Echo Reply.
Chúng ta hãy xem thử điều gì xảy ra nếu default gateway được loại bỏ khỏi máy chủ Linux:
Ở hình trên tôi đã loại bỏ default gateway của máy chủ Linux. Vì vậy, khi nhận được 1 gói dữ liệu từ máy trạm của tôi, thì máy chủ Linux sẽ không biết phải làm gì với gói tin đó. Sau đó gateway tạo ra 1 thông điệp "ICMP Destination Net Unreachable" và gửi nó trở lại với host nguồn (máy trạm của tôi).
Đây là hình ảnh hiển thị từ command prompt:
Như bạn đã thấy, máy chủ Linux đã trả lại 1 thông điệp "ICMP Destination Net Unreachable". Đây là 1 trong 6 thông điệp đã được liệt kê ở đầu bài này. Máy chủ Linux không biết cách gì để xử lý gói tin vì nó không có cách gì để xác định được mạng 200.200.200.200 ở đâu, bởi vậy nó gửi lại thông điệp "ICMP Destination Net Unreachable" cho máy trạm của tôi, để nói rằng nó không có cách nào xác định được mạng mà tôi vừa ping đến.
Hãy cùng xem thử gói tin chụp được:
Gói tin ở trên cho thấy rằng máy chủ Linux (192.168.0.5) gửi trả lại máy trạm (192.168.0.100) 1 thông điệp ICMP Destination Unreachable (có thể thấy ở trường ICMP type) và nếu nhìn kỹ hơn ta có thể thấy được trường ICMP Code có giá trị bằng 0, có nghĩa là Net Unreachable (có thể xem lại ở hình đầu tiên).
Có 1 điều đáng chú ý là Returned IP Header nằm ở trong ICMP Header. Đây chính là IP Header của gói tin mà máy trạm gửi tới máy chủ Linux khi nó cố gắng ping 200.200.200.200.
Trên đây là bài phân tích về thông điệp ICMP Destination Unreachable.
Lược dịch từ bài gốc: Click Here
Bài tiếp theo: ICMP - Source Quench Message
Không có nhận xét nào:
Đăng nhận xét