ipv6_compare()
Membandingkan dua string alamat jaringan IPv6 atau IPv4. Dua string IPv6 diuraikan dan dibandingkan sembari menghitung gabungan mask awalan IP yang dihitung dari awalan argumen, dan argumen prefix
opsional.
Catatan
Fungsi ini dapat menerima dan membandingkan argumen yang merepresentasikan alamat jaringan IPv6 dan IPv4. Namun, jika pemanggil mengetahui bahwa argumen berformat IPv4, gunakan fungsi ipv4_is_compare( ). Fungsi ini akan menghasilkan performa runtime bahasa umum yang lebih baik.
Sintaks
ipv6_compare(
ip1,
ip2[ ,
Awalan])
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Jenis | Diperlukan | Deskripsi |
---|---|---|---|
ip1, ip2 | string |
✔️ | Ekspresi yang mewakili alamat IPv6 atau IPv4. String IPv6 dan IPv4 dapat di-mask menggunakan notasi prefiks IP. |
Awalan | int |
Bilangan bulat dari 0 hingga 128 mewakili jumlah bit paling signifikan yang diperhitungkan. |
Notasi prefiks IP
Notasi awalan IP (juga dikenal sebagai notasi CIDR) adalah cara ringkas untuk mewakili alamat IP dan masker jaringan terkait. Formatnya adalah <base IP>/<prefix length>
, di mana panjang awalan adalah jumlah 1 bit terkemuka dalam netmask. Panjang awalan menentukan rentang alamat IP milik jaringan.
Untuk IPv4, panjang awalan adalah angka antara 0 dan 32. Jadi notasi 192.168.2.0/24 mewakili alamat IP 192.168.2.0 dengan netmask 255.255.255.0. Netmask ini memiliki 24 bit terkemuka, atau panjang awalan 24.
Untuk IPv6, panjang awalan adalah angka antara 0 dan 128. Jadi notasi fe80::85d:e82c:9446:7994/120 mewakili alamat IP fe80::85d:e82c:9446:7994 dengan netmask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00. Netmask ini memiliki 120 1 bit terkemuka, atau panjang awalan 120.
Mengembalikan
0
: Jika representasi panjang dari argumen string IPv6 pertama setara dengan argumen string IPv6 kedua.1
: Jika representasi panjang dari argumen string IPv6 pertama setara dengan argumen string IPv6 kedua.-1
: Jika representasi panjang dari argumen string IPv6 pertama kurang dibandingkan argumen string IPv6 kedua.null
: Jika konversi untuk salah satu dari dua string IPV6 tidak berhasil.
Contoh: Kasus kesetaraan perbandingan IPv6/IPv4
Membandingkan IP menggunakan notasi awalan IP yang ditentukan di dalam string IPv6/IPv4
datatable(ip1_string:string, ip2_string:string)
[
// IPv4 are compared as IPv6 addresses
'192.168.1.1', '192.168.1.1', // Equal IPs
'192.168.1.1/24', '192.168.1.255', // 24 bit IP4-prefix is used for comparison
'192.168.1.1', '192.168.1.255/24', // 24 bit IP4-prefix is used for comparison
'192.168.1.1/30', '192.168.1.255/24', // 24 bit IP4-prefix is used for comparison
// IPv6 cases
'fe80::85d:e82c:9446:7994', 'fe80::85d:e82c:9446:7994', // Equal IPs
'fe80::85d:e82c:9446:7994/120', 'fe80::85d:e82c:9446:7998', // 120 bit IP6-prefix is used for comparison
'fe80::85d:e82c:9446:7994', 'fe80::85d:e82c:9446:7998/120', // 120 bit IP6-prefix is used for comparison
'fe80::85d:e82c:9446:7994/120', 'fe80::85d:e82c:9446:7998/120', // 120 bit IP6-prefix is used for comparison
// Mixed case of IPv4 and IPv6
'192.168.1.1', '::ffff:c0a8:0101', // Equal IPs
'192.168.1.1/24', '::ffff:c0a8:01ff', // 24 bit IP-prefix is used for comparison
'::ffff:c0a8:0101', '192.168.1.255/24', // 24 bit IP-prefix is used for comparison
'::192.168.1.1/30', '192.168.1.255/24', // 24 bit IP-prefix is used for comparison
]
| extend result = ipv6_compare(ip1_string, ip2_string)
Output
ip1_string | ip2_string | hasil |
---|---|---|
192.168.1.1 | 192.168.1.1 | 0 |
192.168.1.1/24 | 192.168.1.255 | 0 |
192.168.1.1 | 192.168.1.255/24 | 0 |
192.168.1.1/30 | 192.168.1.255/24 | 0 |
fe80::85d:e82c:9446:7994 | fe80::85d:e82c:9446:7994 | 0 |
fe80::85d:e82c:9446:7994/120 | fe80::85d:e82c:9446:7998 | 0 |
fe80::85d:e82c:9446:7994 | fe80::85d:e82c:9446:7998/120 | 0 |
fe80::85d:e82c:9446:7994/120 | fe80::85d:e82c:9446:7998/120 | 0 |
192.168.1.1 | ::ffff:c0a8:0101 | 0 |
192.168.1.1/24 | ::ffff:c0a8:01ff | 0 |
::ffff:c0a8:0101 | 192.168.1.255/24 | 0 |
::192.168.1.1/30 | 192.168.1.255/24 | 0 |
Bandingkan IP menggunakan notasi awalan IP yang ditentukan di dalam string IPv6/IPv4 dan sebagai argumen tambahan dari fungsi ipv6_compare()
datatable(ip1_string:string, ip2_string:string, prefix:long)
[
// IPv4 are compared as IPv6 addresses
'192.168.1.1', '192.168.1.0', 31, // 31 bit IP4-prefix is used for comparison
'192.168.1.1/24', '192.168.1.255', 31, // 24 bit IP4-prefix is used for comparison
'192.168.1.1', '192.168.1.255', 24, // 24 bit IP4-prefix is used for comparison
// IPv6 cases
'fe80::85d:e82c:9446:7994', 'fe80::85d:e82c:9446:7995', 127, // 127 bit IP6-prefix is used for comparison
'fe80::85d:e82c:9446:7994/127', 'fe80::85d:e82c:9446:7998', 120, // 120 bit IP6-prefix is used for comparison
'fe80::85d:e82c:9446:7994/120', 'fe80::85d:e82c:9446:7998', 127, // 120 bit IP6-prefix is used for comparison
// Mixed case of IPv4 and IPv6
'192.168.1.1/24', '::ffff:c0a8:01ff', 127, // 127 bit IP6-prefix is used for comparison
'::ffff:c0a8:0101', '192.168.1.255', 120, // 120 bit IP6-prefix is used for comparison
'::192.168.1.1/30', '192.168.1.255/24', 127, // 120 bit IP6-prefix is used for comparison
]
| extend result = ipv6_compare(ip1_string, ip2_string, prefix)
Output
ip1_string | ip2_string | awalan | hasil |
---|---|---|---|
192.168.1.1 | 192.168.1.0 | 31 | 0 |
192.168.1.1/24 | 192.168.1.255 | 31 | 0 |
192.168.1.1 | 192.168.1.255 | 24 | 0 |
fe80::85d:e82c:9446:7994 | fe80::85d:e82c:9446:7995 | 127 | 0 |
fe80::85d:e82c:9446:7994/127 | fe80::85d:e82c:9446:7998 | 120 | 0 |
fe80::85d:e82c:9446:7994/120 | fe80::85d:e82c:9446:7998 | 127 | 0 |
192.168.1.1/24 | ::ffff:c0a8:01ff | 127 | 0 |
::ffff:c0a8:0101 | 192.168.1.255 | 120 | 0 |
::192.168.1.1/30 | 192.168.1.255/24 | 127 | 0 |
Konten terkait
- Gambaran umum fungsi IPv4/IPv6
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk