NAT或代理如何响应传入的TCP SYN数据包?


0

在某些消息传递系统中,两个消息传递客户端通过聊天或语音呼叫直接彼此直接发送/接收数据包。我认为基本机制是TCP(例如TCP):这些客户端程序打开一个侦听TCP套接字,并向消息传递/协调服务器告知其IP / PORT对。然后,客户端程序从消息传递/协调服务器检索另一侧的IP / PORT。然后,其中一个(比如说A)与另一个(比如说B)使用检索到的IP / PORT对B发起一个TCP。

当被动客户端B(等待TCP SYN数据包)不在NAT或代理之后时,这很好。但是,如果B在NAT或代理之后,则IP / PORT对实际上就是NAT或代理的公共网络接口。

所以我的问题是,当NAT或代理收到TCP SYN时,其反应是什么?他们如何将TCP SYN中继到其后面的相应主机/进程?

Answers:


3

如果收到TCP Syn,则NAT主机将检查转发规则(转换表)。如果存在与传入数据包(目标源/地址)的详细信息匹配并将其映射到内部系统的规则,则该数据包将被重写并转发到适当的内部主机。如果转换表中没有该数据包的条目,则将其丢弃或发送RST,具体取决于将NAT配置为处理无效的传入连接的方式。


但是如果一个Messenger打开一个具有端口号的tcp监听套接字3000,那么它如何通知NAT它正在监听端口3000。您知道那些商业应用如何使其可行吗?
misteryes 2013年

大多数IM客户端不会打开侦听端口。相反,他们建立了与IM服务器的传出连接,并且没有关闭它。IM客户端的点对点流量几乎总是基于UDP,这更容易伪造,因此您可以发挥一些技巧来打孔。如果您的路由器支持,则可以通过UPnP与某些路由器协商以打开端口,但是该协议可以说是一个很大的安全漏洞,而不是有用的协议,而且并不常见。 en.wikipedia.org/wiki/STUN - en.wikipedia.org/wiki/Universal_Plug_and_Play
Zoredache
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.