Назад | Перейти на главную страницу

статический маршрут: зачем адресу назначения нужна маска подсети

Когда я определяю статический маршрут, почему я должен определять маску подсети для сети назначения? Что произойдет, если у меня более одного шлюза, а маски подсети всех целевых сетей будут 0.0.0.0?

Поскольку сетевой адрес назначения сам по себе не дает диапазона сетевых адресов, однако в сочетании с сетевой маской определяется полный объем удаленной сети.

Например, предположим, что вы использовали хост в сети 10.34.1.0/24 и ваш маршрут был определен следующим образом

route add 10.34.2.0 mask 255.255.255.0 10.34.1.1

Приведенное выше правило сообщает вашему компьютеру, что любой хост в сети 10.34.2.0/24 (10.34.2.1 - 10.34.2.254) доступен через маршрутизатор 10.34.1.1.

Указание пункта назначения без маски подсети не имеет смысла даже в случае одного хоста, который можно определить как

route add 10.34.3.4 mask 255.255.255.255 10.34.1.2

Если у вас есть конфликтующие маршруты с сетевой маской 0.0.0.0, то маршрут с наименьшим значением метрики обычно будет иметь приоритет, например

route add 0.0.0.0 mask 0.0.0.0 10.34.1.3 metric 10
route add 0.0.0.0 mask 0.0.0.0 10.34.1.4 metric 5

10.34.1.4 будет предпочтительным маршрутом, если не существует других подходящих маршрутов с более низкой метрикой.

Маска подсети указывает вашему маршрутизатору / ОС, какова именно сетевая часть вашего адреса.

Скажем, у вас есть 10.1.2.0, если у вас не будет сетевой маски (это называется классовой маршрутизацией), если будет выдаваться, что это сеть 10.0.0.0, потому что она принадлежит к классу A (некоторые устройства / ОС предоставляют ей подсеть, определенную в их интерфейсе ). См. Здесь о классовой и бесклассовой маршрутизации.

Это классы:

Class A
1.  0.  0.  1 = 00000000.00000000.00000000.00000000
127.255.255.254 = 01111111.11111111.11111111.11111111
                  0nnnnnnn.HHHHHHHH.HHHHHHHH.HHHHHHHH

Class B
128.  1.  0.  1= 10000000.00000000.00000000.00000000
191.255.255.255 = 10111111.11111111.11111111.11111111
                  10nnnnnn.nnnnnnnn.HHHHHHHH.HHHHHHHH

Class C
192.  0.  1.  1 = 11000000.00000000.00000000.00000000
223.255.255.254 = 11011111.11111111.11111111.11111111
                  110nnnnn.nnnnnnnn.nnnnnnnn.HHHHHHHH

Class D
224.  0.  0.  0 = 11100000.00000000.00000000.00000000
239.255.255.254 = 11101111.11111111.11111111.11111111
                  1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

Class E
240.  0.  0.  0 = 11110000.00000000.00000000.00000000
255.255.255.254 = 11111111.11111111.11111111.11111111
                  1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

Но если вы установите маску подсети, вы можете разделить эту сеть 10.0.0.0 на несколько сетей, например 10.1.0.0 или 10.1.1.0.

Маска подсети требуется, потому что, когда вы определяете статический адрес (скажем, в Windows, он не использует точную маршрутизацию, а бесклассовый, который должен иметь маску подсети).

Если вы поставите маску подсети 255.0.0.0, это означает, что только первая часть адреса является сетевым адресом, поэтому ваша сеть - x.0.0.0, если вы поместите 255.255.0.0, тогда она займет первые две части адреса как xx0.0 и так далее. Поэтому, когда вы устанавливаете маску подсети 0.0.0.0, это означает любой адрес от 0.0.0.0 до 255.255.255.255.

Если у вас есть более одного маршрута для одного и того же пункта назначения, победит маршрут с более низкой метрикой.

О том, что маска подсети ваших пунктов назначения установлена ​​на 0.0.0.0 на большинстве устройств / ОС, я не думаю, что можно установить маску подсети 0.0.0.0, если адрес не 0.0.0.0. То есть они не позволяют помещать 1-битное значение в адрес назначения статического маршрута, если соответствующее значение в маске подсети равно 0.

Windows, например, не позволит вам сделать это

route add 10.10.10.0 mask 255.0.0.0 192.168.1.1

потому что вы указали маску подсети 255.0.0.0 в двоичной форме 11111111.00000000.00000000.00000000 и адрес назначения 10.10.10.0 в двоичной форме 00001010.00001010.00001010.00000000. Он имеет 1 в том месте, где маска подсети имеет 0 (вторая и третья часть адреса)