p2p的UDP打洞原理

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1.为什么要有UDP打洞?
可以从图中看出,ClientA访问Server时。先是要通过NAT,经过这一层的转换后,他的内网IP会被换成NAT的公网IP,并且会为ClientA的此次访问事件分配一个临时的端口。
这能解决IP地址日益匮乏的问题。因为NAT的存在,可以是多台Client共用一个公网IP地址。但是同时造成了一个问题。外网访问内网是很麻烦的。因为NA这个时候并没有为ClientA的每个端口提供映射。而是要用时,临时分配一个。那个如果外网的Server想主动发起通信是不可以的。同样的,另一个内网的ClientB想访问ClientA就更难了。
2.UDP打洞
如果ClientA发出连接Server的请求,那么NAT上就会有一个ClientA对应的通信端口的洞。这个时候外网的Server就可以通过这个洞来访问了。因为ClientA请求了Server,代表信任Server。那么Server通过这个洞就能和ClientA进行通信了。
但是要注意一个问题。如果ClientB知道了这个洞大多数情况下,也是不能发送消息给A的。会被NAT抛弃。因为不是可信来源。(要使得ClientB能发送信息给A的前提是。ClientA给ClientB发送一个消息。就像ClientA对B说,我相信你),那么这个时候Clinet'B再给ClientA发送信息,A就能接受到了。
3.打洞过程
(1)ClientA请求Server。
(2)ClientB请求Server。
(3)Server把ClientA的IP和端口信息发给ClientB。
(4)Server把ClientB的IP和端口信息发给ClientA。
(5)ClientA利用信息给ClientB发消息。(A信任B)
(6)ClinetB利用信息给ClientA发消息。(B信任A)
(7)连接已经建立。两者可以直接通信了。
//--------------------------------------------------------------
---------------------
作者:HotIce0
来源:CSDN
原文:https://blog.csdn.net/u011580175/article/details/71001796
版权声明:本文为博主原创文章,转载请附上博文链接!
更加详细的关于p2p理论文章:
http://bford.info/pub/net/p2pnat/
p2p的UDP打洞原理的更多相关文章
- UDP打洞原理及代码
来源:http://www.fenbi360.net/Content.aspx?id=1021&t=jc UDP"打洞"原理 1. NAT分类 根据Stun协议 ...
- UDP 打洞 原理解释
终于找到了一份满意的UDP打洞原理解释,附上正文,自己整理了一下源码 3.3. UDP hole punching UDP打洞技术 The third technique, and the one o ...
- [转]UDP穿透NAT的原理与实现(UDP“打洞”原理)
NAT(The IP Network Address Translator) 的概念和意义是什么? NAT, 中文翻译为网络地址转换.具体的详细信息可以访问RFC 1631 - http://www. ...
- UDP"打洞"原理
1. NAT分类 根据Stun协议(RFC3489),NAT大致分为下面四类 1) Full Cone 这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口 ...
- Udp打洞原理和源代码。
所谓udp打洞就是指客户端A通过udp协议向服务器发送数据包,服务器收到后,获取数据包,并且 可获取客户端A地址和端口号.同样在客户端B发送给服务器udp数据包后,服务器同样在收到B发送过来 的数据包 ...
- UDP打洞原理介绍
NAT穿越模块的设计与实现 Internet的快速发展以及IPv4地址数量的不足使得NAT设备得到了大规模的应用,然而这也给越来越多的端到端通信也带来了不少的麻烦.一般来说,NAT设备允许内网内主机 ...
- P2P之UDP穿透NAT原理
首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就 ...
- UDP打洞、P2P组网方式研究
catalogue . NAT概念 . P2P概念 . UDP打洞 . P2P DEMO . ZeroNet P2P 1. NAT概念 在STUN协议中,根据内部终端的地址(LocalIP:Local ...
- udp打洞( NAT traversal )的方法介绍
http://www.cnblogs.com/whyandinside/archive/2010/12/08/1900492.html http://www.gzsec.com/oldversion/ ...
随机推荐
- Struts2的多方法动态Action
原创 一个简单的Action里面的核心方法只有一个execute(); 定义多个核心方法的Action,有如下3种方式: 为Action配置method属性 动态方法调用 使用通配符映射方式 动态方法 ...
- linux命令の ./configure --prefix
源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install). Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./con ...
- Fiddler2抓包
https://www.cnblogs.com/conquerorren/p/8472054.html https://www.cnblogs.com/conquerorren/p/8472218.h ...
- Linux下配置Apache为多端口
1.打开Apache的配置文件httpd.conf,在Listen 80处另起一行输入Listen 8080(监听8080端口),要想再添加端口可依次添加 2.在httpd.conf文件最后一行添加: ...
- Https&证书
参考 http站点转https站点教程 http站点转https站点教程 HTTP与HTTPS的区别 Http站点转为Https: 为域名购买/申请证书(免费型DV SSL) 把证书部署到web se ...
- .net core2.1 CookieHelper
/// <summary> /// ** 描述:Cookie for .net core2.1 /// ** 创始时间:2018-11-19 /// ** 修改时间:- /// ** 作者 ...
- java 程序设计第一次作业
public class Join{ public static void main(String args[]){ String s1=new String("hello"); ...
- Android来电、去电监听
Android手机中添加手机来电的状态,使用PhoneStateListener来监听. TelephonyManager telephonyManager = (TelephonyManager) ...
- ajax跨域请求问题
ajax是不允许跨域请求的,今天在使用bootstap-table的时候,data-url使用的地址是绝对地址,而非相对地址,因此在载入数据的时候就出错了. 启动的时候使用是 http://127.0 ...
- java面向对象概念2
一.理解“万事万物皆对象”. 1.在java语言范畴中,我们都将功能.结构等封装到类中,通过类的实例化,来调用具体的功能结构. 2.涉及到java语言与前端html.后端的数据库交互时,前后端的结构在 ...