浏览器如何检测哪些HTTP响应是他们的?

ash*_*kan 2 networking http

鉴于您运行了多个Web浏览器,显然所有这些都在端口80上进行侦听,如果传入的HTTP响应是由自己发起的,浏览器将如何计算?是否收到回应并显示出来?

use*_*740 6

作为连接过程的一部分,为TCP/IP连接分配客户端端口.浏览器 "在端口80上侦听"; 而是浏览器向服务器上的[服务器]端口80发起请求,并等待来自服务器IP的客户端端口的回复.

在(本地)分配客户端端口之后,每个客户端[TCP/IP]连接都由唯一标识,(server IP, server port, client IP, client port)并且连接(以及通过此连接发送的响应)可以"连接"回正确的浏览器.这个相同的连接识别元组是服务器如何不混淆来自同一客户端/ IP 1的多个请求

HTTP位于TCP/IP层之上,并不需要关注混合连接流.(HTTP/2引入了多路复用,但这是一个不同的野兽,只影响来自同一浏览器的连接.)

有关概述,请参阅短暂港口范围:

TCP/IPv4连接由两个端点组成,每个端点由IP地址和端口号组成.因此,当客户端用户连接到服务器计算机时,可以将已建立的连接视为(服务器IP,服务器端口,客户端IP,客户端端口)的4元组. 通常很容易知道四个中的三个 - 客户端计算机使用自己的IP地址,当连接到远程服务时,需要服务器计算机的IP地址和服务端口号 [只保留客户端端口未知并自动分配].

不明显的是,当建立连接时,连接的客户端使用端口号.除非客户端程序明确请求特定端口号,否则使用的端口号是短暂的端口号. 临时端口是由机器的IP堆栈分配的临时端口,并且为此目的从指定的端口范围分配. 当连接终止时,临时端口可供重用,但大多数IP堆栈在重新使用短暂端口池之前不会重用该端口号.因此,如果客户端程序重新连接,将为其新连接的一侧分配一个不同的临时端口号.

有关其他温和说明,请参阅TCP/IP客户端(临时)端口和客户端/服务器应用程序端口.

要知道在何处发送回复,服务器必须知道客户端正在使用的端口号.此客户端端口由客户端作为请求中的源端口提供,然后由服务器用作发送回复的目标端口.客户端进程不使用已知或已注册的端口.而是为每个客户端进程分配一个临时端口号供其使用.这通常称为短暂的端口号.


1如果有多个客户端计算机(即不同的TCP/IP堆栈,每个都分配可能重复的短暂端口)使用相同的外部IP,则必须使用类似网络地址转换的内容,以便服务器仍然具有每个连接的唯一元组:

网络地址转换(NAT)是一种在互联网协议(IP)数据报包头中修改网络地址信息的方法,它们在流量路由设备中传输,以便将一个IP地址空间重新映射到另一个IP地址空间.