P2P通信原理与实现(C++),NAT,网络穿透原理_第1页
P2P通信原理与实现(C++),NAT,网络穿透原理_第2页
P2P通信原理与实现(C++),NAT,网络穿透原理_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、P2P 通信原理与实现(C+),NAT,网络穿透原理简介(MIddleBoxesNAT即便是到了IPV6NAT,但还有其他中间件如防火墙阻挡了链接的建立。当今部署的中间件大多都是在C/SIP 地址和DNSNAPTIP 地址,而是通过NAPTIP这种内网主机隐藏在中间件后的不可访问性对于一些客户端软件如浏览器来说并不是一个问题,因为其只需要初始化对外的链接,从某方面来看反而还对隐私保护有好处。然而在P2P(客户端(Peer) 都没有公网IPNATIPNAT主机直接通讯的问题。详解,网络穿透,P2P,打洞的核心原理视频讲解:链接P2P 丨网络穿透与 NAT 原理分析:链接术语防火墙(Firewal

2、l):防火墙主要限制内网和公网的通讯,通常丢弃未经许可的数据包。防火墙会检测(但是不修改)试图进入内网数据包的IP 地址和TCP/UDP 端口信息。网络地址转换器(NAT):NAT 不止检查进入数据包的头部,而且对其进行修改,从而实现同一内网中不同主机共用更少的公网IP(通常是一个)。基本 NAT(Basic NAT):基本NAT 会将内网主机的IP 地址映射为一个公网IP,不改变其TCP/UDP 端口号。基本NAT 通常只有在当NAT 有公网IP 池的时候才有用。网络地址-端口转换器(NAPT):到目前为止最常见的即为NAPT,其检测并修改出入数据包的IP 地址和端口号,从而允许多个内网主机

3、同时共享一个公网IP 地址。锥形 NAT(Cone NAT):在建立了一对(公网IP,公网端口)和(内网IP,内网端口) 二元组的绑定之后,Cone NAT 会重用这组绑定用于接下来该应用程序的所有会话(同一内网IP 和端口),只要还有一个会话还是激活的。A到两个不同的外部服务端S1 和S2ConeNAT 只为两个会话映射了一个公网端点NAT退化的Cone NAT。对称 NAT(Symmetric NAT)对称NAT其中Cone NATNAT(公网IP,公网端口对的输入数据还可以细分为以下三类:全锥形NAT(FullConeNAT)/内网端口绑定之后,全锥形NAT全锥NATNAT(promis

4、cuous 。受限锥形NAT(RestrictedConeNAT)受限锥形NAT部(源)IPIPNATIP址,有效地精简了防火墙的规则。NAT(Port-RestrictedConeNAT)端口受限锥形NATIPNAT数据。P2P根据客户端的不同,客户端之间进行P2P 传输的方法也略有不同,这里介绍了现有的穿越中间件进行P2P 通信的几种技术。中继(Relaying)这是最可靠但也是最低效的一种P2P个有公网IP客户端ABS然后再通过S没体现出P2P逆向链接(Connectionreversal)如,客户端A 在NATBIP客户端A10.0.0.1,且应用程序正在使用TCP1234。ASIP1

5、8.181.0.31,监听 1235 端口。NAT A 给客户端A 分配了TCP 端口62000,地址为NAT 的公网IP155.99.25.11,作为客户端A外当前会话的临时IPSA。而BSB138.76.29.7:1234。当客户端BA 的P2PA 155.99.25.11:62000,要么链接A10.0.0.1:1234 155.99.25.11:62000 的TCP SYNNAT ANAT A说只有外出的链接才是允许的。在直接链接ABS 向A从而从AA-B很多当前的P2PIP通信的双方都在NATUDP(UDPholepunching)第三种P2PP2P 打洞技术依赖于通常防火墙和con

6、e NATP2PNAT己并不需要知道。NAT假设客户端ABNAT ABP2PSUDPA 和BServerUDP现在假设客户端ABUDP如果A直接给B的公网地址138.76.29.7:31000发送UDPNATB将很可能会无视进入的数据(除非是Full Cone 因为源地址和端口与SSB 往A假设A 开始给BUDPSB 开始给AUDPA 往B 的输出信息会导致NATAAB 往AUDPA 和客户端BSUDPP2P具体是什么(如果有的话个中间件的情况下也一样能建立通信链路。NATA 和BNAT户端ASUDPNATS62001,如下图:假设A 和BUDPP2PA 和BSIPNAT网主机对内网其他主机发

7、起UDP(lookback translation),因为从内部到达NATA 发送一个UDP 数据包给BIP端口地址 10.0.0.1:1234 和目的地址 155.99.25.11:62001,NAT 收到155.99.25.11:62000(A)和目的10.1.1.3:1234,然后再转发给B。即便NATA 与B时和加重NATA 和BSIP(从自己看), NATNAT不同NATABA 内网网段中无关的结点上去的。固定端口绑定UDP只有当NAT 都是ConeNAT(或者非NAT)时才能工作。因为其维持了一个给定的(网IP,内网UDP)二元组和(公网IP, 公网UDP)二元组固定的端口绑定,只

8、要该UDPNATUDP无法使用跟外部端点已经打通了的通信链路。由于Cone NATNAT具体实现这里采用C+的异步IOP2P户端可以实现直接通信。引导服务端设计的来自客户的命令(2333)。客户端其实可以而且也最好应该与服务器建立TCP了图方便,也只采用了UDP2333login, 客户端登录,使得其记录在服务器traker 中,让其他peer 可以对其发出链接请求。logout,客户端登出,使其对peer 隐藏。因为服务器不会追踪客户端的登录状态。list,客户端查看目前的登录用户。punch , 对指定用户(序号)进行打洞。help, 查看有哪些可用的命令。P2PP2PP2P端。A 想要与B发送punchBBA 收到之后向AA 与B 就可以进行P2PB关于TCPTCP何未经连接而发送的数据都会被丢弃,这导致在recv直接从peer其实这对UDP 也一样,如果对UDP 的socket 进行了connect,其也会忽略连接之外的数据,详见connect(2)。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论