【问题标题】:How web server handles connections which are same ports & IP Addresses?Web 服务器如何处理相同端口和 IP 地址的连接?
【发布时间】:2016-01-18 01:04:57
【问题描述】:

我在我的电脑中打开 IE 浏览器和 Chrome 并输入 localhost:80 并获得索引页面。

在这里,我认为我的机器的 IP 与两个连接(IE 资源管理器和 Chrome)相同,端口也相同(80)。 注意:源端口会不同(因为目标端口相同:localhost IP),这是我的第二个问题。

  1. 那么网络服务器(比如说 apache)如何处理这个端口 80 连接而不会失败?端口转发吗?在操作系统级别,即使我尝试使用 addr 重用、端口重用参数,但都是一样的,我们无法使用相同的 IP 和端口建立多个连接。

  2. 现在,您可能想出了一个解决方案:虽然源端口和 IP 相同,但目标端口在包中不同:<protocol>, <src addr>, <src port>, <dest addr>, <dest port>。 A. 如图所示,我有 49483~50004 个端口。客户端如何知道 webserver 绑定了哪个目的端口(49483~50004)?如果它在 0 到 65355 之间是随机的,那么网络服务器总是绑定所有端口,这是非常消耗资源的。网络服务器如何避免这种情况?

Look at this image: command prompt-> netstat

如果这个问题与底层资源有关,那没关系,我了解嵌入式 TCP/IP/UDP、Phy MAC 通信和包结构。

【问题讨论】:

    标签: apache sockets networking tcp webserver


    【解决方案1】:

    这一切都是从头到尾的。

    • 服务器上的所有端口号都是一样的:80。所以客户端只需要知道80端口。
    • 客户端的所有端口号都不同:49483-50004 等。所以连接没有歧义,因为您提到的 4 元组是唯一的。

    【讨论】:

      【解决方案2】:

      所有http请求默认调用80端口的服务器,因为服务器默认监听那个端口。因此,您只需提供 IP 或主机名,Web 浏览器就会添加默认端口 (80)。如果您的 Web 服务器正在侦听另一个端口(通常 Tomcat 默认在 8080 中侦听),您可以提供自定义端口,例如您将其调用为:http://www.youamazingweb.com:8080

      一个很好的例子是将IP视为家,端口是客户端进入以消耗服务器中托管的某些资源的门。

      【讨论】:

        猜你喜欢
        • 2010-09-13
        • 1970-01-01
        • 2015-01-16
        • 2012-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-16
        • 2010-12-22
        相关资源
        最近更新 更多