如何设置特定的源端口

时间:2018-01-16 14:49:47

标签: java spring spring-mvc port

我使用Spring的RestTemplate类从组织外部的Web服务获取XML。

由于本地防火墙规则发生了变化,我需要在HTTP请求中指定一个特定的源端口。现在我无法在api,stackoverflow或任何有关如何执行此操作的教程中找到任何内容。

这不可能吗?

更一般地说,在线描述中,我发现使用特定的源端口通常是使用基于UDP的连接/应用程序完成的。这通常不是通过TCP完成的吗?

(我真的不认为它会有所帮助,但这里是代码片段,正如下面的评论者所说的那样):

MyRequest request = new MyRequest(); //whole thing done via jackson
RestTemplate templ = new RestTemplate();
this.serviceUrl = String.format("%s:%d", properties.getServiceUrl()
properties.getServicePort());
ExptectedResponse response = templ.postForObject(serviceUrl, request, ExptectedResponse.class);

1 个答案:

答案 0 :(得分:1)

从短暂端口范围49152-65535中随机选择TCP连接的源端口。 TCP端口范围如下所示:RFC 6056 - Ephemeral Ports

  

" IANA定义的动态端口范围包括49152-65535      范围,用于选择短暂的端口。"

端口选择过程因使用的操作系统而异。这比典型的Java应用程序低得多,因此不受应用程序控制。

从技术上讲,您可以强制操作系统选择指定的端口,但正如我所提到的那样是特定于操作系统的,并且破坏了Java应用程序的经典可移植性。超级用户有一篇很好的帖子讨论了这个主题here

我建议与更改防火墙的部门交谈,看看他们是否可以允许来自正常端口范围的出站连接。