首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NAT穿越实验?

NAT穿越实验?
EN

Stack Overflow用户
提问于 2016-12-03 19:18:43
回答 1查看 241关注 0票数 0

我一直在阅读关于WebRTC及其如何支持peer to peer通信的文章。所以,我做了一个NAT遍历的实验。

本实验的目的是在NAT中进行孔打孔试验。我有两个系统都在运行Ubuntu 16.04。我将把这些系统称为system Asystem B

这两个系统都连接到承载在Amazon服务上的服务器。系统A使用命令nc -p 1234 -u IP_ADDRESS_OF_SERVER PORT_NUMBER_OF_SERVER,系统B使用命令nc -p 1235 -u IP_ADDRESS_OF_SERVER PORT_NUMBER_OF_SERVER。系统A和系统B都连接到同一个WiFi路由器。

连接到服务器后,我们了解了这两个系统的public socket。在此之后,我尝试使用我们从服务器获得的公共套接字信息在几秒钟内相互连接。

系统A与服务器断开连接,并通过命令nc -u -p 1234 PUBLIC_IP_OF_SYS_B PUBLIC_PORT_OF_SYS_B连接到系统B;系统B也与服务器断开连接,并通过命令nc -u -p 1235 PUBLIC_IP_OF_SYS_A PUBLIC_PORT_OF_SYS_A连接到系统A。

我这么做是为了给我们的NAT打个洞。之后,system取消上面的nc命令,并使用nc -l -u -p 1234监听它的端口。但不幸的是,我未能收到在系统A中的系统B中输入的任何消息。

有人能帮我找到这份工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-05 15:29:43

所以,我自己想出来的。我想要做的是Hairpin Translation和发夹翻译在现有的NAT中仍然不那么常见(与穿孔翻译相比)。

这两个系统恰好位于同一个NAT后面,因此位于同一个私有IP地址领域。System A已经与服务器S建立了UDP会话,公共NAT为其分配了自己的公共端口号(例如x)。System BS类似地建立了一个会话,NAT已将公共端口号(例如y)分配给该会话。

假设system A使用穿孔技术与B建立UDP会话,使用服务器S作为引导者。System A向S发送一条消息,请求连接到B。S用B的公共和私有端点响应A,并将A的公共端点和私有端点转发给B。然后,两个客户端都试图在每个端点直接向对方发送UDP数据报。发送到公共端点的消息不会到达目的地,因为NAT不支持发夹翻译。

任何人都可以在这里上读到关于发夹的消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40951543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档