当我尝试从程序中将端口80绑定到套接字时,出现错误,但两台浏览器如何同时听到同一端口80?两个浏览器如何同时在端口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的服务。
- 1. 如何运行两个在kubernetes上同一端口上侦听的容器?
- 2. TCP程序不能侦听端口80
- 3. Socket.io在多个端口上侦听?
- 4. 如何确定在端口80上监听什么服务器
- 5. 允许容器侦听端口80的副作用
- 6. c上的网络端口侦听器#
- 7. 侦听多个TCP端口
- 8. 服务器侦听多个端口[Java]
- 9. 服务器侦听多个端口c
- 10. netcat在端口上侦听时如何打印文本?
- 11. 如何配置Symfony项目来侦听Web服务器的80端口
- 12. 在浏览器中侦听事件在JavaScript中查找窗口
- 13. 使用node.js在2个不同的端口上侦听
- 14. 浏览器和viewer.container事件侦听器
- 15. 无状态的WCF服务侦听器在同一个端口
- 16. 配置为侦听端口80上的Tomcat连接器未能启动
- 17. Nginx:无法侦听端口80 ...只有端口8080工作在OSX 10.11
- 18. 如何组合两个需要侦听端口的Express模块?
- 19. 最后窗口关闭事件侦听器的Chrome浏览器
- 20. 使用Http处理程序来侦听端口80
- 21. 如果我使用一个侦听套接字在两个端口上侦听,那么我如何知道哪个端口接收到数据包?
- 22. Perl - 创建侦听不同端口的多个HTTP服务器
- 23. 如何在窗口上暂时阻止鼠标侦听器?
- 24. 如何更改Postgres侦听端口?
- 25. 如何获取EJB侦听端口?
- 26. snmpd未在Ubuntu服务器上的端口161上侦听
- 27. 两个Oracle TNS侦听器
- 28. .NET VB如何让服务器侦听多个端口?
- 29. 如何编写python HTTP服务器以侦听多个端口?
- 30. 两个侦听
服务器侦听,浏览器连接... – miku 2009-12-21 11:58:13
当连接到端口80时,两个程序中的哪一个应该回答? – 2009-12-21 12:06:43
@Alvaro这不是套接字的工作方式。 – 2009-12-21 12:14:07