ipv6_compare()
比較兩個 IPv6 或 IPv4 網路位址字串。 系統在計算從引數首碼和選用的 prefix
引數計算的合併 IP 首碼遮罩時,會剖析並比較兩個 IPv6 字串。
注意
函式可以接受和比較代表 IPv6 和 IPv4 網路位址的引數。 但是,如果呼叫端知道引數是 IPv4 格式,則使用 ipv4_is_compare() 函式。 此函式會產生更好的執行階段效能。
語法
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 代表 IP 位址 192.168.2.0,且 netmask 為 255.255.255.0。 此 netmask 有 24 個前置 1 位,或前置長度為 24。
針對 IPv6,前置長度是介於 0 到 128 之間的數位。 因此,表示法 fe80::85d:e82c:9446:7994/120 代表 IP 位址 fe80::85d:e82c:9446:7994,而 netmask 為 ffff:ff00。 此 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 | 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 |
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應