UDP 构建p2p打洞过程的实现原理(持续更新)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: UDP 构建p2p打洞过程的实现原理(持续更新) 发表于7个月前(2015-01-19 10:55)   阅读(433) | 评论(0) 8人收藏此文章, 我要收藏 赞0 8月22日珠海 OSC 源创会正在报名,送机械键盘和开源无码内裤   摘要 UDP 构建p2p打洞过程的实现原理   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 双方都在局域网内就没有办法TCP直连了,所以像QQ等都会尽量使用UDP直连的   IP地址转换不需要你处理,网关默认就已经进行了转换。

UDP 构建p2p打洞过程的实现原理(持续更新)

发表于7个月前(2015-01-19 10:55)   阅读( 433) | 评论(0) 8人收藏此文章, 我要收藏
0

8月22日珠海 OSC 源创会正在报名,送机械键盘和开源无码内裤  

摘要 UDP 构建p2p打洞过程的实现原理

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
双方都在局域网内就没有办法TCP直连了,所以像QQ等都会尽量使用UDP直连的
 
IP地址转换不需要你处理,网关默认就已经进行了转换。服务器接收到DatagramPacket中getAddress和getPort已经是网关的端口
 
 
UDP打洞的过程大致如此:
1 、双方都通过UDP与服务器通讯后,网关默认就是做了一个外网IP和端口号 与你内网IP与端口号的映射,这个无需设置的,服务器也不需要知道客户的真正内网IP
2 、用户A先通过服务器知道用户B的外网地址与端口 
3 、用户A向用户B的外网地址与端口发送消息, 
4 、在这一次发送中,用户B的网关会拒收这条消息,因为它的映射中并没有这条规则。 
5 、但是用户A的网关就会增加了一条允许规则,允许接收从B发送过来的消息 
6 、服务器要求用户B发送一个消息到用户A的外网IP与端口号 
7 、用户B发送一条消息,这时用户A就可以接收到B的消息,而且网关B也增加了允许规则 
8 、之后,由于网关A与网关B都增加了允许规则,所以A与B都可以向对方的外网IP和端口号发送消息

对于这个过程的了解,可以看以下博客

http://blog.csdn.net/jdh99/article/details/6667648

------------------------------------------------------------------------------------------

通过UDP路由验证实现NAT穿越是一种在处于使用了NAT的私有网络中的Internet主机之间建立双向UDP连接的方法。由于NAT的行为是非标准化的,因此它并不能应用于所有类型的NAT。

其基本思想是这样的:让位于NAT后的两台主机都与处于公共地址空间的、众所周知的第三台服务器相连,然后,一旦NAT设备建立好UDP状态信息就转为直接通信,并寄希望于NAT设备会在分组其实是从另外一个主机传送过来的情况下仍然保持当前状态。

这项技术需要一个圆锥型NAT设备才能够正常工作。对称型NAT不能使用这项技术。

这项技术在P2P软件和VoIP电话领域被广泛采用。它是Skype用以绕过防火墙和NAT设备的技术之一。

相同的技术有时还被用于TCP连接——尽管远没有UDP成功。

目录
相关文章
|
iOS开发 Python
Python实现简单的udp打洞(P2P)
UDP穿越NAT的具体设计    首先,Client A登录服务器,NAT 1为这次的Session分配了一个端口60000,那么Server S收到的Client A的地址是200.0.0.132:60000,这就是ClientA的外网地址了。
2365 0
|
C++
UDP 打洞示例 包含 服务器 客户端
客户端示例:     [cpp] view plain copy     #include "Net.h"   #include "../p2pInfo.h"      int main()   {       CUdp  udp;       if (0!=udp.
920 0
UDP"打洞"原理
1. NAT分类根据Stun协议(RFC3489),NAT大致分为下面四类1) Full Cone这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的UDP数据报都可以到达A.
1257 0
UDP打洞实验
依云 posted @ 2 年前 in 网络 with tags python 网络 socat UDP , 7095 阅读 本文来自依云's Blog,转载请注明。 两台没有外网 IP、在 NAT 后边的主机如何直连?UDP打洞通常可行,但是需要第三方服务器。
1107 0
UDP"打洞"原理
1.       NAT分类 根据Stun协议(RFC3489),NAT大致分为下面四类 1)      Full Cone 这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的UDP数据报都可以到达A.不管是不是C发过来的. 例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
|
30天前
|
域名解析 网络协议 关系型数据库
tcp和udp的区别是什么
TCP和UDP是互联网协议中的传输层协议。TCP是面向连接的,通过三次握手建立可靠连接,提供数据顺序和可靠性保证,适用于HTTP、FTP等需要保证数据完整性的应用。UDP则是无连接的,数据报独立发送,传输速度快但不保证可靠性,常用于实时通信、流媒体和DNS解析等对速度要求高的场景。根据应用需求选择合适的协议至关重要。
tcp和udp的区别是什么