如何使用 BSD 套接字进行 UDP NAT 穿越

如何使用 BSD 套接字进行 UDP NAT 穿越

我一直在阅读需要使用外部 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 服务器分配的反射传输地址。

相关内容