Пособие из разряда "как можно извратиться при работе с ipv4 адресами вместо использования обычных логических операций".
Инверсная сиськина маска - она нужна только тогда, когда сиськи же и программишь. В IPCalc оно нафиг не надо.
Получают инверсную маску обычным NOT-ом над 32-битным представлением простой маски (хотя никто не мешает сделать NOT над каждым октетом маски, один фиг).
Адрес броадкаста - штука жестко в стандартах не прописанная. Для него используется как максимальный адрес диапазона, так и адрес самой сети - это зависит чисто от пожеланий админа при настройке сетевого интерфейса.
Вот пример типичной работы с сетевыми адресами на PHP:
Инверсная сиськина маска - она нужна только тогда, когда сиськи же и программишь. В IPCalc оно нафиг не надо.
Получают инверсную маску обычным NOT-ом над 32-битным представлением простой маски (хотя никто не мешает сделать NOT над каждым октетом маски, один фиг).
Адрес броадкаста - штука жестко в стандартах не прописанная. Для него используется как максимальный адрес диапазона, так и адрес самой сети - это зависит чисто от пожеланий админа при настройке сетевого интерфейса.
Вот пример типичной работы с сетевыми адресами на PHP:
<?php
$ip = array(1 => 192, 2 => 168, 3 => 1, 4 => 2);
$mask = array(1 => 255, 2 => 255, 3 => 255, 4 => 0);
$ipl32 = ($ip[1] << 24) + ($ip[2] << 16) + ($ip[3] << 8) + $ip[4];
$maskl32 = ($mask[1] << 24) + ($mask[2] << 16) + ($mask[3] << 8) + $mask[4];
$netl32 = $ipl32 & $maskl32;
$net[1] = ($netl32 >> 24) & 255;
$net[2] = ($netl32 >> 16) & 255;
$net[3] = ($netl32 >> 8) & 255;
$net[4] = $netl32 & 255;
echo("IP: ".$ip[1].".".$ip[2].".".$ip[3].".".$ip[4]."\n");
echo("Mask: ".$mask[1] . ".". $mask[2] . ".". $mask[3] . ".". $mask[4] . "\n");
echo("Calculated Net: ". $net[1] . ".". $net[2] . ".". $net[3] . ".". $net[4] . "\n");
?>