2012-11-11 57 views
6

Traceroute là một ứng dụng để theo dõi đường dẫn từ A đến B. (A là vị trí của bạn và B là máy chủ bạn muốn theo dõi). Trong Windows, bạn có thể nhập tracert. Thuật toán chính là:Traceroute: Nó có thể theo dõi một đường dẫn từ A đến B chính xác không?

send UDP with TTL = 1 
Server A1 received, and return ICMP packet to A because TTL is expired. 
--> know first machine between. For example A1. 

send UDP with TTL = 2 
Server A1 received, and send this UDP to server A2. 
Server A2 received, and return ICMP packet to A because TTL is expired 
--> know second machine between. In this example is A2. 

Do it until to B. we can track down: A -> A1 -> A2 -> ... ->B 

Thuật toán này có hoạt động chính xác không? Bởi vì tại thời điểm khác nhau, một máy chủ trung gian có thể gửi một tin nhắn đến máy chủ khác nhau. Ví dụ, ở lần đầu tiên, thông báo UDP được gửi tới A1, nhưng sau đó, nó có thể gửi đến một máy chủ khác, ví dụ, B1. Vì vậy, theo dõi tuyến đường sẽ không hoạt động đúng.

Tôi có hiểu nhầm điều gì đó không?

+3

Tôi đã bình chọn điều này vì đó là một câu hỏi rất thú vị! Tôi cũng muốn biết câu trả lời từ các chuyên gia! – James

Trả lời

2

Từ trang người đàn ông:

traceroute theo dõi các gói tin đường đi từ một mạng IP trên theo cách của họ đến một máy chủ cho

Vì vậy, nếu bạn đang cố gắng để tìm một của số có thể đường dẫn gói của bạn có thể mất, bạn sẽ tìm thấy một người bạn trong số traceroute.

Bây giờ vì bảng định tuyến không thay đổi từng phút, các gói mà bạn gửi sẽ nhất có thể là có cùng đường dẫn như được theo dõi bởi traceroute.

Một điểm quan trọng khác không thể bỏ qua là tùy chọn tuyến đường ghi ghi trong tiêu đề IP v4. Khi bạn chỉ định rằng bạn muốn sử dụng tùy chọn này, mọi bộ định tuyến trong đường dẫn sẽ thêm địa chỉ IP của nó vào các tùy chọn trong tiêu đề. Bạn có thể đọc thêm về nó here. Việc nắm bắt được rằng đích đến được biết về các bước nhảy trung gian, không phải là nguồn.

Tôi thấy rằng bạn đã bỏ lỡ vai trò của yêu cầu echo icmp và thư trả lời trong mô tả về traceroute. Trong trường hợp điều này không cố ý, hãy lấy look.

Cập nhật: Bạn có thể thấy tùy chọn con đường kỷ lục trong hành động bằng cách làm một -R ping -R

ping Bật ghi tuyến đường cho các gói tin Echo Request và màn hình đệm tuyến đường trên gói trở (bị bỏ qua bởi nhiều bộ định tuyến ).

2

Thuật toán hoạt động đúng. Thật vậy, định tuyến có thể thay đổi do cân nhắc các máy chủ khác nhau trên đường đi, chẳng hạn như tải máy chủ hoặc tính khả dụng. Giả sử bạn muốn gửi tin nhắn từ A đến B. Nếu tuyến đường không thể thay đổi, điều gì sẽ xảy ra nếu một số máy chủ trên tuyến đường bị hỏng? Nếu không thể điều chỉnh định tuyến động, điều đó sẽ dẫn đến việc không thể gửi thông điệp đến đích trong ví dụ này. Đây là một ví dụ khác: giả sử bạn có một máy chủ được sử dụng cho một số tính toán nặng trong ngày nhưng nó không hoạt động trong đêm. Có thể cho phép nó chỉ vượt qua lưu lượng truy cập trong đêm, vì vậy bất kỳ định tuyến nào sử dụng nó sẽ cần phải được thay đổi vào ban ngày.

Để kết luận tất cả điều này, chúng tôi chắc chắn có thể nói rằng không có định tuyến động, internet không thể tồn tại trong 'biểu mẫu hiện tại của nó.

Addition:

Tracert gửi tin nhắn từ A đến B. Nó cho thấy bước nhảy trên đường đi. Những bước nhảy này tạo thành một tuyến đường hợp lệ từ A đến B tại thời điểm thực hiện. Không có đảm bảo rằng kết nối giữa 2 điểm liền kề trên đường đi là hợp lệ sau khi hop đã được hoàn thành. Điều duy nhất được đảm bảo là cho mỗi hop có một liên kết giữa nó là 2 thiết bị đầu cuối khi tin nhắn được gửi bởi tracert được chuyển đến đó.

+0

Tôi nghĩ bạn hiểu lầm câu hỏi của tôi. Câu hỏi của tôi là, vì tuyến đường có thể thay đổi nên chúng tôi không thể biết chính xác tuyến đường từ A đến B bằng thuật toán này? – hqt

+0

Tôi đã thêm vào câu trả lời của mình – SomeWittyUsername

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