P2P中NAT之间的打洞可能性
来源:互联网 发布:淘宝代购衣服专柜真假 编辑:程序博客网 时间:2024/05/19 13:09
我们看看不同NAT之间的NAT打洞。NAT打洞需要Server配合,需要2种Server:
1. 类似WebRTC中的信令服务器,作用是帮助客户机沟通IP和PORT信息;
2. STUN Server,用来让客户机判断自己所在的NAT环境。
现在假设客户端和Server的通讯都没问题,客户端知道自己所处环境,并且将自己的信息通过服务器发送给了另一方客户端,它们可能的打洞情况如下:
1. Full Cone NAT 与 Full Cone NAT:通讯很容易,各自通过STUN Server获取外部IP和Port后,通过信令服务器通知另一方,即可通讯。
2. Full Cone NAT 与 Restricted Cone NAT或Port Restricted Cone NAT在互相告知IP和Port后,如果由Full Cone NAT端先发送数据包,会失败,必须由Restricted Cone NAT或Port Restricted Cone NAT端先发送数据包给Full Cone NAT,之后双方即可互相通讯。
3. Full Cone NAT 与 Symmetric NAT通讯时,必须先由Symmetric NAT端发送数据包给Full Cone NAT端,Full Cone NAT端通过发来的数据包获得目标的新端口号,之后通过这个新端口号完成互相通讯。
4. Restricted Cone NAT 与 Restricted Cone NAT、Restricted Cone NAT 与 Port Restricted Cone NAT、Port Restricted Cone NAT 与 Port Restricted Cone NAT之间通讯时,先发送数据包的一方会失败,之后另一方发送数据包成功后,可互相通讯。
5. Restricted Cone NAT 与 Symmetric NAT通讯时,先由Restricted Cone NAT发送数据包给Symmetric NAT,发送数据会失败,只是为了下次能接收从Symmetric NAT端发送过来的数据包。然后由Symmetric NAT发送数据包到Restricted Cone NAT端,Restricted Cone NAT端会收到数据包,并且将新的端口号记下,使用新的端口号可与Symmetric NAT端通讯。
6. Port Restricted Cone NAT 与 Symmetric NAT通讯时,由于Port Restricted Cone NAT会对IP:PORT对进行限制,所以当Symmetric NAT端使用新PORT发来数据包时,Port Restricted Cone NAT端收不到,它们之间无法通讯。
7. Symmetric NAT 与 Symmetric NAT也无法通讯 。
阅读全文
0 0
- P2P中NAT之间的打洞可能性
- P2P中NAT之间的打洞可能性
- P2P中NAT之间的打洞可能性
- NAT与P2P打洞的基础知识
- P2P中打洞的若干问题
- P2P中打洞的若干问题
- P2P中打洞的若干问题
- C++:p2p通信,打洞技术,穿越NAT的实现
- C++:p2p通信,打洞技术,穿越NAT的实现
- P2P打洞中遇到的问题
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞(附源代码)
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
- [p2p]UDP用打洞技术穿透NAT的原理与实现(附源代码 转)
- [p2p]UDP用打洞技术穿透NAT的原理与实现
- 未能从程序集“System.ServiceModel, Version=3.0.0.0..."中加载类型“System.ServiceModel.Activation.HttpModule”
- MYSQL常用操作
- Android定时发送短信功能实现
- Linux CCF框架简要分析和API调用
- iOS开发之Block详解
- P2P中NAT之间的打洞可能性
- scsi、cifs、nfs在存储上的区别
- Oracle字符串操作 、 Oracle数值操作 、 Oracle日期操作 、 空值操作
- Java中关键字continue、break和return的区别
- 策略模式(转)
- 安装Django后,执行django-admin.py无法创建工程的解决办法
- sChart.js:一个小型简单的图表库
- Python字符串拼接的五种方式
- postgresql的外部表