我正在使用部署在Google AppEngine上的servlet来响应客户端的远程端口号。 HttpServletRequest.getRemoteAddr()工作正常,但getRemotePort()返回0?
端口0无效。我尝试了其他IP服务,告诉我正常的端口号(即55046或其他),但每次从浏览器或Java代码访问时,我的servlet都会返回0。
我的最终目标是能够在查找收件人的地址和外部端口位置时告诉连接启动器,这样TCP穿孔技术才能正常工作。
这是什么原因?如何获取实际端口号(如果可能)? NAT路由器不使用代理端口吗?
答案 0 :(得分:0)
我不确定为什么getRemotePort会返回0,但是为了你的最终目标,知道客户端端口是无用的。为每个连接重新分配客户端端口。实际上,如果第一个连接使用55046,则客户端端口的整个点用于新连接以使用不同的未使用的客户端端口号。
这使得在防火墙策略中配置漏洞成为无用的信息。您不需要客户端端口。如果您只想允许从该客户端地址访问,您需要的是服务器端口,服务器地址和可选的客户端地址。