ホームページ  >  記事  >  バックエンド開発  >  ネットワーク セグメントの開始 IP アドレスと終了 IP アドレスを見つける

ネットワーク セグメントの開始 IP アドレスと終了 IP アドレスを見つける

WBOY
WBOYオリジナル
2016-07-25 08:50:511801ブラウズ
ネットワーク セグメントの開始および終了 IP アドレスを検索します。例: ネットワーク セグメント (192168.1.5/24)、そのサブネット マスクは 24 に従って分割されます:
11111111.11111111.11111111.00000000(255.255.255.0)
説明: IP アドレスは次のとおりです。 32 ビット、ネットワーク セグメントを分割する場合、24 は前に 24 個の 1、後ろに 8 個の 0 があることを意味します。開始 IP アドレスのアルゴリズムは、192.168.1.5 のバイナリとサブネット マスクのバイナリの AND 演算です。
IP アドレスを終了するアルゴリズムは、まずサブネット マスクの 2 進数を反転し、次に 2 進数 192.168.1.5 との「OR」演算を実行します
実際のアプリケーションでは、取得されるのはネットワーク アドレスとブロードキャストですアドレス、ネットワーク アドレス + 1 が最初のホスト アドレス、ブロードキャスト アドレス -1 が最後のホスト アドレスです。

function Mask2bin($n)
  • {
  • $n = intval($n);
  • if($n<0||$n>32)
  • die('エラーサブマスク');
  • return str_repeat("1", $n).str_repeat("0",32-$n);
  • }
  • function revBin($s)
  • {
  • $p=array('0','1',' 2');
  • $r=array('2','0','1');
  • return str_replace($p,$r,$s);
  • }
  • function startIp($str,$bSub )
  • {
  • $bIp = decbin($str);
  • $bIp = str_pad($bIp,8,"0",STR_PAD_LEFT);
  • $sIp = binding($bIp & $bSub);
  • return $sIp;
  • }
  • 関数 endIp($str,$bSub)
  • {
  • $bIp = decbin($str);
  • $bIp = str_pad($bIp,8,"0",STR_PAD_LEFT);
  • $eIp = binding($bIp | revBin($bSub));
  • return $eIp;
  • }
  • $ip = array('192','168','1','5');//から取得できる IP アドレスを設定します。フォーム、これはデモ用です
  • $mask = '24' //マスクを設定します
  • $bSub = Mask2bin($mask) //サブネットマスクをバイナリに変換します
  • $mask = array();
  • $ Mask[] = substr($bSub,"0",8); //サブネットマスクを 8 ビットごとに分割します
  • $mask[] = substr($bSub,"8",8);
  • $mask[] = substr ($bSub,"16",8);
  • $mask[] = substr($bSub,"24",8);
  • echo '
  • < ;td>
  • ';
  • for ($i=0;$i{
  • echo binding($mask[$i]);
  • if ( $i!=3)
  • echo ".";
  • }
  • echo '
  • マスク:
    ネットワーク アドレス:
  • ';
  • for ($i= 0 ;$i {
  • echo startIp($ip[$i],$mask[$i]);
  • if($i!=3)
  • echo ".";
  • }
  • echo '
  • 最初に利用可能:
  • ';
  • ($i=0;$i< ; 3;$i++)
  • {
  • echo startIp($ip[$i],$mask[$i]);
  • echo ".";
  • }
  • $ip_4 = startIp($ip[3],$mask[ 3 ]);
  • echo ++$ip_4;
  • echo '
  • < size="2">最終入手可能日:
  • ';
  • ($i=0;$i< ; 3;$i++)
  • {
  • echo endIp($ip[$i],$mask[$i]);
  • echo ".";
  • }
  • $ip_4 = endIp($ip[3],$mask[ 3 ]);
  • echo --$ip_4;
  • echo '
  • < size="2">ブロードキャスト アドレス:
  • ';
  • for ($i=0;$i< ; 4;$i++)
  • {
  • echo endIp($ip[$i],$mask[$i]);
  • if($i!=3)
  • echo ".";
  • }
  • ?>
  • コードをコピー
  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。