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 port 80
), umieści tam nowy port źródłowy (np 12345
.).
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)