【问题标题】:How gateway router delivers the packet for host in its local network (with only private IP address like 192.168.2.101)?网关路由器如何为本地网络中的主机传送数据包(只有私有 IP 地址,如 192.168.2.101)?
【发布时间】:2021-04-25 13:28:12
【问题描述】:

当我从连接到家庭 Wi-Fi 路由器的一台计算机向网络服务器发送请求时 - 响应数据包如何返回我的计算机而不是另一台计算机? 我本地网络中的所有计算机只有一个公共 IP 和不同的私有 IP(以 192.168 开头...) - 但传出 IP 数据包中的源地址将是该公共 IP,因此响应数据包的目标 IP 也将是该公共 IP . 私有IP(如192.168.2.101)的信息存放在哪里?

【问题讨论】:

    标签: ip ip-address local router private


    【解决方案1】:

    感谢NAT,多个私有 IP 地址可以共享一个公共 IP。

    TCPUDP 中,每个数据包都包含一个源 IP 和一个源端口(以及目标 IP 和端口)。当私网机器向公网服务器发送请求时,NAT设备/路由器用路由器的公网IP和某个唯一端口覆盖请求包中的私有源IP+源端口,并存储原始源IP+端口对和覆盖的源翻译表中的端口。远程服务器响应路由器的公网IP+覆盖的端口号,路由器根据覆盖的端口号在翻译表中查找,将原来的私网IP+端口放入响应包中发送给私机(发给原来的IP+端口)。图片来自维基百科:

    (more detailed on Wikipedia)

    所以答案是:路由器上的翻译表允许区分本地网络中的计算机并将响应传递给正确的本地计算机。

    【讨论】:

    • 非常感谢!所以答案可以改写为“对于 TCP-IP 网络,NAT 将私有 IP 编码为一些虚假的端口号,在其内存中记住此信息,然后将此“端口号”添加到 TCP 数据包头中。当响应 TCP 数据包进来时, NAT 将数据包中的传入端口号解码为实际的私有 IP 地址”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2010-09-17
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2014-02-26
    • 2014-09-20
    相关资源
    最近更新 更多