To pytanie ma już odpowiedź tutaj:
- Skąd Router wie, gdzie przesłać odpowiedzi na pakiet 2
Przepraszam, jeśli to naprawdę głupie pytanie; moja wiedza na temat sieci jest dość niewielka.
Tak więc użytkownik wysyła żądanie HTTP na jakiś adres. To żądanie pochodzi z adresu w lokalnej podsieci, ale router wie, że wysyła żądanie do swojej domyślnej bramy, ponieważ docelowy adres IP nie pasuje do niczego innego w jego tabeli routingu. Żądanie przeskakuje przez Internet i ostatecznie jest odbierane przez komputer docelowy (serwer WWW). To wszystko ma sens.
Ale w jaki sposób serwer WWW może odesłać żądanie z powrotem na komputer lokalny? Czy żądanie nie pochodzi z adresu IP w lokalnej podsieci? Skąd wziął adres IP routera lokalnego komputera? A nawet jeśli ma adres IP tego routera, w jaki sposób pakiet jest kierowany do komputera lokalnego, gdy dotrze do routera?
But the source IP of my local machine is some local IP address, like 192.168.0.11/24. The router can't just send a packet to that address, can it?
- Nie ogólnie. Źródłowy adres IP to tak naprawdę adres IP NAT przypisany do tego konkretnego pakietu / strumienia ruchu przez zaporę ogniową lub router klienta. NAT ma zastosowanie w 99,999% scenariuszy. NAT nie będzie używany tylko wtedy, gdy klienci używają routowalnych adresów IP przypisanych bezpośrednio do klientów, a NAT nie jest używany na zaporze sieciowej lub routerze.Odpowiedzi:
Pakiet ma adres źródłowy, jak wspomniano wcześniej, ale ma także przypisany numer portu. Jest to szczególnie potrzebne w środowisku NAT (gdzie wewnętrzne adresy IP są prywatne, a zewnętrzne adresy IP są stałe - jak współdzielenie połączenia internetowego). Router przypisuje losowy nieużywany numer portu i przechowuje tabelę, do której odnosi się numer portu (komputer użytkownika). Gdy pakiet jest odbierany przez router, sprawdza numer portu i dopasowuje i wysyła do komputera / użytkownika.
zaktualizuj / popraw to, jeśli okaże się błędne, ale tak to działa. Mam nadzieję że to pomoże.
źródło
Odpowiedź serwera WWW jest obsługiwana tak jak żądanie klienta. To tylko datagramy IP.
Serwer WWW ma domyślną bramę, na którą wysyła swoją odpowiedź. Odpowiedź „przeskakuje przez Internet i ostatecznie jest odbierana” przez klienta, który utworzył żądanie.
Serwer sieciowy „nic nie wie” na temat routera klienta żądającego.
Edytować:
Twój komentarz zdradza moje założenie.
Mówisz o sytuacji, w której komputer kliencki wnioskujący prywatny adres IP i jest dołączony do sieci za pomocą Network Address Translation (NAT) routera na granicy sieci klienta (w przypadku, gdy sieć łączy się z Internetem).
W takim przypadku adres IP komputera klienckiego zostanie przetłumaczony przez router NAT na publiczny adres IP przypisany do „zewnętrznego” interfejsu routera NAT. Router NAT śledzi żądanie, dzięki czemu odpowiedź jest kierowana z powrotem do klienta po otrzymaniu z Internetu.
źródło
Odpowiedź leży w SPI - Stateful Packet Inspection . W ten sposób router śledzi, gdzie wysłać odpowiedź w swojej podsieci. Sam nie znam wszystkich drobiazgów (nigdy nie musiałem wiedzieć), ale jeśli podążysz za linkiem, znajdziesz tyle, ile prawdopodobnie musisz wiedzieć. Jeśli nie, wyszukiwanie w „Stateful Packet Inspection” uzupełni wszelkie luki.
źródło