Rozumiem, w jaki sposób maski podsieci służą do podziału sieci na podsieci, ale dlaczego każdy komputer w sieci musi znać maskę podsieci, a nie tylko router?
Mogłem to zrozumieć, gdyby każdy komputer był fizycznie połączony ze sobą przewodem, ale i tak wszystkie pakiety muszą przejść przez router.
Powiedzmy, że mam komputer w sieci 192.168.0.0/255.255.255.0
, który ma adres IP 192.168.0.1
.
Jeśli ten komputer próbuje dotrzeć do komputera spoza podsieci, powiedzmy 192.168.1.1
, przesyła wiadomość do routera, router rozpoznaje, że adres IP znajduje się poza zakresem adresów IP podsieci, a nie przesyła go w podsieci sieć, przesyła ją do sieci, do której jest podłączony (być może inny router).
if each computer were physically connected to each other with a wire
- musisz pamiętać, że tcp / ip został wynaleziony w czasie, gdy tak naprawdę jest. Google10-base-2
. Istnieją inne protokoły, które działają inaczej niż TCP / IP, ale w ciągu ostatnich 20 lat IPv4 wygrał bitwę protokołu.Odpowiedzi:
Twoje pierwotne założenia nie są całkowicie poprawne. To, co nazywacie „routerem”, to dwa urządzenia w jednym - dwuportowy router wewnętrznie podłączony do wieloportowego przełącznika Ethernet . (Oto przykładowy diagram .)
Oznacza to, że komputery są bezpośrednio połączone w warstwie 2 i mogą wysyłać do siebie pakiety bez przechodzenia przez rdzeń routera - są one po prostu przekazywane między portami przez układ przełączający. (Router ma własny „port” w przełączniku).
Jeśli więc spojrzysz na pakiety za pomocą Wireshark, zobaczysz, że bezpośrednio używają one swoich adresów MAC, podczas gdy pakiety „zewnętrzne” zawsze mają adres MAC routera.
(Zakładam, że mówisz o typowych „routerach bezprzewodowych” spotykanych w większości domów, które są typową przyczyną tego rodzaju pytań. Większa sieć miałaby oddzielny router z jednym portem na podsieć i kilkoma osobne przełączniki (być może jeden główny plus jeden na piętro / pokój) i kilkadziesiąt komputerów podłączonych do tych przełączników.)
Z grubsza to samo z sieciami Wi-Fi, z tym że „przełącznik” zastępuje się „mostem bezprzewodowym”, czyli „punktem dostępu”. W obu przypadkach połączone komputery mogą wysyłać pakiety bezpośrednio do siebie na warstwie 2, bez przechodzenia przez router.
Komentarze:
To znowu jest nieprawidłowe. Przełączniki nie mają tej wiedzy; ich rdzeń przełączający działa na warstwie 2 i nie wie nic o IP - przesyła ramki Ethernet wyłącznie na podstawie pola „docelowego adresu MAC”.
Dlatego hosty potrzebują maski podsieci, aby dowiedzieć się, jakiego adresu MAC użyć jako miejsca docelowego:
Jeśli element równorzędny znajduje się w tej samej podsieci, zakłada się, że z definicji jest on-link - więc ramka Ethernet będzie miała adres MAC elementu równorzędnego jako miejsce docelowe.
W przypadku elementów równorzędnych poza podsiecią ramka Ethernet będzie miała adres MAC bramy jako miejsce docelowe.
(Dotyczy to konfiguracji domyślnej. Niektóre sieci ze specjalnymi płatkami śniegu zmieniają to - np. Większość systemów operacyjnych pozwala na dodanie dodatkowych tras „na łączu” dla dodatkowych podsieci; i odwrotnie, niektóre przełączniki mogą być skonfigurowane fałszywe odpowiedzi ARP, tak że nawet „na łączu” „ruch jest wymuszany przez bramę.)
źródło
Skąd komputer wie, czy adres docelowy znajduje się w tej samej podsieci w innej?
Sprawdzanie lokalnego adresu i maski podsieci .
Sprawdźmy kilka przykładów:
Jeśli mój komputer ma adres IP
192.168.0.1
i maskę255.0.0.0
, oznacza to, że każdy adres od192.0.0.0
do192.255.255.255
znajduje się w tej samej podsieci. Pakiety do wszystkich innych komputerów nie muszą przechodzić przez router, mogą być wysyłane bezpośrednio. Wyślij pakiet ARP, aby uzyskać adres MAC komputera docelowego, a następnie wyślij pakiet.Ale, jeśli komputer ma adres IP
192.168.0.1
i maska jest255.255.255.128
następnie komputery w tej samej podsieci IP są od adddress192.168.0.0
aby192.168.0.127
tylko. Można do nich dotrzeć bezpośrednio (wyślij ARP, znajdź adres MAC itp.). Każdy inny adres, na przykład,192.168.0.200
musi zostać osiągnięty, przechodząc przez router.źródło
Nieco oczywiste w IP jest to, że każde urządzenie IP jest routerem .
Można to zobaczyć na zwykłym komputerze z poleceniem „wydrukuj trasę”. Masz połączenie z dwiema sieciami: lokalnym segmentem Ethernet lub Wi-Fi oraz siecią localhost. Każdy pakiet musi podlegać decyzji o tym, która sieć ma go zainstalować.
Staje się to bardziej widoczne, jeśli umieścisz komputer w dwóch sieciach, powiedz „publiczną” i „prywatną”. Teraz zdecydowanie potrzebujesz maski podsieci, aby zdecydować, w której sieci wysłać pakiet.
Wiele osób przypadkowo odkryje, że komputer z pojedynczym połączeniem sieciowym może pracować z nieprawidłowo skonfigurowanym podzadaniem: po prostu wysyłają wszystko do bramy.
źródło
Widzę to wspomniane w niektórych innych odpowiedziach tutaj, ale myślę, że może być jaśniejsze: na komputerach z wieloma interfejsami sieciowymi maska podsieci może być używana do automatycznego określania, na którym interfejsie fizycznym wysyłać ruch IP na podstawie docelowego adresu IP.
Jeśli wysyłasz pakiet do urządzenia w sieci LAN podłączonej do jednego z interfejsów, aby wiedzieć, na którym interfejsie wysyłać go (jeśli nie skonfigurowałeś wyraźnie trasy), komputer może sprawdzić interfejsy, aby zobaczyć jeśli subnet_mask & destination_ip == subnet_mask & interface_ip (przez
&
znaczy bitowe-a i przez==
to znaczy równości assert), a jeśli nie jest to mecz, należy wybrać ten interfejs.W ten sposób, jeśli masz np .:
I wysyłasz pakiet do 192.168.2.123 i nie masz skonfigurowanej trasy, można ustalić, że należy użyć interfejsu C, ponieważ 255.255.255.0 i 192.168.2.123 == 255.255.255.0 i 192.168.2.97 .
Nie byłoby to możliwe, gdyby maska podsieci nie była znana, dlatego musisz ustawić trasę dla każdego adresu IP, na który wysyłałeś dane.
źródło
Protokół TCP / IP mógł zostać zaprojektowany tak, jak sugerujesz - węzły liści wysyłałyby wszystko do routera i przekazywałyby je do celu, który może znajdować się w tej samej podsieci co nadawca.
Ale nie byłby to optymalny projekt z dwóch powodów:
Zużywa większą przepustowość: każdy pakiet między urządzeniami w tej samej podsieci musi zostać przesłany dwukrotnie: raz od nadawcy do routera i ponownie od routera do odbiornika. W sieciach, w których router jest również przełącznikiem sieci, tak naprawdę nie jest to żadna dodatkowa przepustowość, ponieważ i tak miał przejść przez przełącznik. Ale nie wszystkie technologie sieciowe działają w ten sposób. Oryginalna konstrukcja Ethernetowa była technologią magistrali, bez centralnego przełącznika lub repeatera.
To powoduje większe obciążenie routera. Nawet jeśli router jest również przełącznikiem, jest to trochę więcej pracy, ponieważ poszedł do implementacji routingu warstwy 3, a nie prostszego przełączania warstwy 2.
Ogólna filozofia realizująca projekt TCP / IP jest taka, że węzły końcowe są inteligentnymi urządzeniami, więc zakłada się, że są w stanie wykonać część pracy. Nie muszą znać pełnej topologii sieci, tak jak robią to routery szkieletowe, ale wiedzą wystarczająco dużo o środowisku lokalnym, aby podjąć się początkowego zadania routingu między lokalnymi a zdalnymi. Implementacja tego prostego routingu początkowego nie wymaga dużo kodu.
Ponadto urządzenia nie będące routerami niekoniecznie znajdują się w tylko jednej podsieci. Możesz łatwo mieć wiele kart sieciowych w komputerze - wiele z nich ma zarówno Ethernet, jak i WiFi. Każda z nich może być podłączona do innej podsieci, a adresy i maski podsieci służą do określenia, której karty sieciowej należy użyć. Jeśli uruchamiasz maszyny wirtualne, prawdopodobnie podsieć wirtualna łączy je z systemem hosta.
źródło
Jeśli spojrzymy na tabelę routingu (tak się składa, że to mój komputer stacjonarny):
trasa ip
trasa
Każdy widok przekazuje te same informacje. Maski podsieci wskazują, które hosty są osiągalne bezpośrednio w tej sieci, a inne hosty można znaleźć za pomocą bramy. W szczególności musimy wiedzieć, że brama jest osiągalna, w przeciwnym razie nie moglibyśmy wysłać pakietów, aby mogła zostać przekazana dalej.
Zasadniczo możesz wysłać wszystko za pośrednictwem hosta bramy. To by wyglądało
lub
Nie próbowałem tego, ale można go użyć do przekazywania wymuszonego przez MAC .
źródło
no cóż, urządzenia, które ludzie nazywają routerami, zwykle nie są tylko routerami. stąd ludzie czasami używają terminów takich jak router NAPT, router domowy lub router konsumencki, aby zasugerować, że nie jest to wyłącznie router. Aby podkreślić, że nie są to tylko routery, urządzenia te mogą wykonywać NAPT (co nie jest routingiem) i mają wbudowany przełącznik (przełącznik wykonuje mostkowanie, które nie jest routingiem - rozróżnienie między przełącznikiem a mostem są nieco słabo zdefiniowane - można powiedzieć, że most często miałby 2 porty i łączył różne media sieciowe (np. ethernet i nie-ethernet), podczas gdy przełącznik miałby wiele portów i ten sam nośnik sieciowy. Przełącznik robi mostkowanie.
Gdyby przełącznik był oddzielony od „routera”, wtedy rzeczywiście byłoby bardziej jasne. Gdy adres IP znajduje się w tej samej sieci, pakiet
jest kierowany doidzie kablem do tego, co dalej jest fizycznie, którym jest przełącznik, i ostatecznie jest przeznaczony do innego komputera w sieci (chyba że był to przełącznik zarządzany, a ty łączyłeś się z przełącznikiem, np. telnet lub http, a przełącznik miał własny adres IP ), a ponieważ pakiet nie jest przeznaczony do innej sieci, pakiet nie dotrze do routera. Gdy jest przeznaczony dla komputera w innej sieci, to oczywiście nadal przechodzi do przełącznika, ale potem kontynuuje do routera (przełącznik skierował pakiet do routera i docelowego adresu MAC pakietu przychodzącego do przełącznik byłby adresem MAC routera), a trasa prowadziłaby go poza właściwy interfejs routera.Z tymi rzeczami zwanymi zwykle routerami, które mają w sobie przełączniki (na przykład, nie są to profesjonalne routery Cisco / Juniper), to przełącznik jest w środku ... Ale to tylko lokalizacja przełącznika. Nadal jest tak, gdy IP jest włączony ta sama sieć, a następnie pakiet jest adresowany do przełącznika, a nie do routera. I idzie tylko do przełącznika wewnątrz routera i nie dociera do routera.
co masz tutaj na myśli .. Gdyby wszystkie komputery w całej sieci były fizycznie połączone przewodem ... to chyba nie potrzebujesz przełącznika ani routera. To, co opisujesz, brzmi trochę jak oryginalny Ethernet ... i jeśli wszystkie są połączone przewodem, prawdopodobnie nie byłaby to tak duża sieć. W każdym razie nie będzie to drut taki jak ty. Po drodze podłączone byłyby do niego komputery za pomocą „kranów”. Więc nie wiem, dlaczego właśnie wrzuciłeś to zdanie.
oznacza to odłożenie na bok tego pomysłu na wszystkie komputery połączone przewodem bez routera.
I nie, nawet w konfiguracji domowej nie za każdym razem przechodzą przez router. Nawet w przypadku „routera domowego” nazwij go skrzynką internetową. Idą do przełącznika w nim.
do przełącznika, a następnie z przełącznika przechodzi do routera
dobrze router identyfikuje interfejs sieciowy. Wysyła z jednego interfejsu do drugiego. Jedno rozróżnienie - oprócz tego, który interfejs będzie, czy sieć jest bezpośrednio podłączona, czy nie. Może wysłać do przełącznika, a następnie do komputera. Lub może wysłać do komputera. Lub jeśli sieć nie jest bezpośrednio podłączona, przejdzie do innego routera.
a twoje ostatnie zdanie było
a potem co, nagle postanowiłeś przestać pisać?cóż, nie powiedziałbym tego w ten sposób. Każdy interfejs routera ma inny zakres adresów IP.
Ale w przypadku routera konsumenckiego lub domowego router działa tak, jakby był routerem z dwoma interfejsami, z których jeden jest podłączony do przełącznika. Wiele portów to porty przełącznika.
Więc jeśli myślisz o części routera, to nie jest tak, jakby to było wewnątrz podsieci i to jest na zewnątrz, ponieważ potencjalnie istnieje wiele sieci. Na każdym interfejsie jest jeden. Router nie będzie transmitował go z powrotem do tej samej sieci, z której przyszedł. Powodem, dla którego dotarł do routera, jest dokładnie to, że przełącznik (który osiągnął pierwszy), zobaczył adres MAC, a więc zobaczył, że nie jest to adres MAC routera.
Komputer, który wysłał pakiet, sprawdzi, czy docelowy adres IP pakietu znajduje się w jego własnej sieci, czy w tej samej sieci, a następnie na podstawie tego wybierze odpowiedni adres MAC. Albo adres MAC komputera, do którego jest przeznaczony (to znaczy, jeśli komputer jest w tej samej sieci). Lub (jeśli komputer jest na innym interfejsie routera), będzie to adres MAC routera. Wydaje mi się, że odpowiedź na tytuł pytania może być całkiem bezpośrednia, dlaczego komputer musiałby znać maskę podsieci. W obecnym systemie TCP / IP .. tak to działa, komputer wybiera odpowiednią warstwę 2 adres np. dla ethernet, adres MAC.
źródło
Komputer / urządzenie robi użyć maski podsieci w celu obliczenia adres rozgłoszeniowy IP.
Interfejsy IP, które nie są w trybie promiscuous, są skonfigurowane tak, aby odpowiadały na adres rozgłoszeniowy IP, a także na własny adres IP.
źródło
Utworzono konto tylko po to, aby odpowiedzieć na to pytanie, ponieważ myślę, że inni nadmiernie komplikują rolę maski podsieci.
Maska podsieci określa, z jakimi innymi komputerami w sieci host będzie się komunikował. Jeśli host znajduje się poza moją podsiecią, spróbuję porozmawiać z tym komputerem przez moją bramę. Jeśli ten host znajduje się w mojej podsieci, porozmawiam z nim bezpośrednio (brama nie jest potrzebna). Ponadto, jeśli maszyna spoza podsieci hosta spróbuje z nim porozmawiać, pakiety te będą głuche i natychmiast zostaną odrzucone.
Dlaczego to ma dla ciebie znaczenie? Ponieważ gdybyśmy nie korzystali z maski sieci, próba rozmowy z serwerem DNS Google (8.8.8.8) wymagałaby od ciebie (i KAŻDEGO innego hosta, który z nim rozmawia) znajomości jego adresu fizycznego (adresu MAC). Spowodowałoby to, że Twój komputer i wszystkie inne osoby musiałyby utworzyć wpis ARP dla każdej maszyny internetowej, z którą rozmawiasz. To zmarnowałoby pamięć RAM i spowolniłoby wszystkie sieci, ponieważ fizyczny adres komputerów jest przekazywany znacznie dalej niż to konieczne.
źródło