首页 > 其他分享 >P2P通信基本原理

P2P通信基本原理

时间:2024-04-10 13:30:38浏览次数:22  
标签:受限 基本原理 IP地址 端口 通信 P2P NAT 公网

在数字世界的脉络中,点对点(P2P)技术如同一条悄无声息的河流,流经信息的每个角落,连接着世界各地的计算机和设备。这种去中心化的网络模型,不仅打破了传统的客户端-服务器架构的界限,还赋予了数据传输一种前所未有的自由和效率。通过P2P,每个参与者既是消费者又是提供者,共同创造出一个强大、灵活且高度可扩展的网络生态系统。这种技术背后的原理和应用范围之广泛,不禁让人对其可能解锁的未来潜能充满期待。从文件共享和分布式计算到加密货币和去中心化金融,P2P技术正在逐步重塑我们的数字经济和社会结构。

本文阅读时间预计30分钟,可以对该技术有一个入门的了解

一、P2P简介

1.1 什么是P2P

P2P即点对点协议。

当A和B通信的时候,最简单的方式如下,A和B之间通过一个服务器转发数据。

在这里插入图片描述

而P2P是这样的,双方直接进行通信

在这里插入图片描述

这种方式能大大减轻服务端的负载,所以特别适合大数据的传输,比如实时音视频聊天、在线视频直播、大文件传输等应用场景。

1.2 P2P原理

P2P 技术的出现,主要是为了解决,两台不同局域网下的设备,无法通过局域网 IP 地址,直连通信的问题。

因为IPV4的地址有限(25亿个),导致很多设备并没有公网的IP地址,而是多个内网地址使用一个公网地址。

家庭中常见的内网地址有:192.168.xx.xx。只知道对方的内网地址,两个设备是无法通信的。

就像两个人如果只说自己住在几幢几单元,而不说自己住在哪个在哪个城市哪个小区,对方是找不到你的。

而服务器是有公网地址的,因此两个人都可以通过公网地址找到服务器,然后通过服务器的中介,两者建立联系。从下图可以看到,IPC的公网地址是209.144.29.01,手机的公网地址是128.105.39.11,要是IPC能知道手机的公网IP地址(反过来也一样),那就能跳过服务器直接与对方相连。这就是P2P的原理。
在这里插入图片描述

1.3 P2P如何实现

简单来说实现P2P比把大象关进冰箱还要简单,只需要两步

  • 获取自身所在的公网地址

  • 将获取到的公网地址和端口告诉对端。

二、NAT

NAT(网络地址转换器),它可以进入数据包的头部,并且对其修改,已达到多个内网公用一个公网地址的目的。

NAT也有两种,一种是Basic NAT,一种是NAPT,Basic NAT基本被淘汰了,这里只关注NAPT,

2.1 NAT的工作

下面用一个简单的例子来说明,这是两个设备Peer A和 Peer B之间的通信
在这里插入图片描述

有一台计算机,叫PeerB,它的内网地址是192.168.1.10,

它的网关是155.12.39.22(应该还有一个内网的IP地址,比如192.168.1.10)

如果Peer B中的某个进程(这个进程创建了一个UDP Socket,这个Socket绑定8888端口)想访问Peer A 117.78.39.135 的9999端口,那么当数据包通过NAT时会发生什么事情呢?

首先NAT会改变这个数据包的原IP地址,改为155.12.39.22。接着NAT会为这个传输创建一个Session(Session是一个抽象的概念,可以理解成两个手机在打电话,虽然是无形的,但是就是建立了一个对话)并且给这个Session分配一个端口,比如54000,然后改变这个数据包的源端口为54000。

所以本来是(192.168.1.10:8888->117.78.39.135:9999)的数据包到了互联网上变为了(155.12.39.22:54000->117.78.39.135:9999)。

一旦NAT创建了Session后,

NAT会记住这个54000端口对应的就是192.168.1.10:8888,

以后从117.78.39.135发送到54000端口上的数据都会转发到192.168.1.10:8888上,

这样来回都打通了,

我们也就可以认为Peer A 和 Peer B之间建立了连接,并且连接后数据不需要经过服务器。

2.1 NAT类型

NAT有很多类型,这里继续刚才的例子,如果PeerA向另外一个Peer C 发消息,会怎么样呢?

有两种情况,

  • NAT又给Session重新分配一个端口号。

  • NAT还使用原来的session1分配的端口号。

如果NAT类型是第一种,我们称为对称型,如果是这种p2p的魔法就很容易失灵,这种情况一般就不走直连了,走服务器转发。

第二种叫锥型。全锥型又分成4种。

全锥型、受限锥型(IP受限)、端口受限锥型(IP+PORT受限)、对称型。

  1. 全锥型:NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。任何一个外部主机均可通过该映射发送IP包到该内部主机。在上面的例子中,只要建立了54000的映射,那Peer C 发送到这个端口的数据包,也会转发到PeerA

  2. 受限锥型:NAT把所有来自相同内部IP地址和端口的请求映射到相同的外部IP地址和端口。但是,只有当内部主机先给IP地址为X的外部主机发送IP包,该外部主机才能向该内部主机发送IP包。在上面的例子中,如果PeerA没有PeerC的IP发过消息,那PeerC给PeerA发的消息会被丢弃

  3. 端口受限锥型:端口限制性圆锥与限制性圆锥类似,只是多了端口号的限制,即只有内部主机先向IP地址为X,端口号为P的外部主机发送1个IP包,该外部主机才能够把源端口号为P的IP包发送给该内部主机。端口受限锥形是在受限锥形的基础上加了端口号的限制。

2.2 P2P连接的条件

并不是所有的设备都能建立P2P连接的,要考虑连接双方的NAT类型。

因为不同NAT的类型的严格程度不一样。

这里先介绍不同的NAT类型。

NAT 类型全锥型受限锥型端口受限锥型对称型
全锥型可以可以可以可以
受限锥型可以可以可以可以
端口受限锥型可以可以可以不可以
对称型可以可以不可以不可以

需要根据通信双方NAT的类型采用不同的穿透技术,如STUN(Session Traversal Utilities for NAT)、TURN(Traversal Using Relays around NAT)或ICE(Interactive Connectivity Establishment)来实现不同NAT类型之间的有效连接。

标签:受限,基本原理,IP地址,端口,通信,P2P,NAT,公网
From: https://blog.csdn.net/wushakun/article/details/137592882

相关文章

  • 光之未来:波分设备助力高速通信
    关于波分设备 波分设备,或称波分复用设备,是一种利用光纤通信技术中的波分复用(WDM)技术来提高光纤传输能力的设备。它通过在同一根光纤上同时传输多个波长的光信号,从而大幅增加数据传输的总带宽。波分设备特别适合于需要高带宽的应用场景,如数据中心间的连接、城域网、以及长距......
  • ARM异构集群组建与通信性能测试
    ARM异构集群组建与通信性能测试1介绍本研究以树莓派、飞腾派、米尔海思三款ARM开发板为基础,组建计算集群,在其上运行实时性测试程序,并结合交换机实现板间通信。2系统编译与加载计划在下述开发板+系统上运行编译好的ARM程序:序号开发板系统状况2.1树莓派原生Rasp......
  • 进程间通信(管道)
    进程间通信(管道)一、关于创建管道的类(1)创建管道的类Pipe([duplex])在进程之间创建一条管道,并返回元组(conn1,conn2),其中conn1,conn2表示管道两端的连接对象强调一点:必须在产生Process对象之前产生管道duplex默认管道是全双工的,如果将duplex射成False,conn1只能用于接收,conn2......
  • 进程间通信(队列和生产者消费者模型)
    进程间通信(队列和生产者消费者模型)一、关于进程间通信[1]什么是进程间通信(Inter-ProcessCommunication,IPC)进程间通信(Inter-ProcessCommunication,IPC)是指两个或多个进程之间进行信息交换的过程。它是一种计算机编程技术,用于在不同进程之间共享数据和资源。[2]如何实......
  • ROS笔记Day04----服务通信(实现排序--xxb第二次作业)
    一、服务通信简介服务通信是基于请求响应模式的,是一种应答机制。一个节点A向另一个节点B发送请求,B接收处理请求并产生响应结果返回给A。服务通信适用于实时性要求比较高的场景,例如设计一款自动搭讪机器人,每当摄像头检测到有搭讪目标出现,则摄像头这个节点就会向底盘......
  • 通信专业毕业设计(论文)-基于5G的智慧城市移动通信网络规划
    ` 下载请点击↓:​​​​​​通信专业毕业设计(论文)-基于5G的智慧城市移动通信网络规划资源-CSDN文库毕业设计(论文)基于5G的智慧城市移动通信网络规划学生姓名:专业班级:学号:目录第一章绪论.11.1 研究背景.1第二章5G技术在......
  • 17_SPI通信
    SPI通信SPI通信SPI通信简介硬件电路移位示意图SPI时序基本单元SPI时序SPI通信SPI通信简介SPI(SerialPeripheralInterface)是由Motorola公司开发的一种通用数据总线四根通信线:SCK(SerialClock串行时钟)、MOSI(MasterOutputSlaveInput主机输出,从机输入)、MISO(Master......
  • 1. 通信软件基础-移动通信中的算法问题-实验
    目录简介 任务描述:关键词:无线信号强度排序算法相关检测无线信号强度计算 基站信号强度排序相关检测代码模块头文件定义:函数相关:快排:无限信号求和:主函数:变量定义主要流程一主要流程二(搭档写的)总结简介移动通信中的算法问题是指在移动通信系统中,为了实......
  • 深入理解 WebSocket:实时双向通信的核心技术(python案例)
    引言WebSocket是一种在Web开发中广泛使用的通信协议,它提供了一种实时、双向的通信机制,允许客户端和服务器之间建立持久连接,实现高效的实时数据传输。本文将深入探讨WebSocket的工作原理、优势、应用场景以及使用示例,帮助读者全面了解WebSocket技术。什么是WebSocket?......
  • 交换机的基本原理与配置_实验案例二:交换机的基本配置
    1、实验环境如图5.18所示、两台交换机互连,并与四台计算机连接在一起,设备之间接口的连接情况如表5-4所示。图5-18实验案例二示意图表5-4设备之间接口的连接情况设备接口接口设备SW1Fa0/24<————>Fa0/24SW2SW1Fa0/1<————>主机ASW1Fa0/2<————>主机BSW2Fa0/1<......