sel*_*bie 14
为了尝试建立P2P连接,STUN绑定请求和对STUN服务的主要地址(IP和端口)的响应才是真正重要的.在此请求的响应主体中返回的映射地址(通过XMPP或其他服务)传递到本地客户端尝试与之建立直接通信的远程节点.
STUN服务侦听的第二个IP和端口对于确定NAT端口映射行为和NAT过滤行为很有用.
通过对服务上的备用IP:端口发出绑定请求,客户端可以发现其NAT是否具有本地端口的一致映射语义.如果他为每个测试获得不同的端口映射值,客户端可以断定它是"对称NAT"的背后 - 这是P2P最难以遍历的.
通过发送带有"更改请求"属性的绑定请求,该属性要求服务从其他IP或端口进行响应,客户端可以检测他的NAT是否仅根据IP和端口过滤来自远程主机的数据报,或者允许来自的数据报它已将出站数据报发送到的主机上的备用端口.
映射行为和过滤测试仅为后续P2P连接提供有限的信息.在确定主机和因特网之间的对称NAT的情况下,一些实现可以观察到NAT在每个绑定响应中具有端口值的一致增量值.(例如,STUN服务观察到的外部端口增加1).因此,客户端可以为远程客户端提供IP和猜测的端口号,以尝试发送而不是从第一个绑定请求映射回来的端口号.或者客户端可以使用此行为/过滤测试进行日志记录.或者在对称NAT的情况下自动分配中继.
Jér*_*nge 11
因为在极少数情况下,NAT转换的行为是目标IP地址的函数.这意味着,您必须"ping"两个不同的IP地址才能找到NAT的精确行为(它是否取决于目标IP地址?)
如果你用两个不同的端口"ping"两次相同的服务器,那么就不能正确地覆盖这种情况(即,你不会覆盖所有的基础).
PS:两个IP地址不需要在同一台服务器上,也可以是不同的服务器.