修复#6290和#18806的问题后发现,使用特殊IP地址0.0.0.0/8或::/128作为目标地址尤其在处理数据报传输协议时会让人困惑,如#22811所述。为了避免不必要的困惑,最好澄清并实现一致的API语义(因为一些特殊地址是禁止用作目标IP地址的,所以现有的行为是Go特定的扩展解释)。
仅供参考:
- 0.0.0.0/8在RFC 1122的第3.2.1.3节中定义为“此网络上的此主机”。出于历史原因,某些IP堆栈实现允许将0.0.0.0/32用作IP数据包的目标地址,但通常不允许将其用作目标地址,
- ::/128在RFC 4291的第2.5.2节中定义为“未指定的地址”。明确指出未指定的地址不得用作目标地址,我从未见过允许使用未指定地址作为目标地址的IP堆栈实现(我想IPv6协议兼容性工具做得很好)。
1条答案
按热度按时间e0uiprwp1#
https://golang.org/cl/301850提到了这个问题:
net: fix BenchmarkWriteToReadFromUDP on Windows