一、中心化网络
为了更好地理解去中心化的概念,我们首先要了解传统的中心化网络。
图1传统中心化网络拓扑图
在传统的中央网络中,无论是B/S还是C/S都是星形结构。
中央节点是服务器,每个客户端只能与服务器通信。 服务器为所有客户端提供服务。
如果客户端与客户列表通信,则必须通过服务进行路由处理,才能将数据路由到另一个客户端。
二.去中心化网络
图2去中心化网络拓扑图
在去中心网络中,所有客户端都是平等的,没有客户端和服务器区分,客户端之间互相服务,不存在“特殊”身份。
在客户端之间交互连接,每个客户端对外提供服务,同时也使用其他客户端提供的服务。 这些客户端称为节点。
去中心化不仅消除了中心化服务绝对控制带来的风险,还提高了网络传输效率,消除了中心化服务数据路由的压力。
三.快播核心技术暴露
图3高速广播网络拓扑结构图
快速服务不保存资源内容,只保存资源链接。
快进播放器播放单个视频的实现过程:
1 )线路1、快播输入搜索资源,要求快递服务器送达。
2 )线路2、高速广播服务向高速广播播放器返回资源种子。
3 )线路3、线路4、快播机使用服务器返回的种子连接到相应的资源服务器。
4 )资源服务返回数据并向快播机播放。
四.网络地址映射NAT
P2P :peer-to-peer,点对点。 软件层的应用是点对点通信、数据交换。
4.1什么是北约? NAT :网络地址转换网络地址映射是将公共网络地址映射到专用网络地址的映射。
能够进行映射的网络装置被称为NAT路由器。
在专用网与外部网通信的过程中,专用网与公用网连接的边缘节点称为路由器。
例如,专用网内部网络为192.168.1.1的网络,路由器的公共网络IP为112.93.114.32,服务器的公共网络IP地址为120.93
当公用服务器发送数据和路由器公用网IP时,可以将数据映射到专用网上的设备; 专用网内的设备向公用网服务发送数据、路由器也能够映射到公用网IP地址的过程是网络地址映射。
图4互联网与公众网通信拓扑图
4.2为什么需要NAT?
由于全球网络通信设备增加,IPv4地址不足,提出了一种通过公共网络IP地址和端口映射到专用网络设备IP地址和端口的NAT理论。 这样可以用较少的公共IP地址表示更多的专用IP地址,有助于减少可用IPv4地址的耗尽。
4.3 NAT原理
图5 NAT工作拓扑图
私网公网
与公共网络服务器120.93.24.180计算机通信的专用网络计算机的网络进程。 NAT路由器为与公共网络服务器通信的每个网络进程分配网络IP地址和端口。
公网私网
公共网络中的服务器与专用网络中的网络进行通信,通过NAT路由器分配的网络IP地址和酸端口访问专用网络并到达网络进程。
4.4 NAT实现NAT的实现方式有三种:静态转换、动态转换、端口地址映射。
(一)静态转换(Static NAT)
图6 NAT静态转换拓扑图
机制:使用映射表,将专用网络中的IP地址和公用网络IP地址一对一映射。 访问专用网络或公共网络,并获取相应的IP地址进行通信。
特点:
专用IP地址转换为公用IP地址,公用IP和专用IP地址以一对一的配置对应。 专用网络中有多个专用地址需要与公用网络进行通信,需要放置多少外部网络IP地址,并极端占用公用网络IP地址。(二)动态转换(Dynamic NAT)
图7 NAT动态转换拓扑图
与静态转换不同,此处的公用网IP是从IP池中检索的,并且专用网IP与公用网IP之间的对应关系不是恒定的。
如果需要转换专用网络的内部地址,NAT路由器会从公共网络的IP地址池中检索IP地址,并将其分配给专用网络设备进行互联网通信。 专用网络设备的数据传输结束后,NAT路由器回收公用网络的IP地址,并返回IP地址池。 分配的IP地址不能用于其他数据传输。 在公用IP地址的数据量比互连设备的数量稍少的情况下,可以采用该动态转换方式。
(三)端口地址映射(Port Address Translation,PAT)
图8 NAT端口地址映射拓扑
更改互连中机器发送到公共包的源端口,进行端口转换。
私网内部的所有主机均可共享一个公网 IP 地址,实现对公网的访问。能够最大限度的节省 IP 地址资源。有隐藏私网中的所有主机,有效避免其他公网机器的攻击。目前该种方式应用的最广泛。
NAT种类
从 NAT 的技术实现角度, 可以分为三种,静态转换( Static NAT),动态转换( DynamicNAT), 端口地址映射( Port Address Translation, PAT)。
从 NAT 的功能, 可以分为四种: 完全锥型 NAT( Full Cone NAT), 对称 NAT( SymmetricNAT), IP 限制锥型 NAT(IP Restricted Cone NAT),端口限制锥形 NAT( Port RestrictedCone NAT)。这里不再做详细阐述。
图9 NAT种类
网络穿透,即NAT穿透,能够让公网机器找到私网机器,并提高下载速度。
穿透的本质是给一个 NAT 路由器的公网 IP 地址与端口发送报文数据, 对应私网机器能够收到报文数据。
图10 网络穿透
开始启动的时候,私网内的客户端进程都需要连接到服务器,然后在NAT上产生公网映射记录,服务器会把该公网映射记录信息发给有需要的外网访问端,外网访问端通过公网映射记录的信息就可以与私网内的机器进行数据交互。
以图10为例:
1> 私网机器B发送报文到公网服务器A的过程中,在NAT路由器上产生了一条记录(112.93.14.56:43891)。
2> 私网机器C发送报文到公网服务器A的过程中,在NAT路由器上产生了一条记录(170.93.14.56:5566)。
3> 私网机器C可以发送报文数据给公网映射记录(112.93.14.56:43891),使得私网机器B能收到该报文。
网络穿透的类型有:穿透完全锥型NAT,穿透限制锥型NAT,穿透对称NAT等。
网络穿透没法在应用软件上实现,都是路由器硬件出厂的时候就已经设置好的。我们可以根据自己的需要购买不同功能的路由器。
问题 P2P为什么要讲到NAT?
网络穿透,需要穿透网关(也被称为打洞),而穿透网关需要用到NAT。
问题 图10中,网络穿透的数据主要是在B和C之间进行交互,服务器A的作用是什么?
帮助找到对方的网关IP地址与端口,用于数据交互。
问题 为什么网络穿透数据传输采用UDP协议?TCP可不可以?
实现、应用难易角度考虑:
1)UDP:只需要知道对端的IP和端口,调用send对端就可以收到数据,实现容易。
2)TCP:使用TCP也可以,但是比较复杂。因为它是基于连接的,滑动窗口的值都应该对应得上的。
用数据传输的一般不用tcp,但是用于通知公网IP地址和端口用于传输的可以用tcp。