Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menentukan sama ada Alamat IP Kepunyaan Subnet CIDR dengan Cekap?

Bagaimana untuk Menentukan sama ada Alamat IP Kepunyaan Subnet CIDR dengan Cekap?

Susan Sarandon
Lepaskan: 2024-10-18 19:27:29
asal
589 orang telah melayarinya

How to Determine if an IP Address Belongs to a CIDR Subnet Efficiently?

Menentukan Kemasukan Subnet CIDR Alamat IP

Dalam banyak aplikasi rangkaian, timbul keperluan untuk mengesahkan sama ada alamat IP tergolong dalam subnet CIDR yang diberikan. Soalan ini meneroka kaedah yang cepat dan cekap untuk perbandingan sedemikian.

Untuk mencapai ini, fungsi, cidr_match(), digunakan. Ia menerima dua parameter: alamat IP dalam format kuad bertitik dan topeng notasi CIDR.

Pelaksanaan

Langkah pertama melibatkan penukaran alamat IP dan subnet kepada integer panjang menggunakan ip2long( ). Subnet CIDR kemudiannya dihuraikan untuk menentukan subnet mask berdasarkan bilangan bit yang ditentukan.

Seterusnya, operasi AND bitwise dilakukan antara alamat IP dan subnet mask. Jika hasilnya sepadan dengan subnet, ini menunjukkan bahawa alamat IP berada dalam subnet yang ditentukan.

Berikut ialah coretan kod untuk fungsi cidr_match():

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 &amp;= $mask; # nb: in case the supplied subnet wasn't correctly aligned
    return ($ip &amp; $mask) == $subnet;
}
Salin selepas log masuk

Dengan menggunakan fungsi ini, anda boleh menentukan dengan cekap sama ada alamat IP kepunyaan subnet CIDR tertentu. Kesederhanaan dan kecekapan pendekatan ini menjadikannya sesuai untuk pelbagai aplikasi berkaitan rangkaian.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan sama ada Alamat IP Kepunyaan Subnet CIDR dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan