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

Mr.*_*Boy 53 sockets http ports

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

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

Fla*_*tef 77

有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)
Run Code Online (Sandbox Code Playgroud)

  • 浏览器是一个应用程序.你能详细说明你的问题吗? (6认同)
  • @huync 是的,每个选项卡都分配了一个独立的端口。[这个答案](http://superuser.com/questions/1055281/do-web-browsers-use-different-outgoing-ports-for-different-tabs)中有很好的解释 (2认同)

Jus*_*ner 20

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

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

每个浏览器使用不同的Source来生成请求.这样,数据包使其返回正确的应用程序.

  • @John,不.*web服务器*打开端口80,但*浏览器*具有不同的随机分配端口.如果您的应用程序在端口80上进行通信,那么您将阻止您的应用程序在与Web服务器相同的计算机上使用,但您不会干扰Web浏览. (5认同)

jch*_*chl 7

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


ob1*_*ob1 5

浏览器是一种客户端应用程序,您可以使用它来查看通常位于不同机器上的Web 服务器上的内容。Web 服务器是侦听端口 80 的服务器,而不是客户端上的浏览器。


Kon*_*rak 5

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

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

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


Jür*_*ock 5

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

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