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

Первый и последний IP-адрес сети 192.168.176.0/23 (подсеть 23)

Получим следующий адрес сети: 192.168.176.0/23. Каковы первый и последний IP-адреса этой сети?

После этого ответа https://serverfault.com/a/327782/288201 Я предполагаю, что:

/ 23 означает 23 бита для подсети. При 8 битах на байт мы получаем 16 бит для первых двух байтов, а затем семь (7) для третьего => 1111 1111. 1111 1111. 1111 1110. 0000 0000, верно?

Это означает, что наши последние два байта будут иметь форму (nnnn nnnH. HHHH HHHH), где n - бит подсети, а H - бит хоста.

Таким образом, сетевой адрес (nnnn nnn | 0 0000 0000) -> .0, широковещательная передача (nnnn nnn | 1 1111 1111) -> 2 ^ 9 широковещательно? Невозможно. Здесь я кое-что упускаю, что-то простое. Итак, каким будет первый и последний IP-адрес? Это то, чего я не получаю после ответа, упомянутого в приведенной выше ссылке (от b0fh).

Первый 192.168.176.1, последний 192.168.1770,254?

Я постараюсь пояснить, что я считаю источником вашего замешательства:

Адрес IPv4 - это одно 32-битное целое число, но обычно оно не форматируется таким образом, когда мы записываем адрес.

Как я уверен, вы знаете, что нормой является писать адрес как [first eight bits in decimal].[next eight bits in decimal].[next eight bits in decimal].[last eight bits in decimal] но важно понимать, что на самом деле это просто другой способ форматирования этого единственного, потенциально очень большого числа.

Когда вы указываете CIDR маска сети (/n), который говорит, сколько битов из 32-битного адреса образуют сетевой идентификатор, а оставшиеся биты образуют идентификатор хоста.


В вашем примере 192.168.176.0/23первые 23 бита являются префиксом сети, оставляя 9 бит для идентификатора хоста, что означает, что идентификатор хоста пересекает границу последнего октета. Идентификатор хоста повлияет на последние два сегмента a.b.c.d-форматированный адрес.

Чтобы проиллюстрировать это, я включу sipcalc вывод, показывающий адреса как необработанные биты (действительно более важные для понимания математики), а также a.b.c.d-форматированные адреса.

$ sipcalc -b 192.168.176.0/23                                                                                             
-[ipv4 : 192.168.176.0/23] - 0

[CIDR bitmaps]
Host address            - 11000000.10101000.10110000.00000000
Network address         - 11000000.10101000.10110000.00000000
Network mask            - 11111111.11111111.11111110.00000000
Broadcast address       - 11000000.10101000.10110001.11111111
Cisco wildcard          - 00000000.00000000.00000001.11111111
Network range           - 11000000.10101000.10110000.00000000 -
                          11000000.10101000.10110001.11111111
Usable range            - 11000000.10101000.10110000.00000001 -
                          11000000.10101000.10110001.11111110

-
$


$ sipcalc  192.168.176.0/23                                                                                               
-[ipv4 : 192.168.176.0/23] - 0

[CIDR]
Host address            - 192.168.176.0
Host address (decimal)  - 3232280576
Host address (hex)      - C0A8B000
Network address         - 192.168.176.0
Network mask            - 255.255.254.0
Network mask (bits)     - 23
Network mask (hex)      - FFFFFE00
Broadcast address       - 192.168.177.255
Cisco wildcard          - 0.0.1.255
Addresses in network    - 512
Network range           - 192.168.176.0 - 192.168.177.255
Usable range            - 192.168.176.1 - 192.168.177.254

-
$ 

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

Ваша сеть:

11000000.10101000.10110000.00000000

Ваша сетевая маска:

11111111.11111111.11111110.00000000

Ваша маска подстановки (часть, которая изменится):

00000000.00000000.00000001.11111111

Обычно, когда вы говорите 2^9 = 512 транслируется, вы просто забываете, что один бит части хоста находится в последнем бите третьего октета. По мере его изменения вы получите либо следующее:

11000000.10101000.10110000.<something>

Или это :

11000000.10101000.10110001.<something>

Итак, вот ваш "512"десятичная форма на самом деле 0.0.1.255 (всегда следует использовать десятичную форму с точками, чтобы не допустить этой ошибки). Несетевая часть пойдет с 192.168.176.0 к 192.168.176.0 + 0.0.1.255. Последний адрес, являющийся широковещательным адресом, вы узнаете, что это 192.168.177.255.

Вы также можете получить его, добавив маску подстановки к своему сетевому адресу:

  11000000.10101000.10110000.00000000

+ 00000000.00000000.00000001.11111111

= 11000000.10101000.10110001.11111111

Который 192.168.177.255.