当我尝试从程序将套接字绑定到端口80时,我得到错误,但是两个浏览器如何同时监听同一个端口80?
答案 0 :(得分:19)
他们不会在端口80上侦听它们与端口80,或443如果您正在使用SSL(如果管理员违反惯例,则在任何其他端口上),您可能已经看到了http://www.site.com:8080这样的网址该站点已在端口8080上建立。
浏览器将从随机的高编号端口发出请求,因此浏览器可以同时处于活动状态。
正如paxdiablo所说,您可以使用netstat查看哪些程序正在侦听连接(使用“netstat -a -b”将显示哪个可执行文件绑定到哪个端口)
答案 1 :(得分:19)
浏览器不会侦听端口80
,HTTP 服务器(虽然这只是惯例,但您可以使用端口80
轻松拥有FTP或telnet服务器。)< / p>
在TCP / IP中,“会话”必须是唯一的,会话定义为5元组(protocol, sourceIP, sourcePort, destinationIP, destinationPort)
。这允许数据包在互联网上正确路由。
通常,当客户端尝试联系服务器时,它会将0
指定为其源端口,这意味着操作系统会为其分配一个未使用的端口。这意味着客户端实际上会侦听那个端口而不是端口80
。
因此,当您的浏览器访问Microsoft的网页时,您可能会与属性(TCP, mybox.com, 1101, www.microsoft.com, 80)
进行会话。
如果您发现无法将服务器绑定到端口80
,则很可能是因为您已经在该端口上运行了服务器,或者您的程序没有绑定到该端口所需的权限(小于1024
的端口通常被视为特权端口。)
运行netstat -a
(在Linux 或 Windows上)将告诉您服务器是否绑定到端口80
。在端口80
上寻找侦听器(如果它正在解析服务名称的端口,则为http
),如:
tcp 0 0 localhost:http *:* LISTEN
答案 2 :(得分:8)
浏览器实际上不在端口80上侦听。网络服务器执行此操作,浏览器打开与49152和65535之间的端口的连接。我认为(动态端口)。
答案 3 :(得分:4)
在网络连接中,有一个对等体(通常称为客户端)连接到另一个对等体(通常称为服务器)。据说服务器正在侦听某个端口,而据说客户端正在连接到该端口。
在这种情况下,Web服务器侦听端口80,而所有客户端(浏览器)都连接到它。
答案 4 :(得分:3)
浏览器实际上并没有绑定到端口80。您可能会发现您还运行IIS或 绑定的其他Web服务器,这是导致问题的原因
答案 5 :(得分:2)
当浏览器与服务器建立连接时,它会绑定到本地非特权端口,但会连接到Web服务器的端口80.当服务器发回响应时,它会转到该端口上的非特权端口。浏览器的电脑。如果同一台计算机上有两个浏览器,它们会绑定到不同的端口。
答案 6 :(得分:0)
如果您的意思是“两个服务器如何侦听端口80”,请考虑使用HTTP Server API。 两个服务器都可以注册回调函数和URL。然后,客户端可以根据URL确定要调用哪个服务器,例如
http://localhost/Service1会转到指定了“http://localhost/Service1”作为其网址的服务。