Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
应用程序如何使用端口80/HTTP而不与浏览器冲突?_Http_Sockets_Ports - Fatal编程技术网

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

应用程序如何使用端口80/HTTP而不与浏览器冲突?,http,sockets,ports,Http,Sockets,Ports,如果我理解正确的话,应用程序有时会使用HTTP发送消息,因为使用其他端口可能会导致防火墙问题。但是,如何在不与其他应用程序(如web浏览器)冲突的情况下工作呢?事实上,多个浏览器同时运行如何避免冲突?他们是否都监视端口并得到通知。。。你能用这种方式共享一个端口吗 我觉得这是一个愚蠢的问题,但我以前从来没有想到过,在其他情况下,当两个应用程序配置为使用同一端口时,我也看到过问题。传出的HTTP请求不会发生在端口80上。当应用程序请求套接字时,通常会随机接收一个套接字。这是源端口 端口80用于服务H

如果我理解正确的话,应用程序有时会使用HTTP发送消息,因为使用其他端口可能会导致防火墙问题。但是,如何在不与其他应用程序(如web浏览器)冲突的情况下工作呢?事实上,多个浏览器同时运行如何避免冲突?他们是否都监视端口并得到通知。。。你能用这种方式共享一个端口吗


我觉得这是一个愚蠢的问题,但我以前从来没有想到过,在其他情况下,当两个应用程序配置为使用同一端口时,我也看到过问题。

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

端口80用于服务HTTP内容(由服务器而不是客户端)。这是目的港


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

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

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

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


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

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

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


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

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

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


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

有两个端口:源端口(浏览器)和目标端口(服务器)。浏览器要求操作系统提供一个可用的源端口(假设它接收到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)
Firefox(localhost:33123)stackoverflow.com(69.59.196.211:80)
Chrome(本地主机:33124)stackoverflow.com(69.59.196.211:80)

但是如果我的客户机/服务器在80上通信怎么办。。。如果客户端在端口80上接收到消息(为什么),浏览器不会将其作为HTTP内容拦截?客户端将连接到服务器上的端口80,但将使用另一个端口本身。自己试试看:从服务器下载一个文件(如youtube视频),打开一个提示并键入“netstat”。您自己的计算机将使用一个随机端口(如62123)连接到端口80上的服务器。@John,否。web服务器打开端口80,但浏览器有一个不同的随机分配端口。如果你的应用程序通过端口80进行通信,那么你将阻止你的应用程序与web服务器在同一台机器上使用,但你根本不会干扰web浏览。此外,所选的随机端口的编号保证在1024以上,因为范围1-1024是为特定的基本服务保留的,如HTTP(S)、FTP、DNS等。“本地浏览器为每个已建立的连接打开高端端口"... 那么这是如何通过防火墙的呢?防火墙会默认打开特定范围的端口吗?@John:通常情况下,当客户端首次建立连接时,防火墙会检测到所涉及的端口和地址,并且只要连接处于“活动”状态,防火墙就会自动允许从服务器返回流量.防火墙允许任何端口上的传出连接。除非您显式打开它们,否则它们通常会阻止大多数端口上的传入连接。@John防火墙会监视防火墙后面的客户端建立的所有传出TCP连接,并打开一个洞,以便响应这些连接。实际上,它可能比这更复杂,因为大多数防火墙还将执行网络地址转换(NAT),即在所有传出TCP/UDP数据包上重写本地IP地址和端口,以使用站点的单个公共IP地址和新的本地端口,在这种情况下,反向转换必须应用于远程端口和响应的IP地址。好吧,我明白了。。。即使您阻止端口X,如果您使用本地端口X向远程端口80发送请求,防火墙也足够智能,可以让响应返回。因此,在内部,服务器将响应发送回客户端?对,在响应中,服务器切换本地和远程端口以及本地和远程IP地址,因此,对于并发连接,响应的本地端口=80,远程端口=80,您似乎是从浏览器的角度来解释这一点的。从应用程序的角度来看呢?浏览器就是应用程序。你能详细说明一下你的问题吗?浏览器上的每个选项卡都有一个