ipv6_compare()
İki IPv6 veya IPv4 ağ adresi dizesini karşılaştırır. İki IPv6 dizesi ayrıştırılır ve karşılaştırılırken bağımsız değişken ön eklerinden hesaplanan birleştirilmiş IP ön eki maskesi ve isteğe bağlı prefix
bağımsız değişken hesaplanır.
Not
İşlev, hem IPv6 hem de IPv4 ağ adreslerini temsil eden bağımsız değişkenleri kabul edebilir ve karşılaştırabilir. Ancak, çağıran bağımsız değişkenlerin IPv4 biçiminde olduğunu biliyorsa ipv4_is_compare() işlevini kullanın. Bu işlev daha iyi çalışma zamanı performansına neden olur.
Syntax
ipv6_compare(
ip1,
ip2[ ,
Önek])
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | Açıklama |
---|---|---|---|
ip1, ip2 | string |
✔️ | IPv6 veya IPv4 adresini temsil eden bir ifade. IPv6 ve IPv4 dizeleri IP ön eki gösterimi kullanılarak maskelenebilir. |
Önek | int |
0 ile 128 arasında bir tamsayı, dikkate alınan en önemli bitlerin sayısını temsil eder. |
IP ön eki gösterimi
IP ön eki gösterimi (CIDR gösterimi olarak da bilinir), ip adresini ve ilişkili ağ maskesini temsil etmenin kısa bir yoludur. biçimi, <base IP>/<prefix length>
ön ek uzunluğunun netmask içindeki baştaki 1 bitin sayısı olduğu şeklindedir. Ön ek uzunluğu, ağa ait IP adresi aralığını belirler.
IPv4 için ön ek uzunluğu 0 ile 32 arasında bir sayıdır. Dolayısıyla 192.168.2.0/24 gösterimi, 255.255.255.0 net maskesine sahip 192.168.2.0 IP adresini temsil eder. Bu netmask 24 önde gelen 1 bit veya ön ek uzunluğu 24'tür.
IPv6 için ön ek uzunluğu 0 ile 128 arasında bir sayıdır. Bu nedenle gösterimi fe80::85d:e82c:9446:7994/120, ffff:ffff:ffff:ff00 netmask ile fe80::85d:e82c:9446:7994 IP adresini temsil eder. Bu netmask 120 baştaki 1 bit veya ön ek uzunluğu 120'ye sahiptir.
Döndürülenler
0
: İlk IPv6 dize bağımsız değişkeninin uzun gösterimi ikinci IPv6 dize bağımsız değişkenine eşitse.1
: İlk IPv6 dize bağımsız değişkeninin uzun gösterimi ikinci IPv6 dize bağımsız değişkeninden büyükse.-1
: İlk IPv6 dize bağımsız değişkeninin uzun gösterimi ikinci IPv6 dize bağımsız değişkeninden küçükse.null
: İki IPv6 dizeden biri için dönüştürme başarılı olmadıysa.
Örnekler: IPv6/IPv4 karşılaştırma eşitlik durumları
IPv6/IPv4 dizelerinde belirtilen IP ön eki gösterimini kullanarak IP'leri karşılaştırma
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)
Çıkış
ip1_string | ip2_string | sonuç |
---|---|---|
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 |
IPv6/IPv4 dizelerinde belirtilen IP ön eki gösterimini ve işlevin ek bağımsız değişkenini kullanarak IP'leri karşılaştırın 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)
Çıkış
ip1_string | ip2_string | Önek | sonuç |
---|---|---|---|
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 |
İlgili içerik
- IPv4/IPv6 işlevlerine genel bakış
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin