![来自多个主机的持久 Web 服务器连接](https://linux22.com/image/582819/%E6%9D%A5%E8%87%AA%E5%A4%9A%E4%B8%AA%E4%B8%BB%E6%9C%BA%E7%9A%84%E6%8C%81%E4%B9%85%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9E%E6%8E%A5.png)
假设 Web 服务器在主机 C 的 8080 端口上运行。假设此 Web 服务器使用持久连接,并且当前正在接收来自两个不同主机 A 和 B 的请求。所有请求是否都通过主机 C 上的同一套接字发送?如果它们通过不同的套接字传递,那么这两个套接字是否都具有 8080 端口?
我认为:它们通过同一个套接字在同一个端口(:8080)传递,因为这个网络服务器使用了一个执着的连接?即由于此连接是持久的,因此它不会为每个传入主机或连接提供新的连接这是真的吗?为什么?
答案1
持续监听端口的应用程序负责处理更高级别协议的连接管理。同一端口上的两个独立连接将由同一应用程序实例处理。两个连接、一个应用程序、一个监听套接字。该应用程序负责维护应用程序连接状态,并管理操作系统的 TCP 连接事件(打开/关闭)。
新的连接在操作系统层建立,一旦建立,就会传递给监听该端口的应用程序。当连接关闭时,它可能是由操作系统关闭的(通常是由于某种原因意外终止),也可能是由应用程序关闭的(正常关闭),应用程序必须处理所有情况。