Wpis z mikrobloga

Pytanie - skąd router wie do którego komputera w mojej sieci przyszedł pakiet? Jaki protokół / mechanizm to ogarnia?

Z tego co widzę urządzenia korzystające z internetu z mojego routera mają taki sam publiczny adres ip.
Ale router w jakiś sposób pakiety które dostaje potrafi pokierować do konkretnego prywatnego ip (konkretnego komputera).
Jaki mechanizm odpowiada za zmapowanie ip publicznego na prywatny?

ps. z tego co ja wyczytałem: DHCP przydziela adresy ip prywatne w LAN, ARP powiąże prywatne ip z konkretnym MAC.
Jedynie NAT (Network Address Translation) mi pasuje na coś co mogło by powiązać ip publiczne z prywatnym ip, ale w jaki sposób by pamiętał który komputer żądał tego? Modyfikuje w jakiś sposób pakiet tcp/ip by przy żądaniu gdzies zachować prywatny adres ip czy może pamięć podręczna routera jakoś to kojarzy?

#programowanie #siecikomputerowe
  • 16
@kolegamichaua: okej, hipotetycznie: dwa kompy w tej samej sieci żądają strony X i wysyłają żądanie.
Przychodzi odpowiedź z: adres publiczny serwera X. Router widzi, że dwa kompy pytały (dla utrudnienia z tego samego portu) więc musi być chyba jeszcze jakiś mechanizm który jednoznacznie identyfikuje żądanie z danego kompa - może pole checksum z pakietu tcp/ip?
@Lewo: Router wysyłając zapytanie na zewnątrz wybiera inne porty wychodzące. Ma więc pełną tablice informacji który komputer z sieci wewnętrznej na jaki adres zewnętrzny i po jakim porcie zewnętrznym. Maszyna odpowiada na ten sam port, z którego wyszło połączenie. Poszukaj sobie Network Address Port Translation (NAPT)
@apo: rozumiem, że NAT nie ogarnie gdyby wszystkie kompy korzystały aktywnie z wszystkich portów (router ma 65535 portów a każdy komp w sieci może być 65535) - czyli limit będzie liczba portów w routerze?

Jak dobrze rozumiem, to działa na zasadzie:
1. Komp A ( 192.168.0.10 ) port 80, żąda strony 100.100.100.100
2. Komp B (192.168.0.20) port 80, żąda strony 100.100.100.100
3. Router zmodyfikuje żądanie
- jak będzie miał zajęty swój
Router widzi, że dwa kompy pytały (dla utrudnienia z tego samego portu) więc musi być chyba jeszcze jakiś mechanizm który jednoznacznie identyfikuje żądanie z danego kompa - może pole checksum z pakietu tcp/ip?


@Lewo:
Od początku
Komputer1: 192.168.0.10 pyta z portu 13290
Komputer2: 192.168.0.20 pyta z portu 13290
Oba pakiety idą do routera ten w tablicy NAT wpisuje sobie że:
Komputer1: ma adres publiczny: 1.1.1.1 i port 32901
Komputer2: ma adres
@d1sconn3cted: dzięki, teraz jasne. NAT to standard w routerach domowych? Bo na wiki jest napisane że wykorzystuje się w sieciach korporacyjnych oraz w sieciach osiedlowych (nie wspominają o sieciach domowych)
rozumiem, że NAT nie ogarnie gdyby wszystkie kompy korzystały aktywnie z wszystkich portów (router ma 65535 portów a każdy komp w sieci może być 65535)


@Lewo: Czysto teoretycznie dla jednego zewnętrznego adresu IP tak. Realnie nie. Router może utrzymać znacznie więcej przepływów i dzielić porty pomiędzy aplikacje ale wtedy potrzeba bardziej zaawansowanych rozwiązań.

Przepływ jest identyfikowany przez:
adres lokalny,
port lokalny,
adres docelowy,
port docelowy,
protokół.
Każdy komputer kliencki może nawiązać
@Lewo: tak w każdej sieci domowej to znajdziesz gdzie jest ipv4, przy ipv6 to się zmieni bo adresów jest więcej.


@d1sconn3cted: nie zmieni się, bo nigdy nie stanie się powszechne ( ͡° ͜ʖ ͡°) NAT załatwia wszelkie problemy ilości dostępnych IP - a jeśli ich zabraknie, to się zacznie odbierać tym co je marnują. Przy okazji NAT zapewnia większe bezpieczeństwo niż byśmy mieli w sytuacji, gdzie
nie zmieni się, bo nigdy nie stanie się powszechne ( ͡° ͜ʖ ͡°) NAT załatwia wszelkie problemy ilości dostępnych IP - a jeśli ich zabraknie, to się zacznie odbierać tym co je marnują.


@enron: wiadomo można się spierać natomiast prędzej czy później wg. mnie jednak spowszechnieje szczególnie że obecnie sporo działa na podwójnym stacku mając ipv4 i ipv6 ;)

Przy okazji NAT zapewnia większe bezpieczeństwo niż byśmy
nie zmieni się, bo nigdy nie stanie się powszechne ( ͡° ͜ʖ ͡°) NAT załatwia wszelkie problemy ilości dostępnych IP - a jeśli ich zabraknie, to się zacznie odbierać tym co je marnują.

@enron: wiadomo można się spierać natomiast prędzej czy później wg. mnie jednak spowszechnieje szczególnie że obecnie sporo działa na podwójnym stacku mając ipv4 i ipv6 ;)


Nadal wielu operatorów traktuje ipv6 po macoszemu, sprzęty
Adresy ipv6 są nieintuicyjne i chyba nikt ich nie lubi ( ͡° ͜ʖ ͡°)


@enron: jak spytasz ludzi którzy tutaj pytają o to jak policzyć subnet to Ci powiedzą że ipv4 też jest nieintyuicyjne ( ͡º ͜ʖ͡º) kwestia przyzwyczajenia

Najnormalniej w świecie NIE MA potrzeby istnienia tak gigantycznej puli adresów jaką daje ipv6. Nie ma potrzeby (a wręcz nie powinno być) routowania
@Lewo: Tak ogolnie mozesz szukac pod haslami PAT (port adres translation) czy nat overload gdy jest tylko jeden adres publiczny. W firmach adresow publicznych mozna miec wiecej, firewalle, vpny, lacza dedykowane. Zeby bylo smieszniej nie tylko nat czy "typowy" vpn sluzy do chowania IP.