服务器如何区分来自相同IP地址和端口的多个请求?

Kur*_*ama 5 networking port ip webserver

当多个请求发送到服务器到同一个 poft 80 或其他任何地址并且来自同一个 IP 地址时,例如,来自 NAT 后面的计算机或来自同一台计算机但不同的浏览器或同一台计算机上的不同应用程序,服务器如何区分它们并能够回复?

mta*_*tak 4

客户端将为每个 TCP 会话(请求)使用不同的源端口,因此每个连接有 4 个相关参数:

  • 源IP
  • 源端口
  • 目的IP
  • 目的端口

正如您在 netstat 输出中看到的,例如,我的 Web 浏览器在不同的源端口(40092、40094、40096)上有多个到 StackExchange 网络的连接:

tcp        0      0 192.168.x.42:40092     151.101.129.69:80       TIME_WAIT  
tcp        0      0 192.168.x.42:40096     151.101.129.69:80       TIME_WAIT  
tcp        0      0 192.168.x.42:40094     151.101.129.69:80       TIME_WAIT  
Run Code Online (Sandbox Code Playgroud)

服务器将能够根据客户端使用的源端口来区分连接。

  • @Kurama一旦使用了所有可用端口(一台机器上没有 100000 个可用端口,限制为 65535),连接将失败,要么等待可用端口,要么因错误而终止,指出没有可用端口使用 (2认同)