应用程序如何使用端口80 / HTTP而不与浏览器冲突?

如果我理解正确,应用程序有时使用HTTP发送消息,因为使用其他端口很容易引起防火墙问题。 但是,如何在不与其他应用程序(如Web浏览器)冲突的情况下工作? 事实上,一次运行多个浏览器怎么不冲突呢? 他们都监视港口,并得到通知…你能分享一个港口吗?

我有一种感觉,这是一个愚蠢的问题,但不是我曾经想过的事情,在其他情况下,我已经看到了问题,当2个应用程序configuration为使用相同的端口。

有2个端口:一个源端口 (浏览器)和一个目的端口 (服务器)。 浏览器向操作系统请求一个可用的源端口(假设它接收到33123 ),然后与目标端口(通常为80 / HTTP443 / HTTPS )进行套接字连接。

当Web服务器收到答案时,它会发送一个响应,其中有80个作为源端口,33123作为目标端口。

所以如果你有两个浏览器同时访问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,但本地端口(由O / S分配)在每种情况下都是不同的。 所以没有冲突。

客户通常select1024到65535之间的一个端口。这取决于操作系统如何处理。 我认为Windows客户增加每个新连接的值,Unix客户select一个随机的端口号。

某些服务依赖于一个静态客户端端口,如NTP(123 UDP)

在“听80端口”和“连接80端口”的区别时需要小心。

当你说“应用程序有时使用HTTP发送消息,因为使用其他端口容易引起防火墙问题”,你实际上是指“应用程序有时会发送消息到端口80”。

服务器正在侦听端口80,并且可以接受该端口上的多个连接。

您在此讨论的端口80是服务器上的远程端口,本地浏览器为每个build立的连接打开高端口。

每个连接的两端都有端口号,一个是本地端口,另一个是远程端口。

防火墙将允许stream量到浏览器的高端口,因为它知道从您的计算机build立连接。

浏览器是您使用的客户端应用程序,以便在通常位于不同计算机上的Web服务器上查看内容。 Web服务器是在端口80上监听的,而不是客户端上的浏览器。