想请教一个 udp 的 nat 穿墙打洞技术

2020-12-21 21:32:29 +08:00
 bruce0
上周末没事研究了一下 udp 的穿墙打洞技术,代码使用 Go 写的

先说一下我的基本思路吧; 一个有公网 ip 的端 S, 两个没有公网 ip 的端 A 和 B;
A 和 B 发送和监听使用同一个端口
A 和 B 先连接到 S 上, 这一步没有问题; A 通过 S 得到 B 的公网 Ip 和端口, 然后 A 向 B 的公网 IP 和端口发数据包, A 告诉 S , 然后 S 告诉 B, A 的公网 IP 和端口并且 A 已经发包了, 这时 B 也 向 A 的公网端口和 IP 发包

到这 理论上 A 和 B 应该能相互发包了, 但实际上 A,B 都能 S 互通, 但是 A 和 B 之间的包没有发过去.

有大哥知道问题出在哪了 给点建议 非常感谢
1216 次点击
所在节点    问与答
3 条回复
trepwq
2020-12-21 21:34:35 +08:00
研究一下 nat 类型吧
locoz
2020-12-21 23:42:09 +08:00
全文没有提到 nat 类型,应该是不知道有这回事?建议先了解一下再折腾打洞
bruce0
2020-12-22 09:37:36 +08:00
@trepwq
@locoz
今天刚测试了一下,已经排除 nat 是对称型类型, 剩下的 cone 类型的应该都是可以打洞的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX