去中心化技术与P2P框架分享

一、中心化网络


为了更好的理解去中心化的概念,我们先来理解传统的中心化网络。


图1 传统中心化网络拓扑图
在这里插入图片描述
在传统的中心网络中,不论是B/S还是C/S,都是一种星型结构。
中心化节点为服务器,每一个客户端只能与服务器通信。服务器是对所有客户端提供服务。
如果客户端要与客户单进行通信,需要经过服务器进行路由处理,才能把数据路由到另外一个客户端。


二、去中心化网络


图2 去中心化网络拓扑图
在这里插入图片描述
在去中心化网络中,每个客户端都是平等的,没有客户端与服务器之分,客户端之间互相提供服务,不存在“特殊”身份。
客户端之间交互连接,每个客户端对外提供服务,同时也使用其他客户端提供的服务。我们称这些客户端为节点。

去中心化,不仅解除了中心化服务器绝对控制带来的风险,也提高了网络传输效率,并去除了中心化服务器数据路由的压力。


三、快播核心技术揭秘


图3 快播网络拓扑图
在这里插入图片描述
快播服务器不保存资源内容,只保存资源链接。

快播播放器播放一条视频的实现流程:
1)线路1,快播播放器输入搜索资源,请求送达快播服务器。
2)线路2,快播服务器返回资源种子给快播播放器。
3)线路3、线路4,快播播放器使用服务器返回的种子,连接对应的资源服务器。
4)资源服务返回数据给快播播放器进行播放。


四、网络地址映射NAT


P2P :peer-to-peer , 点对点。软件层应用为点对点通信、数据交互。


4.1 什么是NAT?

NAT: Network Address Translation 网络地址映射,是将公网地址映射为私网地址。
能够进行映射的网络装置被称为 NAT 路由器。


在私网与外网通信的过程中, 私网与公网连接的边沿节点被称为路由器。

比如私网内部网络为 192.168.1.1 的网络,路由器的公网 IP 为 112.93.114.32,服务器的公网 IP 地址为120.93.24.180。

  • 公网服务器发送数据与路由器公网 IP 时,能够将数据映射到私网中的机器;
  • 私网内的机器发送数据给公网服务器,路由器也能够映射为公网 IP 地址的过程,成为网络地址映射。


图4 私网与公网通信拓扑图
在这里插入图片描述


4.2 为什么需要NAT?


由于全球网络通信机器增加, IPv4 地址紧缺, 所以提出了 NAT 的理论, 通过公网 IP 地址与端口映射到私网机器的 IP 地址与端口。 这样就能通过少量的公有 IP 地址能够代表较多的私有 IP 地址,有助于减缓可用 IPv4 地址的耗尽。


4.3 NAT原理


图5 NAT工作拓扑图
在这里插入图片描述

私网–>公网
私网机器的一个网络进程,与公网服务器120.93.24.180机器通信,NAT路由器为每一个网络进程分配一个网络IP地址与端口,用于与公网服务器通信。


公网–>私网
公网服务器与私网内的网络进行通信,也是通过NAT路由器分配的网络IP地址与端口进入私网到达网络进程。


4.4 NAT的实现

NAT的实现方式有3种,包括:静态转换、动态转换、端口地址映射。


(一)静态转换(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。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值