本文簡要介紹rust語言中 std::net::Ipv6Addr.is_unicast_link_local
的用法。
用法
pub fn is_unicast_link_local(&self) -> bool
如果地址是具有 link-local 範圍的單播地址(如 RFC 4291 中所定義),則返回 true
。
如果單播地址具有前綴 fe80::/10
,則該地址具有 link-local 範圍(根據 RFC 4291 section 2.4 )。請注意,這包含的地址比 RFC 4291 section 2.5.6 中定義的地址更多,RFC 4291 section 2.5.6 將“Link-Local IPv6 單播地址”說明為具有以下更嚴格的格式:
| 10 bits | 54 bits | 64 bits |
+----------+-------------------------+----------------------------+
|1111111010| 0 | interface ID |
+----------+-------------------------+----------------------------+
因此,雖然目前應用程序將遇到的唯一具有 link-local 範圍的地址都在 fe80::/64
中,但隨著新標準的發布,這可能會在未來發生變化。可以分配fe80::/10
中的更多地址,這些地址將具有link-local 範圍。
另請注意,雖然 RFC 4291 section 2.5.3 提到 loopback address ( ::1
)“它被視為具有 Link-Local 範圍”,但這並不意味著環回地址實際上具有 link-local 範圍,並且此方法將返回false
就可以了。
例子
#![feature(ip)]
use std::net::Ipv6Addr;
// The loopback address (`::1`) does not actually have link-local scope.
assert_eq!(Ipv6Addr::LOCALHOST.is_unicast_link_local(), false);
// Only addresses in `fe80::/10` have link-local scope.
assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), false);
assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true);
// Addresses outside the stricter `fe80::/64` also have link-local scope.
assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 1, 0, 0, 0, 0).is_unicast_link_local(), true);
assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true);
相關用法
- Rust Ipv6Addr.is_unicast_global用法及代碼示例
- Rust Ipv6Addr.is_unicast用法及代碼示例
- Rust Ipv6Addr.is_unique_local用法及代碼示例
- Rust Ipv6Addr.is_unspecified用法及代碼示例
- Rust Ipv6Addr.is_multicast用法及代碼示例
- Rust Ipv6Addr.is_documentation用法及代碼示例
- Rust Ipv6Addr.is_benchmarking用法及代碼示例
- Rust Ipv6Addr.is_loopback用法及代碼示例
- Rust Ipv6Addr.is_global用法及代碼示例
- Rust Ipv6Addr.octets用法及代碼示例
- Rust Ipv6Addr.multicast_scope用法及代碼示例
- Rust Ipv6Addr.to_ipv4用法及代碼示例
- Rust Ipv6Addr.to_canonical用法及代碼示例
- Rust Ipv6Addr.new用法及代碼示例
- Rust Ipv6Addr.to_ipv4_mapped用法及代碼示例
- Rust Ipv6Addr.segments用法及代碼示例
- Rust Ipv6Addr用法及代碼示例
- Rust Ipv6MulticastScope用法及代碼示例
- Rust Ipv4Addr.is_global用法及代碼示例
- Rust Ipv4Addr.new用法及代碼示例
- Rust Ipv4Addr.is_link_local用法及代碼示例
- Rust Ipv4Addr.is_loopback用法及代碼示例
- Rust Ipv4Addr.is_private用法及代碼示例
- Rust Ipv4Addr用法及代碼示例
- Rust Ipv4Addr.to_ipv6_compatible用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::net::Ipv6Addr.is_unicast_link_local。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。