我一直在阅读需要使用外部 STUN 服务器的 NAT 穿越。很少有公开的STUN 服务器但我不知道如何使用它们来找出我的公共 IP,其他客户端可以使用该 IP 来发起连接。作为这方面的新手,我无法使用 BSD 套接字找到正确的文档。如果有人能解释如何以 BSD 套接字为基础找到我的公共 IP,那就太好了。此外,如果您能为此提供良好的链接,我将不胜感激。
答案1
它位于 STUN 绑定响应中。RFC 5389STUN 规范在第 7 页解释了如何实现:
STUN 服务器将该源传输地址复制到 STUN 绑定响应中的 XOR-MAPPED- ADDRESS 属性中,并将绑定响应发送回 STUN 客户端。当此数据包通过 NAT 时,NAT 将修改 IP 标头中的目标传输地址,但 STUN 响应主体中的 XOR-MAPPED-ADDRESS 属性中的传输地址将保持不变。这样,客户端就可以了解最外层 NAT 相对于 STUN 服务器分配的反射传输地址。