Próbuję zrozumieć, co się dzieje, gdy wysyłam pakiet za pomocą gniazda na poziomie transportu. Czy wszystkie pakiety, które opuszczają mój komputer, trafiają najpierw do lokalizacji geograficznej wyznaczonej przez mojego dostawcę usług internetowych? Czy mój pakiet jest przesyłany przez tunele należące do mojego dostawcy Internetu, dopóki nie dotrze do jednego połączonego bezpośrednio z serwerem pochodzenia? Na jakim etapie dochodzi do DNS? Jeśli domena nie zostanie przetłumaczona na adres IP, dopóki nie opuści mojego domu, jak mój router będzie wiedział, że zawiera pakiety przeznaczone do transferu w sieci LAN?
Przepraszam, jeśli brzmię naiwnie, czytam tylko specyfikację RFC HTTP i próbuję powiązać znaki na ekranie z prawdziwymi wydarzeniami. Wszystkie przypuszczenia, które podejmuję, są wnioskami, które nie mają oparcia w rzeczywistym zrozumieniu. Preferowany byłby prosty język, metafory byłyby wyjątkowe :)
Odpowiedzi:
To jest bardziej pytanie warstwy transportowej. Szczegóły można wyjaśnić trochę bardziej poprzez zrozumienie Model OSI . Dokonuję tego rozróżnienia, ponieważ model OSI ma
physical layer
, więc kiedy pytasz „... na poziomie fizycznym”, te słowa mają określone znaczenie w technologii sieciowej, o której być może nie jesteś świadomy i mogą prowadzić do pewnego zamieszania, jeśli postawisz to pytanie, powiedzmy, sieci Administrator.Krótka odpowiedź na twoje pytanie brzmi: opuszcza Twój dom i podróżuje przez serię routerów (pierwszy w twoim domu, następnie przez niektórych w twoim ISP, a następnie w innych sieciach), w końcu docierając do celu. To prawie wszystkie routery między tobą a twoim miejscem docelowym, jak seria przystanków przy dostawie pakietu UPS, dzięki czemu pakiet jest „bliżej” miejsca docelowego, jednego kroku (lub „przeskoku”) na raz. Dokładnie to, które routery obsługują i pomagają w dostarczeniu danego pakietu, jest określane w miarę przesyłania pakietu i może się zmienić w dowolnym momencie. Należy również powiedzieć, że znaczenie „zbliżenia pakietu z każdym przeskokiem” jest po prostu najlepszym rozwiązaniem i niekoniecznie jest gwarantowane - TCP po prostu stara się być tak wydajny, jak może być podczas transmisji.
Teraz to jest nadmierne uproszczenie o tym, jak to działa, ale na ten temat jest o wiele więcej niż to, co można łatwo odpowiedzieć w kilku akapitach.
Dlatego kieruję do wielkiego i dość szczegółowego (zakłada brak wiedzy) wyjaśnienia TCP jako serii Bezpieczeństwo teraz! odcinki, które polecam jako świetne wprowadzenie i omówienie tematu:
Te odcinki zaczynają się od wyjaśnienia, jak działa TCP, a następnie od niektórych problemów, wyzwań i możliwych przyszłych zmian / udoskonaleń, które mogą być konieczne. Wszystkie trzy odcinki razem są dobre 3-5 godzin słuchania, ale powiedziałbym, że to będzie wymagało naprawdę głębokiej odpowiedzi na twoje pytanie. Słuchaj jak najwięcej (lub tak mało), jakie uważasz za interesujące.
źródło
DNS angażuje się głównie w odpowiadanie na coś takiego
gethostbyname
(tj. znalezienie adresu numerycznego, który idzie z podaną nazwą hosta). W kilku przypadkach własny stos IP komputera odpowie na takie pytania bez konsultacji z DNS, zazwyczaj pobierając adres z lokalnego pliku HOSTS. Było to powszechne w pewnym momencie, ale już dawno stało się stosunkowo rzadkie (pliki HOSTS nadal są użyteczne w testowaniu, a także wykorzystywane przez niektóre złośliwe oprogramowanie do przekierowania niektórych żądań do maszyny wybranej przez autora złośliwego oprogramowania).Kiedy wyślesz na ten adres, stos IP twojego komputera uporządkuje, skąd go wysłać. Najpierw używa maski podsieci, aby ustalić, czy adres jest „lokalny”, czy nie. Jeśli jest lokalny, użyje ARP, aby znaleźć adres MAC Ethernet (lub cokolwiek innego, ale obecnie głównie Ethernet), do którego ma wysłać pakiet. Jeśli adres nie jest lokalny, wyśle go na domyślny adres bramy.
Zakładając, że nie jest lokalny, brama domyślna będzie zwykle routerem. Twój router wyśle go do routera ISP, który następnie wyśle go do innego i drugiego, aż dotrze tam, gdzie powinien się znajdować. Istnieją pewne protokoły (RIP, RIPv2, itp.), Które routery mówią sobie nawzajem, jak pobierać pakiety z jednego miejsca do drugiego. W przypadku typowego routera domowego rzeczy są proste: wszystko, co nie jest lokalne, trafia do jednego miejsca. W przypadku większego routera u dostawcy usług internetowych sprawy są nieco bardziej skomplikowane - często ma kilka innych miejsc, w których może wysłać pakiet. RIP (i przyjaciele) dają mu wystarczająco dużo informacji, aby wybrać „właściwy” (tj. Ten, który prawdopodobnie będzie najlepszym wyborem).
Jeśli chcesz zobaczyć, gdzie są twoje pakiety, większość systemów udostępnia program o nazwie
tracert
który prześledzi trasę z maszyny do innej określonej przez użytkownika.Widzę, że @normalocity już opublikował odpowiedź. Byłbym jednak ostrożny w jednej rzeczy: wspomina, że router zbliża twój pakiet do miejsca przeznaczenia. To prawda, ale tylko w raczej wirtualnym sensie, a nie fizycznym. Na przykład, kiedyś użyłem tracert do śledzenia trasy z mojej maszyny w domu do maszyny w centrum, około 5 mil dalej. Mimo że obie maszyny znajdowały się w Colorado Springs w stanie Kolorado, moje pakiety zostały skierowane do Denver, a następnie do San Jose, zanim wróciły na inny dość lokalny komputer.
źródło
Na twoje pytanie jest zbyt wiele części. Spróbuję odpowiedzieć na każde z nich krótko. Będziesz musiał zagłębić się w każdy z nich, aby zrozumieć więcej.
DNS : Wszystkie pakiety nie trafiają do DNS. Twój system operacyjny już zna adres IP serwera DNS (poprzez konfigurację twojego dostawcy usług internetowych) i tłumaczy nazwy FQDN na adresy IP, kontaktując się z tym serwerem DNS.
HTTP : Więc wpisując www.foo.com w przeglądarce,
Routing : Jak pakiet dociera do innego adresu IP to routing IP. Przeczytaj o sieciach z komutacją pakietów, aby zrozumieć routing hop-by-hop. Zarówno ruch HTTP (TCP), jak i DNS są kierowane identycznie (routery nie przejmują się ładunkiem). Tylko, że miejsca docelowe będą inne.
źródło
Jak działa routing
Zauważ, że:
Routery klasy operatorskiej twojego dostawcy usług internetowych mają FIB, a proces jest taki sam. Skacząc router do routera, przechodząc przez ten sam proces, aż do osiągnięcia celu lub upuszczenia pakietu. Zazwyczaj „wyższe” przejście do góry, tym większy FIB, a więcej tras będzie pochodzić z takich rzeczy, jak BGP i tym podobne.
źródło