1

我对端口感到困惑。

我觉得很奇怪我们需要将不同的服务器绑定到不同的端口。

示例:Apache 绑定在 8080,Express.js 无法绑定在 8080

服务器端口绑定与应用程序端口监听有何不同?

例子:不同的浏览器,比如chrome,firefox,可以在80端口监听和通信吗?

尝试运行“grunt test:unit”时出现此问题。有一个tomcat服务器已经绑定到8080,但是服务器咕噜声启动,我相信中间件能够启动,但无法捕获浏览器。停止 tomcat 服务器使一切正常。

4

2 回答 2

4

实际上,Firefox、Chrome 等使用不同的源端口。他们不监听端口;他们连接到远程服务器。服务器正在侦听一个端口 (80)。浏览器连接的源端口是随机选择的,并且是一个很大的数字。您可以使用netstat. 它们的目标端口相同(80)。

您不能将多个服务器绑定到同一个端口* 的原因是操作系统不知道将传入连接移交给哪个应用程序。

*实际上,你可以,但它很复杂。 SO_REUSEPORT

于 2013-08-26T21:19:59.377 回答
1

一次只有一个应用程序可以控制/侦听端口的原因是:当操作系统收到对端口 80 的请求,并且有两个应用程序在侦听它时,它应该如何知道要通过哪个应用程序对请求?

多个应用程序可以同时访问网络的原因是因为它们的操作方式不同——它们使用一个未使用的端口(可能是 62332 之类的东西)并且只有目标是端口 80,例如。

这就是端口的用途 - 这样您就可以在每台机器上同时运行多个服务器。

于 2013-08-26T21:22:39.547 回答