两个浏览器如何同时侦听端口80?

Xin*_*nus 13 sockets

当我尝试从程序将套接字绑定到端口80时我得到错误,但两个浏览器如何同时监听同一个端口80?

pax*_*blo 20

浏览器不会侦听端口80,HTTP 服务器会这样做(虽然这只是惯例,你可以很容易地使用端口的FTP或telnet服务器80).

在TCP/IP中,"会话"必须是唯一的,并且会话被定义为5元组(protocol, sourceIP, sourcePort, destinationIP, destinationPort).这允许数据包在互联网上正确路由.

通常,当客户端尝试联系服务器时,它会将其指定0为源端口,这意味着操作系统会为其分配一个未使用的端口.这意味着客户端实际上将侦听端口而不是端口80.

因此,(TCP, mybox.com, 1101, www.microsoft.com, 80)当您的浏览器访问Microsoft的网页时,您可能会与属性进行会话.

如果你发现你不能绑定你的服务器的端口80,它很可能是因为你已经有一台服务器在该端口上运行,或者你的程序不具有所需的权限绑定到该端口(端口小于1024通常被认为是特权端口).

运行netstat -a(在Linux Windows上)将告诉您服务器是否绑定到端口80.在端口上查找侦听器80(或者http如果它将端口解析为服务名称),例如:

tcp  0  0  localhost:http  *:*  LISTEN
Run Code Online (Sandbox Code Playgroud)

  • @Jon,谢谢你.我自己并不打算以任何方式订购元组,它只是识别会话所需的信息.我会修复它的一致性,因为你绝对正确,它可能会引起混淆. (2认同)

wef*_*fwe 19

如果您使用的是SSL,那么他们不会在端口80上侦听端口80,如果您使用SSL,则不会听443;如果管理员违反惯例,他们也不会在任何其他端口上侦听,您可能已经看过像http://www.site.com这样的网址:8080,其中站点已在端口8080上设置).

浏览器将从随机的高编号端口发出请求,因此浏览器可以同时处于活动状态.

正如paxdiablo所说,你可以使用netstat来查看哪些程序正在监听连接(使用"netstat -a -b"将显示哪个可执行文件绑定到哪个端口)


小智 8

浏览器实际上不在端口80上侦听.网络服务器执行此操作,浏览器打开与49152和65535之间的端口的连接(我认为是动态端口).