2012-04-25 34 views
13

Theo chương trình Stevens (TCP/IP Illustrated) chương trình traceroute gửi gói UDP đến máy chủ đích với TTL gia tăng (1, 2, 3, v.v.) để lấy thông tin bước nhảy trung gian từ ICMP TTL EXPIRED tin nhắn.
Các "điểm đạt" điều kiện là một ICMP Port Unreachable tin nhắn, vì traceroute giải quyết một cổng ngẫu nhiên với một số lượng lớn (có nghĩa là: không một người nào đó đang lắng nghe đó)
Vì vậy, câu hỏi của tôi là: là có một kỹ thuật lý do (các mặt hạn chế, RFC, vv) để sử dụng các gói UDP thay vì sử dụng, ví dụ, Yêu cầu echo ICMP tin nhắn (với TTL tăng) và sử dụng câu trả lời echo làm điều kiện kết thúc?
Tôi hiểu rằng câu trả lời ICMP echo có thể được lọc ra bởi tường lửa hoặc các thiết bị mạng khác ở giữa, nhưng tôi đoán điều này có thể xảy ra cũng để các gói tin UDP;)Tại sao traceroute gửi gói UDP chứ không phải gói ICMP?

Nhiều Cảm ơn
Sergio

Trả lời

13

Nó thực sự phương pháp "cũ" làm các traceroutes. Tôi đoán động lực chính là việc gửi các gói UDP đơn giản không yêu cầu đặc quyền đặc biệt, như gửi các gói ICMP (ổ cắm thô hoặc tương đương). Đó là lý do tại sao ví dụ ping thường được setuid thành root, đây là một rủi ro bảo mật lớn.

Ngày nay, traceroute cũng hỗ trợ các gói ICMP và TCP, vì vậy bạn có nhiều khả năng lén lút tường lửa hơn, có nhiều khả năng không được triển khai mà không xem xét. Điều này cũng có nghĩa là traceroute cũng có thể được thiết lập root trên hệ thống của bạn. Xem trang người đàn ông của mình, đặc biệt là phần về các phương pháp có sẵn: http://linux.die.net/man/8/traceroute

Các vấn đề liên quan