다음을 통해 공유


ipv6_compare()

두 IPv6 또는 IPv4 네트워크 주소 문자열을 비교합니다. 인수 접두사 및 선택적 prefix 인수에서 계산된 결합된 IP 접두사 마스크를 고려하면서 두 IPv6 문자열을 구문 분석하고 비교합니다.

참고

함수는 IPv6 및 IPv4 네트워크 주소를 모두 나타내는 인수를 수락하고 비교할 수 있습니다. 그러나 호출자가 인수가 IPv4 형식임을 알고 있는 경우 ipv4_is_compare() 함수를 사용합니다. 이 함수는 런타임 성능을 향상합니다.

Syntax

ipv6_compare(Ip1,ip2[ ,접두사])

구문 규칙에 대해 자세히 알아보세요.

매개 변수

이름 형식 필수 Description
ip1, ip2 string ✔️ IPv6 또는 IPv4 주소를 나타내는 식입니다. IP 접두사 표기법을 사용하여 IPv6 및 IPv4 문자열을 마스킹할 수 있습니다.
prefix int 고려되는 가장 중요한 비트 수를 나타내는 0에서 128까지의 정수입니다.

IP 접두사 표기법

IP 접두사 표기법(CIDR 표기법이라고도 함)은 IP 주소 및 연결된 네트워크 마스크를 나타내는 간결한 방법입니다. 형식은 입니다 <base IP>/<prefix length>. 여기서 접두사 길이는 netmask에서 선행 1비트 수입니다. 접두사 길이는 네트워크에 속하는 IP 주소의 범위를 결정합니다.

IPv4의 경우 접두사 길이는 0에서 32 사이의 숫자입니다. 따라서 표기법 192.168.2.0/24는 netmask가 255.255.255.0인 IP 주소 192.168.2.0을 나타냅니다. 이 netmask에는 24개의 선행 1비트 또는 접두사 길이 24가 있습니다.

IPv6의 경우 접두사 길이는 0에서 128 사이의 숫자입니다. 따라서 표기법 fe80::85d:e82c:9446:7994/120은 ffff:ff00의 netmask가 있는 IP 주소 fe80::85d:e82c:9446:7994를 나타냅니다. 이 netmask에는 120개의 선행 1비트 또는 접두사 길이 120이 있습니다.

반환

  • 0: 첫 번째 IPv6 문자열 인수의 긴 표현이 두 번째 IPv6 문자열 인수와 같으면 입니다.
  • 1: 첫 번째 IPv6 문자열 인수의 긴 표현이 두 번째 IPv6 문자열 인수보다 큰 경우
  • -1: 첫 번째 IPv6 문자열 인수의 긴 표현이 두 번째 IPv6 문자열 인수보다 작은 경우
  • null: 두 IPv6 문자열 중 하나에 대한 변환에 성공하지 못한 경우

예: IPv6/IPv4 비교 같음 사례

IPv6/IPv4 문자열 내에 지정된 IP 접두사 표기법을 사용하여 IP 비교

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)

출력

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

IPv6/IPv4 문자열 내에 지정된 IP 접두사 표기법을 사용하여 IP를 함수의 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)

출력

ip1_string ip2_string 접두사 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