p2p之网络穿透NAT,NAT、穿透的原理

1.p2p是什么?p2p是对等网络(peer-to-peer networking)其可以定义为:端对端的资源共享,每一端即可是服务端,也可以是客户端 。既可以是资源的提供者,也可以是资源的共享者 。
传统C/S模型需要实现端和端的资源共享,需要将资源上传到中转服务器 。另外一端再去中转服务器下载,如下图:

p2p之网络穿透NAT,NAT、穿透的原理

文章插图
传统CS架构,客户端1和客户端2之间是无直接交互.png
而P2P则不需要将资源上传到服务器,它是端对端传输,每一个端既可以是服务器,也可以是客户端
p2p之网络穿透NAT,NAT、穿透的原理

文章插图
p2p架构,无需中转服务器.png
优势:实时性最高,流量少,更加安全 。在视频直播,在线教育,视频安防行业用的比较多
劣势:一旦进行p2p传输之后,用户之间的内容将无法监管,浪费用户带宽,频繁进行读写磁盘
客户端1和客户端2这样交互是p2p最理想的情况
图中客户端1和客户端2直接连接,假如他们处于两个不同的内网呢?
2.NAT是什么?NAT俗称网络地址转换,它是一种把内部私有网络地址(IP地址)转换成公网网络IP地址的技术 。比如我们电脑里面网卡地址是192.168.1.100,但是我们再百度搜索“IP”却显示220.112.224.53,这就是NAT的功能 。
NAT主要是部署在路由器或者交换机上 。
为什么需要NAT?主要还是IP地址的不足,使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭 。用大白话:比如你有一个路由器(家用的那种就可以)这个路由器本身连接了公网(被分配到了一个公网的IP地址) 。路由器后面有接了N多个设备,每个设备都分配到了一个私有的地址(内网地址),这些地址可以通过这个路由器和外网交互 。
【p2p之网络穿透NAT,NAT、穿透的原理】其次能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机 。
RFC3489 中将 NAT 的实现分为四大类:
  • Full Cone NAT(完全圆锥型)
  • Address Restricted Cone NAT(地址限制圆锥型 )
  • Port Restricted Cone NAT(端口限制圆锥型)
  • Symmetric NAT(对称型)
1.完全圆锥型NAT在完全圆锥型NAT(Full Cone NAT)中,NAT会将客户机地址{X:y}转换成公网地址{A:b}并绑定 。任何包都可以通过地址{A:b}送到客户主机的{X:y}地址上 。如图所示:
p2p之网络穿透NAT,NAT、穿透的原理

文章插图
RFC3581——完全锥型NAT
2. 地址限制圆锥型NAT地址限制圆锥型NAT(Address Restricted Cone NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定,只有来自主机{P}的包才能和主机{X:y}通信 。如下图所示:
p2p之网络穿透NAT,NAT、穿透的原理

文章插图
RFC3581——地址限制型NAT
3.端口限制圆锥型NAT端口限制圆锥型NAT(Port Restricted Cone NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定,只有来自主机{P,q}的包才能和主机{X:y}通信 。如下图所示:
p2p之网络穿透NAT,NAT、穿透的原理

文章插图
RFC3581——端口限制型NAT
4.对称型NAT对称型NAT(Symmetric NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定为{X:y}|{A:b}<->{P:q} 。对称型NAT只接受来自{P:q}的连接,将它转给{X:y} ,每次客户机请求一个不同的公网地址和端口,NAT会新分配一个端口号{C,d}。如下图所示:
p2p之网络穿透NAT,NAT、穿透的原理

文章插图
RFC3581——对称型NAT
其中完全最上层的完全圆锥形NAT的穿透性最好,而最下层的对称形NAT的安全性最高 。
3.如何穿透NAT?事实上两个客户端相互通信还需要一个辅助服务器(p2pserver) 来保存两个用户的外网地址端口 。
当用户A连接B时、或者B连接A时,会向辅助服务器询问对方的外网地址和端口
p2p之网络穿透NAT,NAT、穿透的原理

文章插图
NAT穿透组合情况.png
从上面的NAT类型中可以看出,有4种NAT,一共10种组合
1. 完全圆锥型NAT和完全圆锥型NAT
这种最简单,只需要B从辅助服务器拿到A的内外网信息,就可以和A进行连接
2. 完全圆锥型NAT和地址限制型NAT
同上
3. 完全圆锥型NAT和端口限制性NAT
同上
4. 完全圆锥型NAT和对称型NAT
同上
5.地址限制型NAT和地址限制型NAT


推荐阅读