1.p2p是什么?
p2p是对等网络(peer-to-peer networking)其能够定义为:端对端的资源共享,每一端即可是服务端,也能够是客户端。既能够是资源的提供者,也能够是资源的共享者。
传统C/S模型须要实现端和端的资源共享, 须要将资源上传到直达服务器。另外一端再去直达服务器下载,如下图:
传统CS架构,客户端1和客户端2之间是无间接交互.png
而P2P则不须要将资源上传到服务器,它是端对端传输,每一个端既能够是服务器,也能够是客户端
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多个设施,每个设施都调配到了一个公有的地址(内网地址),这些地址能够通过这个路由器和外网交互。
其次可能无效地防止来自网络内部的攻打,暗藏并爱护网络外部的计算机。 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}地址上。如图所示:
RFC3581——齐全锥型NAT
2. 地址限度圆锥型NAT
地址限度圆锥型NAT(Address Restricted Cone NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定,只有来自主机{P}的包能力和主机{X:y}通信。如下图所示:
RFC3581——地址限制型NAT
3.端口限度圆锥型NAT
端口限度圆锥型NAT(Port Restricted Cone NAT)会将客户机地址{X:y}转换成公网地址{A:b}并绑定,只有来自主机{P,q}的包能力和主机{X:y}通信。如下图所示:
转存失败从新上传勾销
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} 。如下图所示:
RFC3581——对称型NAT
Linuxc/c++服务器开发高阶学习材料视频:C/C++Linux服务器开发/后端开发-学习视频
内容包含C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,K8S,Docker,TCP/IP,协程,DPDK多个高级知识点。
视频解说:【技术篇】详解,网络穿透,P2P,打洞的外围原理丨NAT,穿透的原理丨实现网络穿透_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
其中齐全最上层的齐全圆锥形NAT的穿透性最好,而最上层的对称形NAT的安全性最高。
3.如何穿透NAT?
事实上两个客户端互相通信还须要一个辅助服务器(p2pserver) 来保留两个用户的外网地址端口。 当用户A连贯B时、或者B连贯A时, 会向辅助服务器询问对方的外网地址和端口
NAT穿透组合状况.png
从下面的NAT类型中能够看出,有4种NAT,一共10种组合
**1. 齐全圆锥型NAT和齐全圆锥型NAT 这种最简略, 只须要B从辅助服务器拿到A的内外网信息, 就能够和A进行连贯
**
**2. 齐全圆锥型NAT和地址限制型NAT 同上
**
**3. 齐全圆锥型NAT和端口限制性NAT 同上
**
**4. 齐全圆锥型NAT和对称型NAT 同上
**
5.地址限制型NAT和地址限制型NAT
- 当B从辅助服务器拿到A的内外网信息, B向A发送连贯, 这个时候NAT A设施会抛弃掉B发送过去的连贯。
- 这个时候B就向辅助服务器发送申请,让A连贯B一次, 连完后B就能够连贯到A了,NAT A不再拦挡B过去的连贯。
6.地址限制型NAT和端口限制型NAT
同上
7.地址限制性NAT和对称型NAT
同上
8.端口限制型NAT和端口限制型NAT
同上
9.端口限制型NAT和对称型NAT
这种无奈穿透, 因为A须要连过B,B能力连到A,然而A无奈连贯到B,因为B的是对称型NAT,端口始终在变
10.对称型NAT和对称型NAT
这种也无奈穿透,因为客户机每次申请一个不同的公网地址和端口, NAT会新调配一个端口号,所以从辅助服务器拿到的端口号是有效的(只是针对和服务器相连的端口号)。
eg:A和辅助服务器相连,NAT A会调配一个端口 8081。
A和B相连, NAT A会调配一个端口号10020,所以B连A并不知道A须要从10020进,所以无奈穿透过NAT A。不过也有人通过端口预测算法胜利连贯, 然而这种并不牢靠。
-
4.为什么须要保活链路?
因为一个连贯通过NAT设施之后,在NAT设施下面绑定的端口是有时效性的,个别是30分钟,然而起码的三五分钟就生效了,所以要不停的发送心跳包来保活NAT上的这个“洞”。
5.挪动、联通网络为什么没有电信快?
起因是电信拨号之后调配的是公网IP。而联通、挪动拨号之后还是内网IP,也就是NAT设施下面还有多层NAT, 屡次转发并且最终的进口只有一个,所以总体来说比较慢