2

特定のネットワークの最初と最後の IPv6 アドレスが省略されていることに気付きました。

$ python3
Python 3.3.2 (default, Sep  6 2013, 09:30:10) 
[GCC 4.8.1 20130725 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ipaddress
>>> print("\n".join([str(x) for x in ipaddress.ip_network("2001:0db8::/120").hosts()]))
2001:db8::1
2001:db8::2
...
2001:db8::fe
>>> 
>>> hex(int(ipaddress.ip_address('2001:db8::fe')))
'0x20010db80000000000000000000000fe'

IPv4の場合、ネットワークとブロードキャストアドレスを表すため、これは正しいと思いますが、IPv6には存在しないと思います-少なくともRFC4291のセクション2.5.4では言及されていないようです. 正誤表を確認しましたが、RFC の更新は関係ないと思います。インターフェイス識別子のセクションも、最初/最後のアドレスを予約しているようには見えません。

これらのアドレスが省略されている理由を知っている人はいますか? これは標準ライブラリのバグですか?

編集: OK、最初のアドレスはSubnet-Router エニーキャスト アドレスのように見えるため、最初のアドレスが省略されている理由が説明されています。

最後のアドレスは予約済みのエニーキャスト アドレスである可能性がありますが、たとえば2001:db8::fe/120(上記の出力で確認できます) そのため、これは確実に一貫性のない方法で処理されます。理由を知っている人はいますか?

4

1 に答える 1