Różne implementacje traceroute w systemie operacyjnym
0
Biorąc pod uwagę, że różne systemy operacyjne mogą używać różnych typów pakietów (na przykład: pakiety UDP, pakiety TCP, żądania echa ICMP), czy mogę być pewien, że aktywna sesja przeglądarki będzie podążać tą samą ścieżką, którą podąży wywołanie traceroute?
Innymi słowy, jeśli aktywnie przeglądam www.stackexchange.com, czy mogę mieć pewność, że moja sesja jest kierowana przez węzły zwrócone przez traceroute do www.stackexchange.com jednocześnie z aktywną sesją przeglądarki?
Jeśli jeszcze nie rozumiesz routingu IP, wyniki z traceroute nic ci nie powiedzą. Trasa między dwoma węzłami w szerszym Internecie może zmieniać się z drugiego na drugi. A trasa w jednym kierunku nie jest taka sama jak trasa powrotna. I to nawet nie uwzględnia faktu, że konkretny przypadek, o którym wspominasz, używa CDN, co oznacza, że nie tylko można zmienić trasę, ale rzeczywiste maszyny, z którymi rozmawiasz, mogą być inne.
Powiedziawszy to, nie ma gwarancji, że trasa, którą otrzymasz ze traceroute, jest taka sama, jak używana przez aplikację. Może to być z kilku powodów (prawdopodobnie więcej niż kilkanaście, jeśli policzysz niejasne przypadki), w tym:
ISP w ścieżce, która celowo kieruje pakiety traceroute inaczej, aby ukryć swoją topologię
topologia zmienia się w jakiś sposób między traceroute a TCP SYN
istnieje jakaś forma równoważenia obciążenia lub CDN, która celowo przekierowuje pewien ruch
Są to te najbardziej prawdopodobne, które mogę wyjaśnić bez zagłębiania się w działanie sieci.
A tak przy okazji, twój komentarz „różne systemy operacyjne mogą używać różnych typów pakietów” jest niepoprawny. Każdy system podłączony do Internetu Internet wykorzystuje wszystkie te typy pakietów, nie można bez nich obsługiwać sieci.
Myślę, że rozumiem zasady routingu IP - właśnie byłem „poza grą” przez 4-5 lat WRT różnych wdrożonych obecnie technologii. Rozumiem, że każdy system operacyjny jest w stanie używać TCP | UDP | ICMP (i więcej) - moje pytanie miało na celu zrozumienie praktycznych mechanizmów routingu dla projektu, nad którym pracuję. Mój „inny system operacyjny” był specyficzny dla polecenia traceroute, jak jestem pewien, że jesteś świadomy.
TL7
Po dalszej lekturze odpowiedzi, myślę, że przegapiłeś ważną część mojej oryginalnej wiadomości: sesja . Równoważniki obciążenia i praca CDN w kontekście ustanawiania połączenia sesji, ale powinny pozostać trwałe aż do czasu stanowy komponenty (TCP, BGP) tego połączenia sesji są zakończone.
TL7
Kontekst (i poziom) tego tematu jest ważny. Podczas gdy w teorii (tj. Na wysokim poziomie) przesyłanie pakietów przez Internet jest bardzo dynamiczny, dla specyficznego (i skończonego) połączenia sesji, routingu pakietów nie jest dynamiczny. W tym sesja kontekst, ścieżki routingu (wychodzące i przychodzące) są trwałe - chyba że inne technologie routingu są „wstawiane” do sesji (na przykład przeglądarka Tor).
TL7
@ TL7 Prawdopodobnie należy zaktualizować pytanie, aby przynajmniej poprawić sformułowania dotyczące systemów operacyjnych i wyjaśnić, że naprawdę chodzi o różne implementacje traceroute i mogą mieć różne wartości domyślne, ale mają także opcje do wyboru. Poza tym nie było dla mnie jasne, kiedy to czytam, że robisz swoje traceroute podczas sesji. Ponownie czytając teraz z myślą o tym, że widzę, że było to zamierzone, możesz też przeredagować tę część.
MAP
@ TL7 Po otwarciu połączenia TCP, kolejne pakiety w tym podobnie połączenie może nadal podążać różnymi drogami. W wielu częściach rdzenia internetowego mogą występować zmiany trasowania wewnętrznego dostawcy usług internetowych, które mają miejsce w kolejności sekund. Dlatego niektórzy dostawcy usług internetowych próbują wykryć traceroute pakiety i kieruj je specjalnie, aby ukryć ich topologię i wewnętrzny routing. Poza tym wydaje się, że nie myślisz o routingu asymetrycznym, co jest bardzo powszechne. Ścieżka powrotna z odległego końca może nie być taka sama (zwykle te same ASy, ale gorący ziemniak oznacza przekazanie w różnych miejscach).
MAP
1
Normalnie traceroute użyje komunikatu ICMP. Jeśli korzystamy z komunikatu TCP lub UDP, traceroute nie może znać usług działających na komputerze docelowym, co oznacza, że trudno jest określić port w komunikacie TCP lub UDP. Ale komunikat ICMP powinien być OK, jeśli nie ma zapory blokującej komunikat ICMP.
czy mogę być pewien, że aktywna sesja przeglądarki będzie podążać tą samą ścieżką, którą wykonuje moje wywołanie traceroute?
W skrócie, nie.
Jeśli między komputerem a komputerem docelowym istnieje równoważenie obciążenia, ścieżka może być inna, ponieważ traceroute i przeglądarka używają dwóch sesji (zależy to od reguł równoważenia obciążenia).
Dziękujemy za wejście WRT traceroute. Nie przejmuję się tak bardzo tym, co się dzieje „w firewallu docelowym” - próbuję zrozumieć, jak zidentyfikować / przeanalizować routing HTTP / HTTPS z perspektywy „realnego świata”. Jakieś sugerowane narzędzia do użycia?
TL7
Traceroute to najlepsza opcja. Chodzi mi o to, że traceroute może nie wyświetlać dokładnie tej samej ścieżki w przeglądarce. W większości sytuacji traceroute jest w stanie pokazać ścieżkę, jeśli nie ma ograniczeń zapory ogniowej lub równoważenia obciążenia. Jeśli istnieje zapora ogniowa i blokuje ona komunikat ICMP, nie ma sposobu na wykrycie ścieżki za nią. Ponieważ traceroute opiera się na komunikacie ICMP, który odpowiada każdy węzeł na ścieżce. Jeśli zapora go zablokuje, otrzymasz limit czasu.
traceroute
i mogą mieć różne wartości domyślne, ale mają także opcje do wyboru. Poza tym nie było dla mnie jasne, kiedy to czytam, że robisz swojetraceroute
podczas sesji. Ponownie czytając teraz z myślą o tym, że widzę, że było to zamierzone, możesz też przeredagować tę część.traceroute
pakiety i kieruj je specjalnie, aby ukryć ich topologię i wewnętrzny routing. Poza tym wydaje się, że nie myślisz o routingu asymetrycznym, co jest bardzo powszechne. Ścieżka powrotna z odległego końca może nie być taka sama (zwykle te same ASy, ale gorący ziemniak oznacza przekazanie w różnych miejscach).Normalnie traceroute użyje komunikatu ICMP. Jeśli korzystamy z komunikatu TCP lub UDP, traceroute nie może znać usług działających na komputerze docelowym, co oznacza, że trudno jest określić port w komunikacie TCP lub UDP. Ale komunikat ICMP powinien być OK, jeśli nie ma zapory blokującej komunikat ICMP.
W skrócie, nie. Jeśli między komputerem a komputerem docelowym istnieje równoważenie obciążenia, ścieżka może być inna, ponieważ traceroute i przeglądarka używają dwóch sesji (zależy to od reguł równoważenia obciążenia).
źródło