Traceroute có sử dụng UDP hoặc ICMP hoặc cả hai không?


24

Khi tôi thực hiện theo dõi trên tên miền www.google.com từ máy tính xách tay của mình, tôi đang sử dụng icmp hoặc udp?
Tôi nghĩ rằng đó là icmp loại 11 nhưng trong khi tìm kiếm một cái gì đó khác, tôi đã tìm thấy các quy tắc trong đó icmp loại 30 được sử dụng và tôi thấy các quy tắc sử dụng udp.
Ai đó có thể giải thích cho tôi làm thế nào mà làm việc?
Tôi đang làm việc trên một tường lửa (iptables) cho một máy chủ chuyên dụng ảo.

Câu trả lời:


26

Loại gói được gửi khác nhau tùy thuộc vào việc thực hiện. Theo mặc định, Windows tracertsử dụng ICMP và cả Mac OS X và Linux đều traceroutesử dụng UDP. Tôi không có máy BSD hoặc Solaris hoặc bất kỳ HĐH nào khác để kiểm tra nhưng trang hướng dẫn cho phiên bản Mac OS X có đề cập đến xuất xứ của nó là BSD 4.3.

Các phiên bản Mac và Linux tôi cung cấp khả năng chọn nhiều giao thức khác nhau bao gồm các gói ICMP, TCP, UDP và GRE. Các giao thức khác có thể được chỉ định bằng tên hoặc số của chúng nhưng traceroute không biết gì về cách các giao thức khác hoạt động. Nó chỉ mù quáng gửi chúng.

Họ cũng có thể thay đổi tải trọng và cổng nguồn và cổng đích để tránh tường lửa hoặc khám phá bộ định tuyến nào dọc theo đường dẫn đang thả các gói có kích thước nhất định.

Tất cả các phiên bản của traceroute đều dựa trên phản hồi ICMP loại 11 (Đã vượt quá thời gian) từ mỗi bước nhảy dọc theo tuyến đường. Nếu các phản hồi ICMP loại 11 đang bị chặn bởi tường lửa của bạn, traceroute sẽ không hoạt động. Các gói này là trong nước, không gửi đi.

ICMP loại 30 được chỉ định cụ thể cho traceroute và được gắn nhãn là "Yêu cầu thông tin". Tôi đã không thể tìm thấy bất cứ nơi nào mà điều này thực sự được sử dụng. Trang hướng dẫn dành cho phiên bản Mac OS X và Linux cho biết -Isẽ gửi ICMP loại 8 (yêu cầu tiếng vang). Wikipedia nói rằng Windows tracertcũng sử dụng các yêu cầu echo ICMP. ICMP loại 30 hoặc loại 8 là các gói gửi đi, không gửi đến.

ICMP loại 0 (phản hồi tiếng vang) có thể trở lại là gói cuối cùng khi TTL chính xác bằng số bước nhảy. Traceroute sẽ biết nó đã hoàn thành khi nhận được một trong những thứ này. Đây là một gói gửi đến.

Các gói TCP SYN sẽ gây ra một RSTgói hoặc một SYN ACKgói phản ứng khi chúng đến đích. Nếu bạn nhận được một SYN ACKgói, thật lịch sự khi theo dõi một RSTgói để không để lại kết nối nửa mở trên máy chủ.

Có thể lấy lại phản hồi ICMP loại 3 mã 4 thay vì phản hồi ICMP loại 11 nếu bạn gửi một gói lớn với cờ "Không phân đoạn", tuy nhiên điều này chỉ có thể cho phép bạn tìm hop với MTU nhỏ nhất . Thông thường bạn sẽ chỉ nhận được loại phản hồi này từ một bước nhảy dọc theo tuyến đường. Không phải tất cả trong số họ.


8

Traceroute truyền thống sử dụng UDP trên các cổng tăng dần cho mỗi bước nhảy.

Bạn có thể sử dụng bất kỳ loại gói nào để thực hiện nó - ICMP, TCP SYN, v.v. Tất cả những gì bạn cần là gói IP hết hạn và bạn là vàng.

Các triển khai khác nhau, như MacOS, cung cấp hỗ trợ cho nhiều loại traceroute, cũng như các chế độ không tăng cổng, v.v., để vượt qua các hạn chế tường lửa.


7
Cổng UDP mặc định khi triển khai giống như unix là từ 33434 đến 33534. Việc triển khai ICMP sử dụng "yêu cầu tiếng vang" (loại 8).
Ouki
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.