Итак, я понимаю, как маски подсетей используются для разделения сети на подсети, но мой вопрос заключается в том, почему каждый компьютер в сети должен знать маску подсети, а не только маршрутизатор?
устройства, которые люди называют маршрутизаторами, обычно не являются просто маршрутизаторами, поэтому люди иногда используют такие термины, как NAPT Router, или Home Router, или Consumer Router, чтобы предположить, что это не просто маршрутизатор. Чтобы подчеркнуть, что они не просто маршрутизаторы, эти устройства могут выполнять NAPT (который не является маршрутизацией), и у них есть встроенный коммутатор (коммутатор выполняет мостовое соединение, которое не маршрутизирует - различия между коммутатором и мостом немного не так хорошо определены - можно сказать, что мост часто имеет 2 порта и соединяет разные сетевые среды (например, Ethernet и не-Ethernet), тогда как у коммутатора будет несколько портов и одна сетевая среда). Переключатель делает мост.
Если бы коммутатор был отделен от «маршрутизатора», то, действительно, это было бы более понятно. Когда IP-адрес находится в той же сети, то пакет направляется на идет по кабелю к следующему физически, который является коммутатором, и в конечном итоге предназначен для другого компьютера в сети (если это не был управляемый коммутатор, и вы подключались к коммутатору, например, telnet или http, и у коммутатора был свой собственный ip ), и поскольку пакет не предназначен для другой сети, пакет не достигнет маршрутизатора. Когда он предназначен для компьютера в другой сети, он, конечно, все еще идет к коммутатору, но затем продолжает работу к маршрутизатору (коммутатор направил пакет на маршрутизатор и MAC-адрес назначения пакета, поступающего в коммутатор был бы MAC-адресом маршрутизатора), и маршрут маршрутизировал бы его из правильного интерфейса маршрутизатора.
С этими вещами, обычно называемыми маршрутизаторами, которые имеют внутри коммутаторы (например, не маршрутизаторы Cisco / Juniper профессионального стиля), тогда коммутатор находится внутри ... Но это только местоположение коммутатора ... Это все еще так, когда IP включен в той же сети пакет адресован коммутатору, а не маршрутизатору. И это идет только к коммутатору внутри маршрутизатора и не достигает маршрутизатора.
Я мог бы понять это, если бы каждый компьютер был физически связан друг с другом с помощью провода,
что вы имеете в виду здесь ... Если бы все компьютеры во всей сети были физически соединены проводом ... тогда, я думаю, вам не нужен коммутатор или маршрутизатор. То, что вы описываете, звучит немного как оригинальная сеть Ethernet ... и если они все соединены проводом, вероятно, это не будет такая большая сеть. И в любом случае это не будет провод, как вы привыкли. По пути к нему будут подключены компьютеры с «кранами». Так что я не знаю, почему вы просто добавили это предложение.
но все пакеты должны пройти через маршрутизатор в любом случае.
так что вы имеете в виду отложить эту идею от всех компьютеров, соединенных проводом без маршрутизатора.
И нет, даже в вашем доме они не проходят через маршрутизатор каждый раз. Даже с вашим «домашним маршрутизатором», назовите это интернет-коробкой. Они идут к выключателю в этом.
Допустим, у меня есть компьютер в сети 192.168.0.0/255.255.255.0, который имеет IP 192.168.0.1.
Если этот компьютер пытается подключиться к компьютеру за пределами подсети, скажем, 192.168.1.1, он передает сообщение маршрутизатору,
к коммутатору, то от коммутатора он идет к маршрутизатору
Маршрутизатор идентифицирует, что IP-адрес находится за пределами IP-диапазона подсети, и вместо передачи его в подсети он передает его в сеть, к которой он подключен (возможно, к другому маршрутизатору).
хорошо, маршрутизатор определяет, для какого сетевого интерфейса он предназначен. Он отправляет с одного интерфейса на другой интерфейс. Одно из различий - помимо какого интерфейса, будет ли сеть подключена напрямую или нет. Он может отправить на коммутатор, а затем на компьютер. Или это может отправить на компьютер. Или, если сеть не подключена напрямую, она перейдет на другой маршрутизатор.
и ваше последнее предложение было
он передает сообщение на маршрутизатор,
и что, ты вдруг решил перестать писать?
Маршрутизатор идентифицирует, что IP-адрес находится за пределами IP-диапазона подсети, и вместо передачи его в подсети он передает его в сеть, к которой он подключен (возможно, к другому маршрутизатору).
ну, я бы так не сказал. Каждый интерфейс на маршрутизаторе имеет свой диапазон IP-адресов.
Но, с вашим потребительским маршрутизатором или домашним маршрутизатором, получается, что это похоже на маршрутизатор с двумя интерфейсами, один из которых подключен к вашей стороне. И несколько портов являются портами коммутатора.
Так что, если вы думаете с точки зрения части маршрутизатора, это не значит, что это внутри подсети и снаружи, потому что потенциально много сетей. По одному на каждом интерфейсе. И маршрутизатор не будет передавать его обратно в ту же сеть, откуда он пришел. Причина, по которой он достиг маршрутизатора в первую очередь, заключается именно в том, что коммутатор (который он достиг первым) увидел MAC-адрес и увидел, что это не MAC-адрес маршрутизатора.
Компьютер, который отправил пакет, проверит, находится ли IP-адрес назначения пакета в его собственной сети или той же сети, и затем на основании этого выберет соответствующий MAC-адрес. Либо MAC-адрес компьютера, которому он предназначен (это если компьютер находится в той же сети). Или (если компьютер находится на другом интерфейсе маршрутизатора), то это будет MAC-адрес маршрутизатора. Я предполагаю, что это может ответить на заголовок вашего вопроса довольно прямо, относительно того, почему компьютер должен знать маску подсети .. В системе TCP / IP как она есть ... вот как это работает, компьютер выбирает соответствующий уровень 2 адрес, например, для Ethernet, MAC-адрес.