【问题标题】:Approaches for having multiple applications receive data via port 80让多个应用程序通过端口 80 接收数据的方法
【发布时间】:2023-03-25 22:28:01
【问题描述】:
我正在寻找有关允许多个应用程序使用端口 80 进行通信的方法的建议。
我知道让多个应用程序实际绑定到端口 80 是不可能的,或者至少是不明智的,但是,当有一个设备同时提供 Web 界面 (HTTP) 和带有 RTP 的 RTSP 使用时,我已经看到了设备端口 80。
关于如何实现,我有两个想法:
是那些实现所有功能的定制应用吗?
例如,相同的二进制文件用于 Web 服务器和 RTSP 服务器。这似乎有点限制,因为如果需要,您必须对已开发的应用程序进行大量修改,例如 Apache 和 openSSH 都在端口 80 上。
是否有“端口 80 多路复用器”之类的模式?
例如,一个解析器应用程序侦听端口 80,并根据接收到的包的标头,将包传递给所需的应用程序。
找到一些相关的参考资料,试试看。
【问题讨论】:
标签:
apache
http
network-programming
multiplexing
【解决方案1】:
我真的认为这不可能以标准方式实现:端口号实际上是允许 TCP 和 UDP 协议中不同应用程序之间多路复用的端口号。更通用的 TSAP 传输服务接入点允许在传输层进行多路复用。 TSAP 是 TCP、UDP 或 SCTP 等协议中的端口。
您可能希望两个应用程序侦听同一端口的一个原因是,第二个应用程序可以监视或以其他方式处理第一个应用程序接收并最终处理的消息。在这种情况下,使用 pcap 库,其他应用程序可以读取主应用程序收到的可能会响应这些消息的消息。
Netfilter 也很有用,http://www.netfilter.org/
但是,如果您打算让两个应用程序响应到达同一端口的消息,这将是棘手的,并且会依赖于每个应用程序。
在此回复中,我假设您正在考虑使用相同 IP 地址侦听相同端口的应用程序。不同之处在于使用多主机服务器,其中两个应用程序可以侦听不同 IP 地址中的相同端口号。