59

我正在为客户端库编写单元测试。我想测试使用无效端口和无效 ip 的连接。什么是一个不会被路由到某个地方的好 IP 地址?我不想对运行单元测试的机器所在的网络做出任何假设。LOCALHOST 似乎是一个糟糕的选择,因为它是运行服务器组件的有效机器,我想单独测试一个无效端口。IPv4 规范中的某处是否保留了 INVALID-IP?

4

5 回答 5

76

根据RFC 5737

提供块 192.0.2.0/24 (TEST-NET-1)、198.51.100.0/24 (TEST-NET-2) 和 203.0.113.0/24 (TEST-NET-3) 以供在文档中使用。

这意味着您可以使用从这些范围中选择一个 IP 地址:

  • 192.0.2.0 - 192.0.2.255
  • 198.51.100.0 - 198.51.100.255
  • 203.0.113.0 - 203.0.113.255
于 2012-05-04T20:59:52.337 回答
12

如果您正在寻找一个真正无效的 IP 地址(而不是无法路由的 IP 地址),您可以利用A 类地址的第一个字节不能是0.

例如:

0.42.42.42
于 2012-05-04T21:00:16.673 回答
4

乔纳森的回答(以及它的评论)对 IPv4 有好处

如果您的测试支持 IPv6,则它有一个明确的黑洞,您可以使用:如RFC 66660100::/64中所定义

使用 254.254.254.254 很诱人,因为它很容易记住,但在某些平台上,它会立即给出“传输失败。一般故障”,而不是可能是无效单元测试的实际超时。

于 2019-04-03T17:25:14.870 回答
2

您可以将 3 个私有 IP 块用于此类事情:

10/8 (10.0.0.0 -> 10.255.255.255) (一个老式的 A 类网络块)

172.16/12 (172.16.0.0 -> 172.131.255.255

196.168/16 (192.168.0.0 -> 192.168.255.255) (老式 B 类网络块)

于 2012-05-04T21:00:23.620 回答
0

254.254.254.254

应该在保留以供将来使用的域中...

RFC 1700

于 2012-05-04T20:59:19.297 回答