如何从未知服务器连接到客户端计算机上打开的tcp端口?

如何从未知服务器连接到客户端计算机上打开的tcp端口?,tcp,ip,p2p,nat,ports,Tcp,Ip,P2p,Nat,Ports,我已经读了很多关于不同NAT遍历技术的书,但是我仍然不清楚它是如何工作的 如果我在客户机上打开一个TCP端口并向某个不存在的任意服务器发送请求(该服务器不会响应),我的客户机NAT现在将具有一个开放通道,对吗?如果我知道客户端的公共和私有IP以及端口号,那么我可以使用另一台(未知)位于不同IP地址的计算机访问该客户端端口吗 或者我的NAT会检查我的服务器数据包来自何处并阻止它,因为它与来自客户机的原始请求的IP地址不同 提前谢谢 要回答您的问题,您需要了解一点NAT的映射和过滤行为。首先让我陈述

我已经读了很多关于不同NAT遍历技术的书,但是我仍然不清楚它是如何工作的

如果我在客户机上打开一个TCP端口并向某个不存在的任意服务器发送请求(该服务器不会响应),我的客户机NAT现在将具有一个开放通道,对吗?如果我知道客户端的公共和私有IP以及端口号,那么我可以使用另一台(未知)位于不同IP地址的计算机访问该客户端端口吗

或者我的NAT会检查我的服务器数据包来自何处并阻止它,因为它与来自客户机的原始请求的IP地址不同


提前谢谢

要回答您的问题,您需要了解一点NAT的映射和过滤行为。首先让我陈述一个关于NAT映射行为的信息

如果您通过NAT的IP:端口将数据包从内部IP:端口发送到任何地址,则NAT将在内部IP:端口和其IP:端口之间创建一个映射。另一方面,NAT以外的人不能给你寄任何东西

NAT有4种类型

全锥NAT:如果您以前通过NAT的IP:端口从内部IP:端口发送数据包,则任何外部主机都可以通过将数据包发送到NAT的IP:端口将数据包发送到内部IP:端口

地址受限cone NAT:外部主机可以通过将数据包发送到您的NAT的IP:端口,将数据包发送到您的内部IP:端口,前提是之前至少有一个数据包已通过您的NAT的IP:端口从您的内部IP:端口发送到该外部主机的IP地址。在这里,外部主机的端口并不重要。只有IP地址必须相同

端口受限cone NAT:与地址受限相同,只是此时外部主机的端口很重要。至少一个以前通过NAT的IP:端口从内部IP:端口发送到外部主机IP:端口的数据包将允许外部主机通过NAT的IP:端口从其IP:端口发送数据包

对称NAT:它的映射行为与其他类型略有不同。对于前3种类型的NAT,无论您将数据发送到何处,它都将从内部IP:端口通过NAT的相同IP:端口。但对于不同目的地的对称NAT,您的数据将通过NAT的相同IP但不同端口传输。和端口受限锥体一样,如果数据先前发送到主机的IP:端口之外,则允许通过NAT传入数据包

因此,对于您的场景,只有当您的NAT是完整的cone NAT时,某个未知的人知道您的NAT的公共IP:您向未知服务器发送数据包的端口,才能通过UDP传输向您发送数据。对于其他NAT,它将被阻止,因为您没有向该外部主机发送任何数据。但是对于TCP连接,没有人可以向您发送任何数据,即使他们知道您的私有和公共IP:端口,因为它们位于不同的NAT后面。请阅读此表格中的详细信息


阅读有关的详细信息。

谢谢塔希尔!这正是我所缺少的:)