关于Bart在NAT router blocking JMS messages中遇到的问题,我正在尝试查找客户端接收openJMS消息的端口号。在web上搜索了几年后,我只能找到有关服务器端口的信息,客户端上什么也找不到。这是针对tcp连接的。
如果有人能为我指明正确的方向,我将不胜感激。
谢谢!
发布于 2012-12-27 10:35:51
通常,每个新连接的客户端端口号都不同。我找不到任何证据表明OpenJMS客户端在与服务器通信时使用特定的端口号。这里有几个解释。
当客户端进程第一次联系服务器进程时,它可以使用公知的端口号来发起通信。众所周知的端口号由IANA ( Internet编号分配机构)分配给整个Internet上的特定服务。公认的端口号在0到1023范围内。
众所周知的端口仅用于在客户端和服务器进程之间建立通信。完成此操作后,服务器将分配一个临时端口号以供后续使用。临时端口号是进程开始通信时动态分配的唯一端口号。它们在通信完成后被释放。
相比之下,服务器响应客户端;它们不会发起与客户端的联系。因此,客户端不需要使用保留的端口号。事实上,这实际上是轻描淡写的:服务器不应该使用众所周知的或已注册的端口号将响应发送回客户端。原因是,对于特定设备,可以在同一机器上运行相同协议的客户端软件和服务器软件。如果服务器在其计算机的端口80上接收到HTTP请求,并将回复发送回客户端计算机上的端口80,则它会将回复发送到客户端计算机的HTTP 服务器进程(如果存在),而不是发送初始请求的客户端进程。
要知道将回复发送到何处,服务器必须知道客户端正在使用的端口号。它由客户端作为请求中的源端口提供,然后由服务器用作发送回复的目的端口。客户端进程不使用已知或已注册的端口。而是为每个客户端进程分配一个临时端口号以供其使用。这通常称为临时端口号。
此外,一个客户端可以连接到同一端口上的多个服务器。当客户端连接时,它们将使用另一端的随机端口。
只有服务器需要考虑使用空闲端口,而客户端需要知道这个端口是什么,否则它们将无法连接到您的服务器。
其他可能的帮助:
https://stackoverflow.com/questions/13921443
复制相似问题