ipv6_compare()
Compare deux chaînes d’adresses réseau IPv6 ou IPv4. Les deux chaînes IPv6 sont analysées et comparées lors de la prise en compte du masque de préfixe IP combiné calculé à partir des préfixes d’argument et de l’argument facultatif prefix
.
Notes
La fonction peut accepter et comparer des arguments représentant à la fois des adresses réseau IPv6 et IPv4. Toutefois, si l’appelant sait que les arguments sont au format IPv4, utilisez la fonction ipv4_is_compare(). Cette fonction génère de meilleures performances d’exécution.
Syntax
ipv6_compare(
ip1,
ip2[ ,
Préfixe])
Découvrez les conventions de syntaxe.
Paramètres
Nom | Type | Obligatoire | Description |
---|---|---|---|
ip1, ip2 | string |
✔️ | Expression représentant une adresse IPv6 ou IPv4. Les chaînes IPv6 et IPv4 peuvent être masquées à l’aide de la notation de préfixe IP. |
prefix | int |
Entier compris entre 0 et 128 représentant le nombre de bits les plus significatifs pris en compte. |
Notation de préfixe IP
La notation de préfixe IP (également appelée notation CIDR) est un moyen concis de représenter une adresse IP et son masque réseau associé. Le format est <base IP>/<prefix length>
, où la longueur du préfixe correspond au nombre de 1 bits de début dans le masque de réseau. La longueur du préfixe détermine la plage d’adresses IP qui appartiennent au réseau.
Pour IPv4, la longueur du préfixe est un nombre compris entre 0 et 32. Ainsi, la notation 192.168.2.0/24 représente l’adresse IP 192.168.2.0 avec un masque de réseau de 255.255.255.0. Ce masque de réseau a 24 principaux 1 bits, ou une longueur de préfixe de 24.
Pour IPv6, la longueur du préfixe est un nombre compris entre 0 et 128. Ainsi, la notation fe80 ::85d :e82c :9446 :7994/120 représente l’adresse IP fe80 :::85d :e82c :9446 :7994 avec un masque de réseau de ffff :ffff :ffff :ffff :ff00. Ce masque de réseau a 120 bits de début, soit une longueur de préfixe de 120.
Retours
0
: si la représentation longue du premier argument de chaîne IPv6 est égale au deuxième argument de chaîne IPv6.1
: si la représentation longue du premier argument de chaîne IPv6 est supérieure au deuxième argument de chaîne IPv6.-1
: si la représentation longue du premier argument de chaîne IPv6 est inférieure au deuxième argument de chaîne IPv6.null
: si la conversion de l’une des deux chaînes IPv6 n’a pas réussi.
Exemples : cas d’égalité de comparaison IPv6/IPv4
Comparer les adresses IP à l’aide de la notation de préfixe IP spécifiée à l’intérieur des chaînes 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)
Sortie
ip1_string | ip2_string | result |
---|---|---|
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 |
Comparer les adresses IP à l’aide de la notation de préfixe IP spécifiée à l’intérieur des chaînes IPv6/IPv4 et en tant qu’argument supplémentaire de la ipv6_compare()
fonction
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)
Sortie
ip1_string | ip2_string | prefix | result |
---|---|---|---|
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 |
Contenu connexe
- Vue d’ensemble des fonctions IPv4/IPv6
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour