可以为 Xmpp PubSub 或 Comet 实现使用超过 65535 个端口吗?

Posted

技术标签:

【中文标题】可以为 Xmpp PubSub 或 Comet 实现使用超过 65535 个端口吗?【英文标题】:possible to use more then 65535 ports for Xmpp PubSub or Comet implementation? 【发布时间】:2010-01-25 19:46:53 【问题描述】:

在 Comet/Reverse Ajax/PubSub 底层技术/基础是 Long polling。所以连接保持打开一分钟左右.. 根据我对网络和操作系统的了解,TCP/IP 仅支持 65535 个端口,所以我的问题是任何服务器如何同时支持超过 65535 个连接?

在我正在构建的应用程序中,所有用户都将同时连接,并希望从服务器实时更新.. 就像股票实时更新..

干杯,

【问题讨论】:

【参考方案1】:

您是正确的,因为有 65535 个唯一端口编号,但是 TCP 服务器应用程序允许许多客户端连接到服务器上的相同端口。例如,在 Web 服务器中,所有客户端都连接到端口 80。连接由 4 元组(src-address、src-port、dest-address、dest-port)唯一标识。

在设计您的实现时,您一定会想了解所谓的C10K problem。

【讨论】:

【参考方案2】:

每个连接的属性如下:

源 ip(可以是任何) 源端口(可以是 1024-65535 范围内的任何端口) 目标ip(你的服务器ip) 目标端口(您的应用运行的特定端口)

所以到服务器的连接数受限于所有可能的 ip 数乘以 64000(大约)。到目前为止还没有服务器可以处理它...... :)

【讨论】:

以上是关于可以为 Xmpp PubSub 或 Comet 实现使用超过 65535 个端口吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 XMPP - PEP/PubSub 获取传感器读数

xmpp pubsub service(XEP-0060) 收到订阅请求后能否创建节点?

XMPP Pubsub 节点发现,未找到项目

在 xmpp 中创建一个 pubsub 节点

多用户聊天 XMPP

XMPP:客户端仅从资源绑定接收通知