【问题标题】:How router handles ports?路由器如何处理端口?
【发布时间】:2012-12-05 15:06:40
【问题描述】:

很短的问题。假设 user1 和 user2 连接到路由器。

User1 在端口 12000 上打开 mozilla firefox。 User2 在端口 12001 上打开 mozilla firefox。

假设两个用户都加载了 www.google.com 页面

当路由器向google发送数据包时,google会从user1和user2看到什么样的地址? 两个用户都会像 123.123.123.123:7777 这样吗 或者对于 user1 和 123.123.123.123:12000 123.123.123.123:12001 for user2?

【问题讨论】:

    标签: sockets ip port router


    【解决方案1】:

    User1 在端口 12000 上打开 mozilla firefox。

    这不是它的工作原理。

    任何连接到任何服务器的客户端都将获得由其操作系统分配的ephemeral port。所以连接从 192.168.0.5:12000(12000 是临时端口,即随机)到 123.123.123.123:7777。

    第二个客户端,从不同的 IP 连接,将使用 192.168.0.6:12001(或者实际上,任何其他端口,甚至可以是 12000)到 123.123.123.123:7777 的组合。

    路由器保存这些 IP 和端口组合以执行NAT。在执行 NAT 时,路由器将使用外部地址,甚至可能使用不同的临时(源)端口来连接到目标。

    【讨论】:

    • "任何连接到任何服务器的客户端都将获得由其操作系统分配的临时端口" ...除非客户端在连接之前显式绑定到特定端口,这是完全有效的,特别是如果防火墙限制了可用的端口,或者正在使用的协议需要特定的端口。
    • 所以,要回答实际问题:“google 将从 user1 和 user2 看到什么样的地址?”,答案是:“::"
    • 假设正在使用 NAT 也不安全。仍然有计算机在没有 NAT 的情况下连接。如果没有发生 NAT,路由器将不会缓存任何端口/IP 映射。他的示例建议使用 NAT,但重要的是他要知道 NAT 并不总是在起作用。
    • @WildBill 有效观察,谢谢。但这也是一个极端情况。对于这样的问题,我不会详细说明所有 TCP/IP 和所有相关协议。
    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多