Windows 95/98/NT/2000 FAQ - Что такое маска подсети?

Что такое маска подсети?

Как известно, адрес IP состоит из 4 октетов и обычно представляется в формате 200.200.200.5. Однако, этот адрес сам по себе недостаточен и требуется маска подсети для того, чтобы показать, какая часть IP адреса является идентификатором сети (Network ID), а какая - идентификатором хоста (Host ID). Представьте Network ID как номер улицы, а Host ID - как номер дома. Тогда для "54 Grove Street", 54 будет идентификатором хоста (Host ID), а Grove Street - идентификатором сети (Network ID). Маска подсети показывает, какая часть IP адреса является Network ID, а какая - Host ID.

Например, для адреса 200.200.200.5, и маски подсети 255.255.255.0, Network ID будет 200.200.200, а Host ID - 5. Это вычисляется следующим образом:

IP Address 11001000 11001000 11001000 00000101
Subnet Mask 11111111 11111111 11111111 00000000
Network ID 11001000 11001000 11001000 00000000
Host ID 00000000 00000000 00000000 00000101

Результат получается побитным с AND между IP адресом и маской подсети, т.е.

1 AND 1=1
1 AND 0=0
0 AND 1=0
0 AND 0=0

В зависимости от класса IP адреса для масок подсети существуют значения по умолчанию:

Class A : 001.xxx.xxx.xxx до 126.xxx.xxx.xxx использует маску подсети 255.0.0.0 по умолчанию
Class B : 128.xxx.xxx.xxx до 191.xxx.xxx.xxx использует маску подсети 255.255.0.0 по умолчанию
Class C : 192.xxx.xxx.xxx до 224.xxx.xxx.xxx использует маску подсети 255.255.255.0 по умолчанию

А где 127.xxx.xxx.xxx ??? Это зарезервированный адрес, используемый для тестирования. Пинг 127.0.0.1 - это пинг самому себе :-)

Маска подсети используется при обмене между двумя хостами. Если оба хоста принадлежат одной сети, хост a непосредственно обращается к хосту b, однако, если хост b принадлежит другой сети, хост a будет обращаться через шлюз, и способ, которым хост a может сообщить о своей принадлежности данной сети - это использование маски подсети. Например

Хост A 200.200.200.5
Хост B 200.200.200.9
Хост C 200.200.199.6
Маска подсети 255.255.255.0

Предположим Хост A связывается с Хостом B, поскольку оба они имеют Network ID 200.200.200, то Хост A обращается к Хосту B непосредственно. Если же Хост A связывается с Хостом C, а они находятся в разных сетях: 200.200.200 и 200.200.199 соответственно, то Хост A будет посылать запрос через шлюз.