本地 IP 地址与公网 IP 地址如何区分?

本地 IP 地址与公网 IP 地址如何区分?

ping 之类的工具或使用 tcp/ip 协议的任何其他工具如何知道 192.168.1.1 或 10.0.0.1 是本地 ip 地址,而 8.8.8.8 或 74.142.23.95 是公共 ip 地址?192.168.xx 和 10.0.xx 是否硬编码以保留供本地使用?

答案1

是的,确实如此预订的经过RFC 1918适合在私人网络中使用。

但实际上这并不重要。您可以从 RIPE 或其他任何地方获取一组“公共”IP 地址,并将其用于您的私人网络,一切仍将正常运作。保留只是出于政治原因,以便管理员可以毫无困难地建立自己的私人网络。

类似的工具ping 不管地址是“私有”还是“本地”或“公共”。它们只是向给定地址发送一个数据包,而你的操作系统会查看路由表来决定下一步将其发送到哪里。

例如,当您在 Windows 上使用 IP 地址10.2.3.4/16(网络掩码格式:)255.255.0.0和网关配置以太网卡时10.2.0.1,它会将以下条目添加到路由表中:

  • 10.2.3.4/32(网络掩码255.255.255.255)到接口Loopback

    (您自己的地址始终通过环回接口路由,它们永远不会进入网络。)

  • 10.2.0.0/16(网络掩码255.255.0.0)到接口Local Area Connection

    (根据定义,您所在子网中的地址是本地的。)

  • 0.0.0.0/0(网络掩码0.0.0.0)到网关10.2.0.1

    (其他一切都不是本地的。)

换句话说,你告诉操作系统范围内的所有地址10.2.0.0/16都是本地的,操作系统会处理一切。


查看路由表:

  • 在 Linux 上,ip route(IPv4) 和ip -6 route(IPv6)
  • 在 Windows 上,route print(≤XP 上为 IPv4,≥Vista 上为 v4/v6)
  • 在 Windows XP 上netsh interface ipv6 show route(IPv6)
  • 在 Windows、Linux、BSD 和其他类 Unix 上netstat -r -n(IPv4)
  • 在 Linux 和一些类 Unix 上,netstat -r -n -6(IPv6)

可以使用相同的工具编辑路由表。例如,要将所有内容标记为本地,您可以在 Linux 上172.16.0.0/16使用。ip route add 172.16.0.0/16 dev eth0

答案2

公有和私有 IP 地址在 RFC 中有定义。以下是私有 IP 地址:

10.0.0.0/8

172.16.0.0/12

192.168.0.0/16

这些 IP 地址也是环回的:

127.0.0.0/8

其他都是公开的。

大多数工具不需要知道公共或私有 IP 地址。

相关内容