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

时间:2010-06-02 12:46:24

标签: http sockets ports

如果我理解正确,应用程序有时会使用HTTP发送消息,因为使用其他端口可能会导致防火墙问题。但是,如果不与其他应用程序(如Web浏览器)冲突,它如何工作?事实上,多个浏览器一次运行怎么不冲突?他们都监控端口并得到通知......你能以这种方式共享一个端口吗?

我觉得这是一个愚蠢的问题,但不是我以前想过的东西,而在其他情况下,当2个应用程序配置为使用相同的端口时,我遇到了问题。

7 个答案:

答案 0 :(得分:74)

有2个端口:源端口(浏览器)和目标端口(服务器)。浏览器要求操作系统提供可用的源端口(假设它接收 33123 )然后建立到目标端口的套接字连接(通常 80 / HTTP 443 / 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)

答案 1 :(得分:20)

在端口80上不会发生传出HTTP请求。当应用程序请求套接字时,它通常会随机接收一个套接字。这是源端口。

端口80用于提供HTTP内容(由服务器而非客户端)。这是目标端口。

每个浏览器使用不同的Source来生成请求。这样,数据包就会恢复正确的应用程序。

答案 2 :(得分:7)

标识连接的是5元组(IP协议,本地IP地址,本地端口,远程IP地址,远程端口)。多个浏览器(或实际上是同时加载多个页面的单个浏览器)将各自使用目标端口80,但是本地端口(由O / S分配)在每种情况下都是不同的。因此没有冲突。

答案 3 :(得分:5)

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

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

答案 4 :(得分:4)

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

答案 5 :(得分:4)

您需要小心区分“侦听端口80”和“连接端口80”。

当你说“应用程序有时使用HTTP发送消息时,因为使用其他端口容易导致防火墙问题”,你实际上意味着“应用程序有时会向端口80发送消息”。

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

答案 6 :(得分:2)

您在这里谈到的端口80是服务器上的远程端口,本地浏览器为每个建立的连接打开高端口。

每个连接在两个端都有端口号,一个叫做本地端口,另一个叫远程端口。

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