如果我理解正确,应用程序有时会使用HTTP来发送消息,因为使用其他端口可能会导致防火墙问题。但是如果不与其他应用程序(如Web浏览器)冲突,这该怎么办?实际上,同时运行多个浏览器时它们是如何不冲突的?它们是否都监视同一个端口并收到通知...可以通过这种方式共享端口吗?
我感觉这是一个愚蠢的问题,但这是我以前从未想过的事情,在其他情况下,我已经看到当两个应用程序配置为使用相同的端口时出现问题。
有2个端口:一个是源端口(浏览器),另一个是目标端口(服务器)。浏览器向操作系统请求可用的源端口(假设它收到了33123),然后与目标端口(通常为80/HTTP、443/HTTPS)建立套接字连接。
当 web 服务器接收到请求后,它会发送一个响应,其中包含80作为源端口和33123作为目标端口。
因此,如果你同时使用2个浏览器访问 stackoverflow.com,则会得到类似于以下内容:
Firefox (localhost:33123) <-----------> stackoverflow.com (69.59.196.211:80)
Chrome (localhost:33124) <-----------> stackoverflow.com (69.59.196.211:80)
传出的HTTP请求不会使用80端口。当应用程序请求套接字时,通常会随机分配一个。这就是源端口。
端口80用于提供HTTP内容(由服务器提供,而非客户端)。这是目标端口。
每个浏览器使用不同的源端口来生成请求。这样,数据包才能返回到正确的应用程序。
它是由五元组(IP协议、本地IP地址、本地端口、远程IP地址、远程端口)组成的,用于标识连接。多个浏览器(或者实际上是单个浏览器同时加载多个页面)将都使用目标端口80,但本地端口(由操作系统分配)在每种情况下都是不同的。因此不会出现冲突。
浏览器是一种客户端应用程序,您可以使用它来查看通常位于不同计算机上的网页服务器上的内容。
Web服务器监听的是端口80,而不是客户端上的浏览器。