我已經編寫了一些簡單的代碼,它使用ioctl SIOCGIFCONF查詢系統上的所有網絡接口,並使用inet_ntop返回找到的地址的文本表示。奇怪的是,當發現鏈接本地IPv6地址時,代碼的OSX版本似乎將範圍嵌入到地址中。OSX上具有'嵌入'範圍的IPv6鏈接本地地址
這裏是從線/ sbin目錄/使用ifconfig在OSX自動配置接口(後:
的IPv6地址:FE80:5 :: 217
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 00:17:f2:0b:52:73
inet6 fe80::217:f2ff:fe0b:5273%en1 prefixlen 64 scopeid 0x5
和IP地址的IOCTL SIOCGIFCONF返回的:f2ff:fe0b:5273
它看起來像(5)的FE80後立即插入範圍的值
Linux上的相同的代碼返回的IPv6地址沒有任何額外的數據。
發生了兩個問題: 1)寫這樣的ipv6地址是否合法? 2)OSX行爲是否記錄在任何地方?
參考請!
在大多數平臺上,'inet_ntop'和'inet_pton'不支持IPv6區域,只能使用'getnameinfo'和'getaddrinfo'。 – 2011-05-05 17:17:32
謝謝,史蒂夫,不知道。我的問題仍然是:如果IPv6地址有區域信息?在RFC4291第2.2章中未提及。地址的文本表示 – Spaceghost 2011-05-05 18:59:11
僅鏈路本地範圍地址,即fe80 ::前綴。 – 2011-05-05 19:57:44