В настоящее время я пытаюсь понять VLS .... но я не совсем понимаю, как адресное пространство делится, чтобы разместить подсети разной длины, например,
Suppose you were given the IPv4 network block
137.73.64.0/20. Using variable length subnet masking (VLSM)
divide the network block in order to provide the following
subnetworks:
1. A, with at least 1800 hosts
2. B and C, with at least 500 hosts each
3. D, E and F, with at least 240 hosts each
Я понимаю, что это можно сделать
1. Take each subnet in turn, starting with the one
with largest number of hosts
2. Calculate bits required to represent this number
of hosts
3. Use remainder of host ID bits for subnet's ID
4. Allocate one subnet ID to the subnet that does
not have the same prefix as any of the already
allocated subnets
5. Move on to next largest subnet
Но я до сих пор не совсем понимаю, как прийти к этому ответу:
A possible solution, with subnet IDs highlighted, is:
A: 137.73.01000000.0 = 137.73.64.0/21
Host addresses: 2^11 − 2 = 2048 − 2 = 2046
B: 137.73.01001000.0 = 137.73.72.0/23
Host addresses: 2^9 − 2 = 512 − 2 = 510
C: 137.73.01001010.0 = 137.73.74.0/23
host addresses: 2^9 − 2 = 512 − 2 = 510
D: 137.73.01001100.0/24 = 137.73.76.0/24
host addresses: 2^8 − 2 = 256 − 2 = 254
E: 137.73.01001101.0/24 = 137.73.77.0/24
host addresses: 2^8 − 2 = 256 − 2 = 254
F: 137.73.01001110.0/24 = 137.73.78.0/24
host addresses: 2^8 − 2 = 256 − 2 = 254
Unallocated:
137.73.01001111.0/24 = 137.73.79.0/24
host addresses: 2^8 − 2 = 256 − 2 = 254 (unallocated)
Range of addresses unused: 137.73.79.1/24 to 137.73.79.254/24
Может быть, кто-нибудь сможет мне это объяснить?
Обычно я начинаю с просмотра пространства IP-адресов в двоичном формате, а затем работаю слева, используя процесс, который вы описали. Вот пошаговое описание процесса. Я буду использовать ?
для представления неназначенных битов, X
для host-id биты и явно включают идентификатор подсети биты. Начнем со следующей схемы.
1000 1001 0100 1001 0100 ???? ???? ???? 137.73.64/20
Теперь нам нужно 11 бит для первой подсети, так как log2(1800) меньше 11 и больше 10.
1000 1001 0100 1001 0100 ?XXX XXXX XXXX 137.73.64/21
Один бит отмечен ?
- единственный оставшийся бит подстановочного знака. Присвойте ему нулевое значение, и вы определили первую подсеть. Остальные подсети будут использовать значение один, поэтому:
1000 1001 0100 1001 0100 ???? ???? ???? 137.73.64/20
1000 1001 0100 1001 0100 0XXX XXXX XXXX 137.73.64/21 2,048 addresses
1000 1001 0100 1001 0100 1??? ???? ???? 137.73.72/21
Далее нам нужна подсеть емкостью 500, поэтому нам нужно девять бит. У нас осталось 11 в host-id, поэтому мы можем безопасно подключить следующие два бита.
1000 1001 0100 1001 0100 ???? ???? ???? 137.73.64/20
1000 1001 0100 1001 0100 0XXX XXXX XXXX 137.73.64/21 2,048 addresses
1000 1001 0100 1001 0100 100X XXXX XXXX 137.73.72/23 512 addresses
1000 1001 0100 1001 0100 101? ???? ????
1000 1001 0100 1001 0100 11?? ???? ????
Следующая подсеть также состоит из девяти битов, поэтому мы можем использовать еще один из оставшихся битов.
1000 1001 0100 1001 0100 ???? ???? ???? 137.73.64/20
1000 1001 0100 1001 0100 0XXX XXXX XXXX 137.73.64/21 2,048 addresses
1000 1001 0100 1001 0100 100X XXXX XXXX 137.73.72/23 512 addresses
1000 1001 0100 1001 0100 101X XXXX XXXX 137.73.74/23 512 addresses
1000 1001 0100 1001 0100 11?? ???? ????
Следующие три подсети просты - все они восьмибитные. Мы можем просто разделить оставшиеся биты подстановочных знаков слева направо.
1000 1001 0100 1001 0100 ???? ???? ???? 137.73.64/20
1000 1001 0100 1001 0100 0XXX XXXX XXXX 137.73.64/21 2,048 addresses
1000 1001 0100 1001 0100 100X XXXX XXXX 137.73.72/23 512 addresses
1000 1001 0100 1001 0100 101X XXXX XXXX 137.73.74/23 512 addresses
1000 1001 0100 1001 0100 1100 XXXX XXXX 137.73.76/24 256 addresses
1000 1001 0100 1001 0100 1101 XXXX XXXX 137.73.77/24 256 addresses
1000 1001 0100 1001 0100 1110 XXXX XXXX 137.73.78/24 256 addresses
1000 1001 0100 1001 0100 1111 ???? ???? 137.73.79/24 256 addresses
Оставшийся диапазон подстановочных знаков - это ваше нераспределенное пространство.
Для меня самый простой способ запомнить - это сначала взять максимально большой диапазон, который вам нужен (1800 хостов). Это означает, что вам нужно взять в общей сложности 2048 (2 ^ 11), и чтобы найти свою запись с косой чертой, вы просто возьмете 32-11 = 21, поэтому ваш ответ на 1 будет:
A 137.73.64.0/21
Маска подсети для / 21 - 255.255.248.0, чтобы узнать размер вашего блока, который вы берете 256 - 248 = 8
Это означает, что ваши адресные пространства A заканчиваются на:
137.73.71.255
Это означает, что ваше следующее по величине адресное пространство (B с 500 хостами) будет начинаться с:
137.73.72.0
Адресное пространство B будет использовать 512 (2 ^ 9), поэтому ваша косая черта будет 32-9 = 23, что означает, что ваше адресное пространство B:
137.73.72.0/23
Маска подсети a / 23 - 255.255.254.0, поэтому размер блока составляет 256 - 254 = 2, поэтому ваш B заканчивается на:
137.73.73.255
И ваш следующий наивысший уровень (C с 500 хостами) начинается с:
137.73.74.0
Поскольку ваш C имеет те же хосты, что и ваш B, он использует ту же маску подсети (/ 23):
137.73.74.0/23
Его размер блока также равен 2, что означает, что C заканчивается на:
137.73.75.255
Ваше следующее по величине адресное пространство (D с 240 хостами) начнется с:
137.73.76.0
В адресном пространстве D будет использоваться 256 (2 ^ 8), поэтому его обозначение косой чертой будет 32-8 = 24:
137.73.76.0/24
A / 24 имеет маску подсети (255.255.255.0), поэтому размер блока составляет 256 - 255 = 1 Следовательно, ваше адресное пространство D будет заканчиваться на:
137.73.76.255
Ваше адресное пространство E такое же, как D, поэтому оно имеет размер блока 1 и / 24:
137.73.77.0/24
Поскольку размер его блока равен 1, он заканчивается на:
137.73.77.255
Ваше адресное пространство F такое же, как D и E, поэтому оно имеет размер блока 1 и / 24:
137.73.78.0/24
Поскольку размер его блока равен 1, он заканчивается на:
137.73.78.255
Таким образом, ваши последние подсети:
A 137.73.64.0/21
B 137.73.72.0/23
C 137.73.74.0/23
D 137.73.76.0/24
E 137.73.77.0/24
F 137.73.78.0/24
Чтобы найти свой нераспределенный, вы используете те же концепции. У вас есть / 20 с маской подсети 255.255.240.0, поэтому размер блока составляет 256-240 = 16
Весь ваш диапазон адресов:
137.73.64.0 - 137.73.79.255
Таким образом, ваши нераспределенные адреса варьируются от:
137.73.79.0 - 137.73.79.255
Это просто еще один / 24
надеюсь, это поможет
Подсеть содержит всего 2 ^ (32-routing_prefix) (это число после косой черты) адресов. Вы можете вычесть 2 из этого диапазона: один для так называемого «идентификатора сети», второй - для широковещательного адреса.
Это означает, что если вы хотите выделить адреса для 1800 хостов (всего 1802 адреса), вам нужно выбрать 2 ^ 11 (2048). Это дает вам префикс маршрутизации 32-11 = 21.
Так называемый «сетевой идентификатор» - это просто базовый адрес со всеми битами «хоста», установленными в 0 (это означает, что для 137.73.64.0/21 вы устанавливаете 11 крайних правых битов в ноль).
Надеюсь, это немного поможет.
Итак, я наконец закончил свой калькулятор.
137.73.64.0 /21 -> 1,800 (2,048)
137.73.72.0 /23 -> 500 (512)
137.73.74.0 /23 -> 500 (512)
137.73.76.0 /24 -> 254 (256) ++
137.73.77.0 /24 -> 240 (256)
137.73.78.0 /24 -> 240 (256)
137.73.79.0 /24 -> 240 (256)
++ был добавлен калькулятором. Это самый большой неиспользуемый блок в линейке.