ping 进入网络时会发生什么?路由器是回复回复的那个人吗?

网络工程 ip 协议理论
2021-07-15 23:35:10

ping 进入网络时会发生什么?路由器是将其重定向到网络上的设备之一,还是自己发送回复?

来自网络 A 的设备 a1(具有公共 IP 地址 P1)向网络 B 上的公共 IP(具有 IP P2)发送 ping。ping 通过路由器 R 到达 B 网络。路由器 R 是响应 ping 的那个,还是将 ping 重定向到 B 网络上的设备之一,例如 b1?

编辑:解释我的困惑。ping 请求有一个目的地,例如。一个公共 IP。但在许多情况下,该公共 IP 属于整个网络。例如个人网络。该网络中的哪个设备处理 ping 响应?

4个回答

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 的正确端到端范式。

ECHO REQUEST负责应答的是在传出数据包中寻址的主机就中间的路由器而言,这就像任何其他 IP 数据包一样,它们的工作只是将其发送到该主机。

您需要知道的一切都在RFC 792 “Internet 控制消息协议”中。

Ping 是一个应用程序,它向目的地发送 ICMP Echo Requests 并寻找目的地以使用 ICMP Echo Reply 进行回复。

ICMP 是 IP 的有效载荷,虽然是 IP 的组成部分。这意味着ICMP Echo Request被封装在一个IP包中,IP包的目的IP地址在IP包头中。IP 数据包将发送到具有目标 IP 地址的设备。如果目标设备正在运行,并且没有以其他方式限制 ICMP Echo Replies,则该设备将使用 ICMP Echo Reply 回复 ICMP Echo Request。

但在许多情况下,该公共 IP 属于整个网络。例如个人网络。

那是不正确的。 您可能在谈论网络地址转换 (NAT),它几乎用于所有个人网络(以及大多数商业网络)。IP 地址属于 NAT 设备(路由器或防火墙)。

网络没有 IP 地址。