两个浏览器如何同时在端口80上侦听?
浏览器不侦听端口80
,HTTP服务器做(虽然这只是惯例,你可以使用端口80
轻松拥有一个FTP和Telnet服务器)。
在TCP/IP中,“会话”必须是唯一的,会话定义为5元组(protocol, sourceIP, sourcePort, destinationIP, destinationPort)
。这允许数据包在互联网上正确路由。
典型地,当客户端试图联系服务器,它指定0
作为其源端口这意味着该操作系统分配给它的未使用的一个。这意味着客户端实际上将在上监听端口而不是端口80
。
因此,当您的浏览器访问微软的网页时,您可能会收到与属性(TCP, mybox.com, 1101, www.microsoft.com, 80)
的会话。
如果您发现无法将服务器绑定到端口80
,很可能是因为您已经有一台服务器在该端口上运行,或者您的程序没有绑定到该端口所需的特权(端口小于1024
通常被认为是特权端口)。
运行netstat -a
(在Linux上或 Windows)会告诉你服务器是否绑定到端口80
。寻找端口80
监听器(或http
如果它解决端口服务名称),是这样的:
tcp 0 0 localhost:http *:* LISTEN
您将会话列为具有五元组('protocol,sourceIP,destinationIP,sourcePort,destinationPort)',但是您举例说明'(TCP,mybox.com,1101,www.microsoft.com,80)'。它应该不是'(TCP,mybox.com,www.microsoft.com,1101,80)'? – 2018-02-03 17:57:43
@Jon,谢谢你。这个元组不是我自己想要以任何方式订购的,它只是确定会话所需的信息。我会修正它的一致性,因为你绝对正确,可能会导致混淆。 – paxdiablo 2018-02-04 02:23:30
他们不听他们与80端口对话的端口80,或443如果您使用SSL(或在任何其他端口,如果管理员打破常规,您可能已经看到类似http://www.site.com:8080的网址已在8080端口上设置)。
浏览器将从随机编号较高的端口发出请求,以便浏览器可以同时处于活动状态。
由于paxdiablo说,你可以用netstat查看哪些程序侦听连接(使用“netstat的 - -b”将显示哪些可执行文件绑定到哪个端口)
的浏览器实际上不是绑定到80端口。您可能会发现,您也正在运行IIS或其他网络服务器,是绑定,这是您的问题的原因
浏览器实际上不听在端口80.网络服务器做到这一点,浏览器(动态端口)与49152和65535之间的端口打开连接。
在网络连接中,有一个对等体(通常称为客户机)连接到另一个(通常称为服务器)。据说服务器正在侦听某个端口,而客户端据说正在连接到该端口。
在这种情况下,Web服务器在所有客户端(浏览器)连接到端口80时监听端口80。
当浏览器与服务器建立连接时,它绑定到本地非特权端口,但连接到Web服务器的端口80.当服务器发回响应时,它会转到非特权端口浏览器的电脑。如果同一台计算机上有两个浏览器,则它们绑定到不同的端口。
如果你的意思是“怎么两个服务器侦听端口80”,可以考虑使用HTTP服务器API。 这两个服务器都可以注册一个回调函数和一个URL。客户端然后可以根据URL f.e来决定调用哪个服务器。
http://localhost/Service1将转到指定“http://localhost/Service1”作为其URL的服务。
服务器侦听,浏览器连接... – miku 2009-12-21 11:58:13
当连接到端口80时,两个程序中的哪一个应该回答? – 2009-12-21 12:06:43
@Alvaro这不是套接字的工作方式。 – 2009-12-21 12:14:07