W jaki sposób serwer WWW zwraca żądanie HTTP? [duplikować]

1

To pytanie ma już odpowiedź tutaj:

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?

ejk314
źródło
Każdy pakiet TCP / IP zawiera źródłowy adres IP komputera użytkownika. Odpowiedź serwera WWW jest kierowana do tego adresu IP tą samą metodą, którą skierowało żądanie do serwera WWW (choć niekoniecznie tą samą drogą).
HBruijn
Ale źródłowy adres IP mojego komputera lokalnego to jakiś lokalny adres IP, na przykład 192.168.0.11/24. Router nie może po prostu wysłać pakietu na ten adres, prawda?
ejk314,
2
Jeśli czytasz artykuł Adres źródłowy To pole to adres IPv4 nadawcy pakietu. Pamiętaj, że ten adres może zostać zmieniony podczas przesyłania przez urządzenie do translacji adresów sieciowych. Że może być zmieniona należy traktować jako: zwykle zmieniane, ponieważ większość konsumentów są rzeczywiście tyłu urządzenia NAT. Urządzenie NAT utrzymuje pakiet translacji przychodzący pakiet na porcie X powinien przejść do adresu wewnętrznego 192.168.0.11 port Y.
HBruijn
1
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.
joeqwerty

Odpowiedzi:

2

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.

Sid_Hussey
źródło
1

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.

Evan Anderson
źródło
Najwyraźniej z mojej strony istnieje pewna okropna z góry niewiedza - staram się dowiedzieć, co to jest. Adres IP klienta jest podobny do 192.168.0.11/24, więc w jaki sposób pakiet może zostać wysłany na ten adres? Nie mogłem po prostu wysłać żądania na dowolny dowolny adres w innej podsieci, o której mój router nie wiedział, prawda?
ejk314,
3
Router jest urządzeniem do translacji sieci, które modyfikuje adres źródłowy w każdym pakiecie i aktualizuje go publicznym adresem IP. Utrzymuje również tabelę tłumaczeń, dzięki czemu pakiety odpowiedzi przychodzące na ten publiczny adres IP są kierowane na poprawny wewnętrzny adres IP.
HBruijn
0

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.

AFH
źródło
Właśnie widziałem komentarz HBruijna poniżej, który dość dobrze podsumowuje ten proces bez użycia technicznego żargonu.
AFH