IPアドレスの後に付いてるスラッシュと数字の意味

さっき192.*.*.*/32みたいな表記を見て意味が分からなかったので調べてみた。

このスラッシュの後の数字は「プレフィックス」というらしい。


192.168.1.0/32って付いてる場合サブネットは
255.255.255.255
となって、適用範囲は
192.168.1.1 ~ 192.168.1.1
になるらしい。結局「/32」って付いてる場合は特定のIPを明示的に示してるものだって。


他にも
192.168.1.0 /24ってなってる場合サブネットは
255.255.255.0
となって、適用範囲は
192.168.1.0 ~ 192.168.1.255
になるらしい。



実際にどう使うのか?

例えば、「192.168.1.30」という端末にIPアドレスでアクセス制限をかけたい場合に
「192.168.1.20 /24」というマスクをかければ
192.168.1.0 ~ 192.168.1.255 までの間は端末にアクセス出来るが
192.168.2.* みたいなIPを持つ端末ではアクセスが出来ないように制限できる。
らしい。

ちなみにこれをチェックする関数がある。

Net_IPv4::ipInNetwork() --  与えられた IP が与えられたネットワーク内にあるかどうかを決定する 

例 アドレスがネットワークに含まれるかどうかチェックする

<?php

require 'Net/IPv4.php';

$ip   = '10.11.12.13';
$net1 = '10.0.0.1/8';
$net2 = '127.0.0.1/8';

echo Net_IPv4::ipInNetwork($ip, $net1) // bool(true)
echo Net_IPv4::ipInNetwork($ip, $net2) // bool(false)
?>