Memadankan Alamat IP dengan Subnet CIDR
Menentukan sama ada alamat IP berada dalam subnet CIDR tertentu ialah tugas biasa dalam pentadbiran rangkaian. Ia membolehkan pemetaan dan pengurusan julat IP yang cekap.
Untuk menangani keperluan ini, mari kita terokai pelaksanaan fungsi, cidr_match(), yang melaksanakan pemadanan ini hanya menggunakan fungsi terbina dalam atau biasa.
Gambaran Keseluruhan Pelaksanaan
Algoritma melibatkan penukaran alamat IP dan julat subnet kepada integer panjang menggunakan fungsi ip2long(). Seterusnya, subnet mask diperoleh dengan menukar digit tertinggal julat subnet (cth., "/16") kepada topeng bitwise. Topeng ini dengan berkesan membahagikan alamat IP kepada awalan rangkaian dan akhiran hos.
Akhir sekali, kami melakukan operasi AND bitwise antara alamat IP dan subnet mask. Jika hasilnya sepadan dengan julat subnet, maka alamat IP berada dalam subnet CIDR yang ditentukan.
Definisi Fungsi
Berikut ialah pelaksanaan fungsi cidr_match():
<code class="php">function cidr_match($ip, $range) { list ($subnet, $bits) = explode('/', $range); if ($bits === null) { $bits = 32; } $ip = ip2long($ip); $subnet = ip2long($subnet); $mask = -1 << (32 - $bits); $subnet &= $mask; // Ensure subnet is aligned return ($ip & $mask) == $subnet; }</code>
Contoh Penggunaan
Dalam contoh yang disediakan, mari kita anggap kita mempunyai pelbagai alamat IP untuk diperiksa:
<code class="php">$ips = ['10.2.1.100', '10.2.1.101', '10.5.1.100', '1.2.3.4'];</code>
Kami ingin mengesahkan yang mana antara IP ini tergolong dalam subnet "10.2.0.0/16":
<code class="php">foreach ($ips as $IP) { if (cidr_match($IP, '10.2.0.0/16') == true) { print "{$IP} is in the 10.2 subnet\n"; } }</code>
Output:
10.2.1.100 is in the 10.2 subnet 10.2.1.101 is in the 10.2 subnet
Ini menunjukkan penggunaan fungsi cidr_match() untuk tentukan sama ada alamat IP berada dalam subnet CIDR yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Jika Alamat IP berada dalam Subnet CIDR Menggunakan Fungsi Terbina dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!