如果我理解正确,应用程序有时会使用HTTP发送消息,因为使用其他端口可能会导致防火墙问题。但是,如果不与其他应用程序(如Web浏览器)冲突,它如何工作?事实上,多个浏览器一次运行怎么不冲突?他们都监控端口并得到通知......你能以这种方式共享一个端口吗?
我觉得这是一个愚蠢的问题,但不是我以前想过的东西,而在其他情况下,当2个应用程序配置为使用相同的端口时,我遇到了问题。
答案 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是服务器上的远程端口,本地浏览器为每个建立的连接打开高端口。
每个连接在两个端都有端口号,一个叫做本地端口,另一个叫远程端口。
防火墙将允许流量到浏览器的高端口,因为它知道已经从您的计算机建立了连接。