2014-11-26 1 views
2

У меня есть два IP-адреса:Как рассчитать количество хостов между двумя ips? C#

1. 1.1.1.1 
2. 4.4.4.4 

Очевидно, что это только пример, это динамический калькулятор

Как рассчитать количество хостов между указанными IP-адреса, если маска подсети не имеет значения?

+0

Будет ли это число теоретически возможных IP-адресов или количество используемых IP-адресов? – Guffa

+1

Вы можете видеть IP-адреса как 4-значные номера на 256 байт. – alik

ответ

5

Чтобы рассчитать количество (теоретических) IP-адреса, которые вы бы преобразовать каждый IP-адрес, чтобы это 32-битное целое формата (который на самом деле то, что это на самом деле), то это просто вопрос простого вычитания:

1.1.1.1 = 0x01010101 = 16843009 
4.4.4.4 = 0x04040404 = 67372036 

Количество адресов за исключением начального и конечного адреса:

67372036 - 16843009 - 1 = 50529026 

Количество адресов, включая начальный и конечный адреса:

67372036 - 16843009 + 1 = 50529028 

Число фактических используемых адресов будет несколько ниже. Обычно несколько адресов в каждом диапазоне C зарезервированы для таких вещей, как шлюз (маршрутизатор).

+0

Не следует использовать '+ 2' /' -2' вместо '1'? – CustomX

+0

@CustomX: Нет. Посмотрите, например, на номера от 5 до 7; есть 3 числа, включая начало и конец (5,6,7) и 1 номер, исключая начало и конец (6). Разница между 5 и 7 равна 2, поэтому количество чисел, включая начало и конец, равно 2 + 1, а количество чисел, исключая начало и конец, равно 2 - 1. – Guffa

1

IPv4-адрес может быть представлен целым числом (4 байта, 32 бит)

упростить вопрос, предполагая, что

  • Все IP-адреса могут использоваться
  • Один хост на IP-адрес

Затем converting both IP addresses to integer и выработайте разницу в количестве доступных хостов.

+0

Этот ответ был бы намного полезнее, если бы вы показали, как преобразовать IP-адрес в целое число. –

Смежные вопросы