TCP / IP na poziomie transportu

3

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 :)

hedgehogrider
źródło
1
Naprawdę pytasz o to, co dzieje się na poziomie transportu, a nie na poziomie fizycznym - sprawdź en.wikipedia.org/wiki/Osi_model więcej na różnych poziomach.
Brian Driscoll
Naprawdę pytasz pytanie - jak działa Internet. Wiele dobrych wyjaśnień można znaleźć w Internecie. Jak na przykład ten i ten .
David Schwartz
Nie zwlekaj z modelem protokołu OSI, ponieważ Internet ma swój własny model, model TCP / IP.
sawdust

Odpowiedzi:

3

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.

jefflunt
źródło
Bardzo przydatne linki Normalocity, teraz przechodzę rozmowy Gibsonsa teraz!
hedgehogrider
2

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.

Jerry Coffin
źródło
+1 - Dobry punkt - „router zbliżający twój pakiet” jest czymś, co osiąga cały system, ale jako punkt Jerry'ego nie jest „fizycznie” bliższy geograficznie. Jest „bliżej” pod względem skoków sieci, zależy od tego, jak rzeczy są ze sobą powiązane, a nawet wtedy „bliżej” z każdym skokiem jest najlepszym scenariuszem, a niekoniecznie gwarantowanym. Zadaniem TCP jest dostarczenie pakietu do miejsca docelowego, w jakiś sposób, i spróbowanie zrobić to efektywnie, kiedy tylko może.
jefflunt
1

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,

  1. Twój system operacyjny rozwiązuje www.foo.com na adres IP, kontaktując się ze znanym adresem IP serwera DNS
  2. Łączy się z adresem IP www.foo.com przez port TCP 80 i wysyła żądanie HTTP

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.

jman
źródło
0

Jak działa routing

  • Odbierz lub wygeneruj pakiet, uzyskaj jego docelowy adres IP
  • Przejrzyj każdy wpis w Forwarding Information Base (FIB) (np. Tabela tras) i znajdź najbardziej odpowiedni wpis, który pasuje. bardziej szczegółowe tutaj oznacza najwyższą notację podsieci CIDR. tj. wpis FIB 192.168.2.1/28 zostanie wybrany ponad 192.168.2.1/24, jeśli oba istnieją.
  • Jeśli w FIB są dwa dokładne wpisy, wybierany jest ten z niższą metryką.
  • Jeśli znajdziemy wpis pasujący, pobierz adres IP bramy tego wpisu i wyślij pakiet do tego adresu IP.
  • Nie znalazłeś żadnego? Wyślij pakiet do IP, który jest bramą domyślną.
  • Więcej niż jedna brama domyślna? Zaokrąglij między nimi lub użyj pierwszego i używaj go, dopóki nie dowiemy się, że nie działa, a następnie użyj drugiego (przełączenie awaryjne)
  • Brak domyślnej bramy? Upuść pakiet.

Zauważ, że:

  • Jeśli pakiet jest przeznaczony do czegoś w tej samej podsieci, nie ma potrzeby trasowania. Więc jeśli twój komputer 192.168.2.1/24 wysyła pakiet do 192.168.2.2/24, nie wyśle ​​go przez bramę domyślną lub żaden router.
  • Każdy interfejs daje nam bezpłatną trasę poprzez bezpośrednie połączenie. Więc jeśli masz interfejs ustawiony na 192.168.2.1/24 (tj. Maska podsieci 255.255.255.0), otrzymasz bezpłatną trasę.
  • Localhost jest bezpośrednio podłączony do tego celu.
  • Jeśli uruchamiasz takie rzeczy jak RIP, OSPF, BGP, mogą zaktualizować FIB.

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.

LawrenceC
źródło