To małe pytanie teoretyczne, które mylę mnie od dłuższego czasu.
Zasadniczo, jeśli jesteśmy w prywatnej sieci LAN i chcemy, aby przychodzące pakiety docierały na przykład do serwera HTTP zlokalizowanego na jednym z komputerów, przekierowujemy porty, aby przychodzące pakiety docierały dokładnie do tego komputera.
Teraz jestem dość zdezorientowany, w jaki sposób pakiety „odpowiedzi” docierają do miejsca docelowego w sieci LAN, na przykład kiedy otwieramy stronę internetową lub coś podobnego. Naprawdę nie mogę znaleźć żadnych przydatnych informacji na ten temat.
Mam nadzieję, że ktoś może dać mi kilka wskazówek lub połączyć mnie z informacjami, które mogą to wyjaśnić. Dzięki.
EDYCJA: Myślę, że powinienem to wyjaśnić. Przykładem tego jest coś takiego:
1. Komputer wewnątrz sieci LAN z jednym zewnętrznym adresem IP próbuje załadować stronę internetową z serwera sieciowego poza tą siecią LAN (w zasadzie w Internecie)
2 Serwer WWW odpowiada i odsyła stronę z powrotem do tego komputera.
To, co mnie dość myli w tym momencie, to skąd router wie, jaki komputer wysyła przychodzące dane (biorąc pod uwagę, że router jest podłączony do sieci LAN z wieloma komputerami) bez wcześniejszego przekierowania portów.
Odpowiedzi:
Mimo że pytanie zostało w pełni uwzględnione. Wydaje mi się, że ten proces najlepiej opisać krok po kroku.
W tym przykładzie siedzę w prywatnej sieci LAN połączonej z Internetem za pośrednictwem routera. Ponieważ nasza sieć ma jeden publiczny adres IP, używamy NAT.
Kiedy więc poproszę o stronę
superuser.com
, która wygeneruje wiele pakietów IP. Spójrzmy na jeden.Źródło pakietu IP :
192.168.1.12
(moje IP)Miejsce docelowe:
64.34.119.12
(superuser.com)Teraz mój system najprawdopodobniej jest skonfigurowany podobnie do tego, o którym mowa. Mam własny adres IP (
192.168.1.12
), maskę podsieci (255.255.255.0
) i domyślną bramę (192.168.1.1
). Teraz, ponieważ moje pole Miejsce docelowe w moim pakiecie IP wskazuje sieć inną niż moja, jest ono wysyłane do mojej domyślnej bramy (a nie bezpośrednio do komputera).Ale w jaki sposób pakiet może dostać się do domyślnej bramy, jeśli Miejsce docelowe wskazuje gdzieś zupełnie inaczej?
Ethernet
To proste, ponieważ do tego celu używamy adresowania protokołu Ethernet. Po prostu ustawiliśmy nasz docelowy adres IP w pakiecie IP i adres MAC naszej domyślnej bramy jako miejsce docelowe w ramce Ethernet .
Teraz upewni się, że nasza domyślna brama pobierze pakiet
superuser.com
. Tak!Teraz brama ma nasz pakiet i może wysłać go na swoją ścieżkę. Ale aby upewnić się, że otrzyma odpowiedź, najpierw musi zastąpić adres źródłowy pakietu (w przeciwnym
superuser.com
razie próbowałby wysłać odpowiedź do jakiegoś (prawdopodobnie) nieistniejącego urządzenia z moim adresem IP w swojej sieci. bardzo fajnie.)Więc mój router umieści swój publiczny adres IP w polu Źródło :
Źródło pakietu IP :
92.69.127.243
(mój publiczny adres IP)Miejsce docelowe:
64.34.119.12
(superuser.com)Teraz ta sama gra trwa i trwa z wszystkimi routerami na świecie, dopóki pakiet nie dotrze w końcu
superuser.com
i nie zostanie wygenerowana odpowiedź.Odpowiedź
Odpowiedź
Źródło pakietu IP :
64.34.119.12
(superuser.com)Miejsce docelowe:
92.69.127.243
(mój publiczny adres IP)Ok, odpowiedź dotarła do mojego routera, co teraz? Skąd mój router może teraz wysłać odpowiedź
192.168.1.12
?TCP
Cóż, to faktycznie działa, ponieważ przyjrzeliśmy się tylko częściom komunikacji IP i Ethernet. To, co sprawia, że działa, to część TCP.
Najprawdopodobniej wiesz, że serwery sieciowe zwykle działają na porcie
80
. IP nie ma pojęcia portów . To pochodzi z TCP . W TCP mamy (podobnie jak w IP) port źródłowy i docelowy .Mój pakiet TCP do superuser.com
Źródło:
192.168.1.12
(mój adres IP)Port źródłowy:
11111
(port, który utworzył mój komputer)Miejsce docelowe:
64.34.119.12
(superuser.com)Port docelowy:
80
Kiedy router wyśle ten pakiet początkowy (który jest adresowany
superuser.com
na port80
), umieści tam nowy port źródłowy (np12345
.).I to jest ważna część! Zapamięta tę wymianę!
Pakiet TCP mojego routera do superuser.com
Źródło:
92.69.127.243
(mój publiczny adres IP)Port źródłowy:
12345
(port utworzony przez mój router)Miejsce docelowe:
64.34.119.12
(superuser.com)Port docelowy:
80
Tak więc pakiet odpowiedzi otrzymany przez router wygląda następująco:
Odpowiedź Pakiet TCP od superuser.com
Źródło:
64.34.119.12
(superuser.com)Port źródłowy:
80
Miejsce docelowe:
92.69.127.243
(mój publiczny adres IP)Port docelowy:
12345
(port utworzony przez mój router)Więc teraz pobiera ten pakiet i widzi, że jest to port, który wcześniej zapamiętał, został przypisany do operacji NAT dla adresu IP
192.168.1.12
(mojego adresu IP).Odpowiedź Pakiet TCP z mojego routera
Źródło:
64.34.119.12
(superuser.com)Port źródłowy:
80
Miejsce docelowe:
192.168.1.12
(mój adres IP)Port docelowy:
11111
(port utworzony przez mój komputer)źródło
Tłumaczenie adresu sieciowego . W skrócie, gdy router bramy prywatnej sieci LAN zastępuje prywatny adres źródłowy sieci LAN własnym adresem publicznym, modyfikuje pakiet w pewien sposób, na przykład przypisując unikalny i poza tym lokalnie bez znaczenia numer portu, który mapuje z powrotem na źródłowy węzeł sieci LAN i żądanie wychodzące . Zapamiętuje to mapowanie portów, więc kiedy odpowiedź wraca do publicznego adresu IP / unikalnego portu #, on (router) wie, jak usunąć mapowanie z powrotem do jednego z jego węzła źródłowego. W ten sposób można również uruchamiać wiele kart, przeglądarek lub instancji przeglądarki, a odpowiedzi na każde żądanie przeglądarki wracają do właściwej przeglądarki i karty.
źródło
Kiedy pakiet początkowy dociera do zewnętrznego interfejsu routera, zmienia docelowy adres IP pakietu zgodnie z konfiguracją przekierowania portów i przesyła zmodyfikowany pakiet do wewnętrznego interfejsu routera (w razie potrzeby po zwykłym ARP)
Pakiet dociera do serwera WWW i nadal ma zewnętrzny źródłowy adres IP, który będzie używany jako adres docelowy dla każdej odpowiedzi. Serwer odpowiednio adresuje wychodzące pakiety odpowiedzi w zwykły sposób za pomocą docelowego adresu IP równego źródłowemu adresowi IP żądania. Ponieważ adres IP żądającego jest zewnętrzny, pakiet jest adresowany w warstwie MAC do wewnętrznego interfejsu routera.
Pamiętaj, że w każdej warstwie sieci są różne cele.
źródło
Przekierowanie portów odbywa się zwykle na routerze lub urządzeniu do niego sąsiadującym. Gdy urządzenie w sieci LAN wysyła ruch do innego urządzenia w tej samej sieci LAN, router w ogóle nie jest zaangażowany. Ruch drogowy nawet go nie dotyka. Twoje reguły przekierowania portów nie będą miały wpływu na ruch LAN-to-LAN.
Ethernet został zaprojektowany z myślą o topologii „magistrali”, w której każdy komputer był fizycznie podłączony do tego samego nośnika. Podczas gdy nowoczesne przełączniki optymalizują przepływ ruchu, ucząc się adresu MAC na drugim końcu portu i odpowiednio replikując ruch, topologia „magistrali” nadal pozostaje. Wszystko, co jest podłączone do standardowego przełącznika, może „bezpośrednio” dotrzeć do czegokolwiek innego (zakładając, że znajduje się w tej samej podsieci) bez konieczności „przechodzenia” przez urządzenie pośrednie, takie jak router.
Możesz być zdezorientowany, jeśli urządzenie, do którego podłączasz wszystkie komputery, ma wiele portów Ethernet „LAN”, a następnie pojedynczy port „WAN”. Tego typu urządzenia są w rzeczywistości zarówno routerem, jak i przełącznikiem w tej samej obudowie.
Tak więc w Twojej sieci LAN, jeśli serwer HTTP ma adres 192.168.1.55, aby uzyskać do niego dostęp w sieci LAN, musisz wpisać „ http://192.168.1.55 ” w pasku adresu przeglądarki. Router nigdy tego nie widzi. Aby dotrzeć do niego poza siecią LAN, musisz wpisać swój zewnętrzny adres IP, tj. „ Http://256.99.88.77 : {port, który tu przekazałeś}” lub cokolwiek to jest. Uderza to w router, działa na nim funkcja NAT routera, a następnie router wysyła go do 192.168.1.55.
źródło
Po prostu, gdy komputer w prywatnej sieci LAN inicjuje połączenie wychodzące, brama NAT automatycznie generuje dla niego mapowanie portów. Są one mniej więcej takie same jak wcześniej mapowane porty: {port publiczny, adres prywatny, port prywatny} i są używane w ten sam sposób. Największą różnicą w przypadku mapowań dynamicznych jest to, że brama NAT często musi arbitralnie przypisywać porty publiczne do mapowań, gdy oczekiwany numer portu jest już w użyciu.
źródło