ping 进入网络时会发生什么?路由器是将其重定向到网络上的设备之一,还是自己发送回复?
路由器将数据包路由到目的地。带有 ICMP 负载(ICMP ping 请求)的 IP 数据包的处理方式与任何其他数据包没有区别。
对于“进入网络”,您可能指的是将数据包从公共 IP 空间(互联网)路由到私有 IPv4 地址。由于私有地址根据定义在公共空间中毫无意义,这甚至是不可能的。具有私有目标地址的数据包通常会被 Internet 路由器丢弃而无法使用。
但是,由于连接私有 IP 空间和公共 IP 空间通常涉及 NAT,因此您需要了解其工作原理。连接到私有 LAN 需要端口转发,也就是反向 NAT,也就是目标 NAT。从私有 LAN 连接需要源 NAT - 私有 IP 地址被路由器池中可用的公共 IP 地址替换。
因此,如果您的服务器www.domain.tld位于您的 LAN 内并且 HTTP/S 端口由路由器转发,则此转发仅适用于定义的协议 - 在这种情况下,端口为 80 或 443 的 TCP。由于www.domain.tld解析为路由器的公共 IP 地址,因此按名称 ping 实际上是 ping 路由器的公共地址。
与端口转发类似,一些路由器确实允许将 ICMP 转发到内部主机,但这通常仅用于静态 NAT/暴露的主机设置,在这种情况下,您为主机拥有专用的公共 IP 并转发所有内容。
但在许多情况下,该公共 IP 属于整个网络。
正如上面和其他答案所解释的,您将 NAT 路由与正常路由混淆了。只有当(私有)网络隐藏在单个公共 IP 后面时,该地址才是您从外部看到的唯一地址。使用公共 IP 地址池也很常见,这些地址可能纯粹随机使用或通过某些关联使用。
“路由”并没有暗示NAT。实际上,NAT 很少使用——仅由连接公共和私有 IP 空间的边缘路由器使用,这确实使它突出。所有其他路由器 - 在 Internet 上或在专用 LAN 中 - 不需要 NAT 并且通常不使用它。
NAT 旨在使私有 IPv4 网络能够使用自己的而非 IANA 管理的寻址,以避免公共 IPv4 地址过早耗尽。使用 IPv6,这种混乱甚至不存在到这种程度(NAT64 只是一个提议的标准)。
例如个人网络。该网络中的哪个设备处理 ping 响应?
虽然家庭网络在这里无关紧要,但它们使用 NAT 路由器转换到(或来自)的公共 IP 地址。因此,您只能从外部 ping 那个路由器。
请注意,所有这些转换仅由 IPv4 要求并与 IPv4 一起使用。IPv6 不需要任何转换,因此它更合乎逻辑并遵循 TCP/IP 的正确端到端范式。