p2p技术简介

author author     2022-09-02     628

关键词:

 

P2P技术简介

NAT( Network Address Translation)穿越(俗称打洞)技术

前言:

p2p已经存在于我们生活的方方面面;我们通过下载在工具(比如迅雷,bitorent,各种网盘)下载,观看live视频(ppstream,pplive)都在使用p2p,有些im也是通过p2p来传递消息的;我们知道使用p2p技术的下载工具下载更快,使用p2p的live视频更流畅,而且同时使用的人越多效果越好,因为他是可能从我们“邻居”那里获取数据。

那么p2p到底是个什么样的东西呢。暂且我么可以这样理解为:他是通过NAT穿越来建立的一种网络链接,实现了私有网络对私有网络(peer to peer)的互通。既然p2p链接是通过NAT穿越来建立,那么NAT穿越又是怎么回事呢?且看下文分解。

 

一、NAT 简介

  • 为了解决ipv4地址的紧缺(约为43亿)问题而出现了NAT
  • NAT将网络划分为内部网络和外部网络
    • 内部网络使用私有ip地址
    • 私有地址段包括以下三个:
    • 10.0.0.0-10.255.255.255; 172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255
    • 私有地址段,仅能在内部使用,不能作为全球路由地址
    • 内网所有主机共用一个外网地址
    • 内网中的主机通过将地址转换为外网地址才可以访问外网

二、NAT的特点

  1. 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关;
  2. 网络访问只能先由私网侧发起,公网侧无法主动访问私网主机
  3. NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源地址替换,入方向做目的地址替换;
  4. NAT网关的存在对通信双方是保持透明的;
  5. NAT网关为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

在这里第二条是重点,正是因为NAT规定了“网络访问只能先由私网侧发起,公网侧无法主动访问私网主机”,才引出了我们的主题:NAT穿越,我们就是要通过NAT穿越来实现“公网侧主动访问私网主机”。

 

三、地址转换表的建立与删除

  •  NAT中内外网地址转换表的形式如下:

(内网)ip:port <----->(外网)ipw:portw
                …… <-----> ……

  •  建立:内网的ip:port首次访问外网时,建立映射关系

Udp:使用sendto发出第一个包时,建立映射关系
Tcp:发生在connect过程中(三次握手的第一个包(syn)发出时)

  • 删除:

Udp链接长时间静默时,删除映射关系
Tcp链接还会通过监测其关闭事件(FIN)来删除映射关系

 

四、NAT的类型
锥型:
地址转换关系的建立条件:首次访问外网的时候
    锥型NAT按照地址转换关系可被使用的条件可细分三种:
        完全锥型(full cone)
           地址转换关系,可以被任意外网地址(ip:port)使用
        受限锥型(restrict cone)
           地址转换关系,只可以被特定外网ip使用,(之前向此ip发送数据)
        端口受限锥型(port restrict cone)
           地址转换关系,只可以被特定外网ip:port使用,(之前向此ip:port发送数据)
对称型:
地址转换关系的建立条件:首次访问外网的时候, 或者再次访问不同的外网地址(ip:port)时

 

 

下面,通过一张图来再次分析一下各种NAT类型

技术分享

 

在这张图中左侧是内网 右侧是外网,中间一个NAT,NAT中有一个地址转换表,地址转换表的左侧是内网地址,右侧是对应的外网地址

完全锥形的地址转换关系,可以被任何的外网地址W(x,y)使用,这里W(x,y)只要知道W(u,v),只有就可以通过这个地址内网的L(a,b)发送数据

受限锥形的地址转换关系,增加了一个可以被使用的条件,就是特的ip,在这里只有ip为1,还有ip为2的外网地址使用,可以通过W(u,v)向内网L(a,b)发送数据

端口受限锥形的地址转换关系,可以被使用的条件更加严格,就是特定的ip:port,在这里只有ip和port都满足这个条件的外网W(1:1),W(2:2)才可以通过W(u:v)向内网L(a,b)发送数据

对称型的地址转换关系更加严格,它的地址转换关系和目的外网地址一一对应,为访问W(1:1)建立的转换关系,只可以用来与外网W(1:1)通信,为访问W(2:2)建立的地址转换关系,只用来与外网W(2:2)通信,这就是为什么对称型NAT不能穿越的原因

 


五、如何穿越各种NAT

  • 完全锥型

穿越者仅需要知道被穿越者的公网地址(ip:port),就可以通过此公网地址实现穿越

  • 受限锥型

被穿越者必须向穿越者公网ip发送数据,穿越者才能通过被穿越者的公网地址实现穿越

  • 端口受限锥型

被穿越者必须向穿越者公网ip:port发送数据,穿越者才能通过被穿越者的公网地址实现穿越

  • 对称型

目前没有较好的办法实现穿越,但是可以通过中继的方式实现数据中转

 

 

 

一招就够了

  1. 双方同时向对方的公网地址发送试探数据
  2. 如果对方是受限型或者端口受限型NAT,此试探数据丢失
  3. 双发再次向对方的公网地址发送试探数据,
  4. 如果排除网络丢包,此时三种锥型NAT均已穿越成功

 

 

 

打洞相关协议

STUN: Session Traversal Utilities for NAT (STUN)
https://tools.ietf.org/html/rfc5389

TURN: Traversal Using Relays around NAT (TURN)
https://tools.ietf.org/html/rfc5766

ICE: Interactive Connectivity Establishment (ICE)
https://tools.ietf.org/html/rfc5245

 


开源实现(client)

- libjingle  由google公司开发, 现在已经被合入了webrtc项目
- pjnath   http://www.pjsip.org/pjnath/docs/html/
- libnice  https://nice.freedesktop.org/wiki/ 被用于janus-gateway
- libre  http://www.creytiv.com/re.html  

 

开源实现(server)

rfc5766-turn-server webrtc推荐使用的
https://github.com/coturn/rfc5766-turn-server 

Coturn rfc5766-turn-server 的新版本
https://github.com/coturn/coturn

p2p简介

...信息并且能保持如此之快的速度的呢。这里就要讲到了P2P技术。  点对点技术(peer-to-peer,简称P2P)又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器... 查看详情

p2p技术详解:nat详解——详细原理p2p简介(代码片段)

...解决方案3.1、IP端到端服务模型3.2、NAT的弊端3.3、NAT穿越技术3.3.1应用层网关3.3.2探针技术STUN和TURN3.3.3中间件技术3.3.4中继代理技术3.3.5特定协议的自穿越技术4.NAT的应用和实现4.1、NAT的应用4.1.1NAT多实例应用4.1.2NAT的高可靠性组网4... 查看详情

p2p技术详解:nat详解——详细原理p2p简介(代码片段)

...解决方案3.1、IP端到端服务模型3.2、NAT的弊端3.3、NAT穿越技术3.3.1应用层网关3.3.2探针技术STUN和TURN3.3.3中间件技术3.3.4中继代理技术3.3.5特定协议的自穿越技术4.NAT的应用和实现4.1、NAT的应用4.1.1NAT多实例应用4.1.2NAT的高可靠性组网4... 查看详情

p2p技术详解:nat详解——详细原理p2p简介(代码片段)

...解决方案3.1、IP端到端服务模型3.2、NAT的弊端3.3、NAT穿越技术3.3.1应用层网关3.3.2探针技术STUN和TURN3.3.3中间件技术3.3.4中继代理技术3.3.5特定协议的自穿越技术4.NAT的应用和实现4.1、NAT的应用4.1.1NAT多实例应用4.1.2NAT的高可靠性组网4... 查看详情

区块链实战什么是p2p网络,区块链和p2p网络有什么关系

...络,区块链式使用P2P网络做什么1、P2P网络概念点对点技术(peer-to-peer,简称P2P)又称对等互联网络技术,是一种网络技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务... 查看详情

p2p技术详解:p2p技术之stunturnice详解(代码片段)

...检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NATTraversal)。最常见的NAT穿透是基于UDP的技术,如RFC3 查看详情

p2p技术详解:p2p技术之stunturnice详解(代码片段)

...检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NATTraversal)。最常见的NAT穿透是基于UDP的技术,如RFC3 查看详情

P2P技术比较

】P2P技术比较【英文标题】:ComparisonofP2PTechnology【发布时间】:2011-08-0715:30:42【问题描述】:我经历过各种基于udp的P2P技术,例如Stun。我最近为实现p2p实现了UDP/TCP打孔。我发现还有其他技术,例如ICE、UPnP和teredo谁能告诉我这... 查看详情

第六章p2p技术及应用

        第六章P2P技术及应用P2P技术在我们日常生活中非常实用,例如我们常用的QQ、PPLive、BitTorrent就是基于P2P技术研发。下面将本章中的重点内容进行归纳。文章中的Why表示产生的背景,也就是说为什么会产生该技术... 查看详情

什么是p2p技术

什么是P2P peer-to-peer简称P2P,即点对点技术。又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。 简单的说,P2P直接将人们联系起来,让人们通... 查看详情

“云”技术和p2p技术有什么区别?

...里,有很多服务器可以提供了某种服务。基于此意义,p2p技术就是一种云服务。P2P如果用来做传输分发,比如用BT部署自己的分发系统,这种就可以视为云分发。因为p2p背后也是支持很多服务器提供数据,属于在一堆服务器云对... 查看详情

p2p技术详解:p2p技术之stunturnice详解(代码片段)

目录1、内容概述2、STUN详解2.1RFC3489/STUN2.1.1报文结构2.1.2实现原理2.1.3STUN功能举例2.2RFC5389/STUN2.2.1STUN用途2.2.2报文结构2.3RFC5389与RFC3489的区别2.4新特性介绍2.4.1指纹机制2.4.2通过DNS发现服务器机制2.4.3认证和消息完整性机制2.4.4备份... 查看详情

p2p技术详解:p2p中的nat穿越(打洞)方案详解(进阶分析篇)(代码片段)

目录1、NAT和NAPT2、NAT带来的问题3、P2P通信穿越NAT的技术、方法4、NAT穿越技术1:应用层网关4.1、原理4.2、限制5、NAT穿越技术2:中间件技术5.1、原理5.2、限制6、NAT穿越技术3:打洞技术(HolePunching)6.1、原理6.2、方法6.2.1N... 查看详情

p2p技术概要

    P2P(PeertoPeer)也就是对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构[1]  ,是对等计算模型在应用层形成的一种组网或网络形式。“Peer”在英语里有“... 查看详情

区块链简介

目录区块链是什么强调区块链与比特币的关系区块链的技术要点P2P网络技术分布式账本技术共识机制密码学区块链分类区块链的必要性人工智能流派个体智能结构门派(联结主义)功能门派(符号主义/逻辑注意)... 查看详情

第10讲|深入区块链技术:p2p网络(代码片段)

  在上一篇文章中,我大致讲解了一下区块链技术的几个核心要素。P2P网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。今天我们就来看看区块链技术的第一个核心要素:P2P网络。  如果我们简... 查看详情

区块链实战什么是p2p网络,区块链和p2p网络有什么关系

目录一、简介二、知识点P2P网络区块链节点与P2P的关系区块链节点功能分类P2P网络特征三、什么是P2P网络,区块链式使用P2P网络做什么1、P2P网络概念2、P2P网络节点特征3、P2P与区块链4、网络节点功能一、简介在白皮书中࿰... 查看详情

区块链实战什么是p2p网络,区块链和p2p网络有什么关系

目录一、简介二、知识点P2P网络区块链节点与P2P的关系区块链节点功能分类P2P网络特征三、什么是P2P网络,区块链式使用P2P网络做什么1、P2P网络概念2、P2P网络节点特征3、P2P与区块链4、网络节点功能一、简介在白皮书中࿰... 查看详情