当前位置: 首页 > 知识库问答 >
问题:

HTTP/HTTPS服务器可以托管在TCP打孔后打开的端口上吗?

诸福
2023-03-14

让我们考虑这样一个场景:客户端A位于NAT A之后,客户端B位于NAT B之后。TCP穿孔会发生,这会在两侧打开一个端口进行通信。在开放的端口上,客户端可以作为主机的HTTP/HTTPS服务器吗?

共有1个答案

马权
2023-03-14

TCP打孔只对特定的TCP连接起作用,该特定的TCP连接可以建立,因为a)双方以某种方式预先知道对等方的源端口,b)同时开始与对等方的TCP握手。只有这样,才建立一个NAT状态,该状态也只对该特定的连接(源IP,端口和目的IP,端口)有效。

外部客户端将与现有NAT状态不匹配,因为源IP、端口与现有状态不匹配。一个新的状态也不会仅仅因为有一些web服务器列表就从内部创建。因此,虽然web服务器可以托管在NAT之后,但它将无法从NAT外部访问。

 类似资料:
  • 我目前正在尝试为我的udp服务器在Android上实现udp打孔。事情应该是这样的: 客户端(在NAT之后;可能是3G,..)向服务器发送DatagramPacket(服务器有一个公共IP;端口也是45555)。客户端重复发送具有给定延迟的数据报 一旦服务器接收到数据报,它每500ms发送一次数据报(“信号”)。 如果穿孔成功,客户端应接收到这些信号 下面是我当前的客户端实现(Android):

  • 我已经尝试TCP打孔一段时间了,论坛似乎对基于TCP的方法和C编程语言没有多大帮助。主要参考文献如下, 我的设置是 客户端A--NAT-A--Internet--NAT-B--Client B。 假设客户机A知道B的公共endpoint和私有endpoint,而B知道A的endpoint(我已经编写了一个服务器'S',用于在对等点之间交换endpoint信息),并且两个NAT都不对称,如果两个客户

  • 我在 EC2 实例上运行 的 CherryPy Web 服务器。 我可以通过EC2机器上的本地连接到Web服务器,但我无法从自己的远程机器访问实例(我通过ssh连接到EC2)。 我需要打开端口8787才能远程访问web服务器吗?如果是这样,如何做到这一点?另外,我可以为此使用EC2实例的公共IP吗?

  • 我jenkins.war部署在Tomcat 9(Linux)上,并将其配置为超文本传输协议和https。 server.xml上的配置 web.xml配置 当jenkins没有被托管时,我能够使用上面的tomcat配置将http重定向到https。但在部署詹金斯之后。war将http重定向到https不起作用。 对于jenkins,将http重定向到https还需要其他配置更改吗?

  • 问题在下面。这是我当前的测试代码,它没有成功。 如何做TCP打孔?我正在使用远程服务器进行测试。我正在运行。我已经为端口80设置了路由器,所以它不需要打孔。我的代码有关联。现在我尝试其他端口,但我不知道如何打孔。 我所做的是(C#代码) 如何做TCP打孔?

  • null 如果或都不能通过TCP启动连接,我将如何管理这种情况?(使用UDP?) 如果在这种情况下TCP打孔不起作用,我可以发送UDP包吗?(UDP在传递方面是不可靠的,所以发送多个重复的数据包能保证传递吗?) 我通常知道穿孔是如何工作的,必须将两个客户端的endpoint相互提供给对方,以便它们都可以尝试发起连接。而且我也很了解纳特的 对于TCP漏洞打孔无效的较少见的情况,可以充当代理