为什么 STUN 服务器可以到达 NAT 后面的客户端?

网络工程 路由 纳特
2022-02-15 15:33:34

在这两张图中,为什么173.239.151.99(clientB)和STUN server都知道clientA(192.168.0.1)的公网IP,为什么clientB连不上clientA而STUN server可以呢?

或者这样提出我的问题:我们到底为什么需要 STUN 服务器?假设当clientA向clientB发送请求时,clientA的IP&port和转换表中NAT设备的公共IP&port之间会有一个绑定,这个映射是在NAT内部发送一个TCP SYN包或发送第一个UDP包时创建的。 ",所以当clientB发回响应时,翻译表将帮助它到达clientA。那我们到底为什么需要 STUN?

数字图2

1个回答

综合任务;-)

STUN 只能与“全锥 NAT、受限锥 NAT 和端口受限锥 NAT”一起使用……但不能与对称 NAT 一起使用。STUN 是客户端的协议,但在现实世界中,客户端通常使用对称 NAT(任何连接的唯一端口,动态转换)!在现实世界中,服务器使用全锥体 NAT(静态转换),并且服务器通常从客户端获取连接,这些客户端已经知道 ip:port…

然而,正式的回答:STUN 的最“频繁”使用它是sip 客户端到服务器 keepalive(udp),但也有其他用法: https ://www.rfc-editor.org/rfc/rfc5389#section-14:

14.  STUN Usages
   At the time of writing, three STUN usages are defined: Interactive
   Connectivity Establishment (ICE) [MMUSIC-ICE], Client-initiated
   connections for SIP [SIP-OUTBOUND], and NAT Behavior Discovery
   [BEHAVE-NAT].  Other STUN usages may be defined in the future.