Ниже было задано в качестве вопроса на экзамене, который я дал на прошлой неделе:

Msgstr "Вам даны два хоста с IP-адресами 152.46.69.12 и 152.46.69.105, для обоих из которых установлены маски 255.255.255.0. Как нужно изменить маски, чтобы заставить пинг с хоста 152.46.69.12 пройти маршрутизатор, чтобы достичь хоста 152.46.69.105. "

Теперь вы можете установить маски 255.255.255.192, чтобы убедиться, что это работает, но у меня есть пара других вопросов:
1) можно ли установить маску на 0.0.0.0, чтобы она работала так, как задан вопрос? Можете ли вы объяснить ваши причины. 2) можно ли установить маску на 255.255.255.64, чтобы она работала так, как задан вопрос? Также возможно, что один из старших битов в маске установлен в 0, а младший бит в маске установлен в 1.

Я просматривал различные форумы, но ничего, что давало ответы на мои вопросы.

Я очень плохо знаком с сетью и изучаю основные вещи в сети. Любые ответы приветствуются. Благодарю.

3 ответа3

4
  1. Нет - 0.0.0.0 является эквивалентом /0, что означает, что все локально, ничто не проходит через маршрутизатор.

  2. Опять же нет - сетевые маски работают в непрерывных блоках от высокого к низкому, установка младших битов с "пробелом", скорее всего, будет отклонена как незаконная в большинстве систем и просто не будет работать в других.

2

Маска подсети является "маской" в том смысле, что она отделяет сетевую часть IP-адреса от части хоста. Это бинарная операция маскирования, поэтому для маски подсети могут быть только определенные значения.

Для примера рассмотрим только один октет. У вас есть 8 бит для IP-адреса, а не 32 бита (4 октета * 8 бит / октет = 32 бита) в адресном пространстве IPv4. Как бы вы сказали системе, какая часть адреса имеет локальную значимость? Вот варианты:

SUBNET  SUBNET    BINARY  NUMBER OF     NUMBER OF      SUBNET 
LENGTH    MASK     VALUE   SUBNETS    IP'S/SUBNET  BOUNDARIES
------  ------  --------  ---------   -----------  ----------
     0       0  00000000    1 (2^0)     256 (2^8)  None (entire subnet is local)
     1     128  10000000    2 (2^1)     128 (2^7)  Every multiple of 128 (0-127, 128-255)
     2     192  11000000    4 (2^2)      64 (2^6)  Every multiple of 64 (0-63, 64-127, etc)
     3     224  11100000    8 (2^3)      32 (2^5)  Every multiple of 32 (0-31, 32-63, etc)
     4     240  11110000   16 (2^4)      16 (2^4)  Every multiple of 16 (0-15, 16-31, etc)
     5     248  11111000   32 (2^5)       8 (2^3)  Every multiple of 8 (0-7, 8-15, etc)
     6     252  11111100   64 (2^6)       4 (2^2)  Every multiple of 4 (0-3, 4-7, etc)
     7     254  11111110  128 (2^7)       2 (2^1)  Every multiple of 2 (0-1, 2-3, etc)
     8     255  11111111  256 (2^8)       1 (2^0)  All (every host is its own subnet)

На практике вы теряете два IP-адреса на подсеть, поскольку первый IP-адрес считается "сетевым" адресом, а последний IP-адрес - "широковещательным" адресом. Это означает, что вы никогда не сможете направить трафик в сеть с маской подсети .254, так как она имеет только два возможных адреса, и оба они уже зарезервированы (нет дополнительного места для адреса шлюза и хоста). Наименьшая возможная маршрутизируемая подсеть использует маску подсети .252, поскольку она дает достаточно места для адресов сети, шлюза, хоста и широковещания.

В вашем примере вы хотите разделить сети между .12 и .105. Вы не можете использовать маску подсети .0, потому что это означает, что они находятся в одной подсети. Вы не можете использовать маску подсети .128, потому что и .12, и .105 в диапазоне .0-127 подсети. Вы можете использовать маску подсети .192, потому что .12 будет в подсети .0-63, а .105 будет в подсети .64-127.

Вы можете использовать маску подсети .224, потому что .12 будет в подсети .0-31, а .105 будет в подсети .96-127. Вы можете использовать маску подсети .240, потому что .12 будет в .0-15, в то время как .105 будет в .96-111. Вы можете использовать .248, потому что .12 будет в .8-15, в то время как .105 будет в .104-111.

Вы не можете использовать маску подсети .252, так как .12 попадает в "сетевую" часть адреса .12-15 подсети. Вы не можете использовать подсеть .254 или .255, так как .252 - это наименьшая возможная маршрутизируемая подсеть.

В качестве дополнительного упражнения, если вы хотите вычислить максимально возможную подсеть между двумя хостами, сравните, насколько похожи их двоичные значения, и это даст вам ответ. В вашем примере давайте посмотрим на двоичное сходство ваших IP-адресов, начиная с самого левого бита и двигаясь вправо, пока мы не обнаружим разницу:

152.46.69.12  10011000.00101110.01000101.00001100
152.46.69.105 10011000.00101110.01000101.01101001
              ........ ........ ........ .xxxxxxx
Subnet Length:       8       +8       +8       +1 = /25
Subnet Mask:       255     .255     .255     .128 = 255.255.255.128

Считая подобные биты слева направо, это показывает, что наибольшая возможная длина подсети составляет 25 битов. Выражено в обозначении маски подсети 255.255.255.128 (/25 в обозначении CIDR). Любая большая маска подсети (255.255.255.192 или /26) будет разделять эти хосты.

1

Ответ на вопрос 2, я сейчас нахожусь в продвинутой сети. При использовании нотации CIDR вы не можете установить старший бит равным 0, а младший бит равным 1. Не существует подходящего способа обозначить нотацию CIDR таким образом.

это работает так,

n = бит сети H = бит хоста

скажем, вы используете /26 это будет выглядеть так

nnnnnnnn.nnnnnnnn.nnnnnnnn.nnHHHHHH

последний октет будет 192, 128+64

если он установлен в /27, он должен быть написан так

nnnnnnnn.nnnnnnnn.nnnnnnnn.nnnHHHHH

и последний октет будет 224, 128+64+32

в нотации CIDR вы должны двигаться слева направо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .