点对点通讯(P2P)原理及webRTC实现网页文件分享

您所在的位置:网站首页 p2p网络搭建大文件传输 点对点通讯(P2P)原理及webRTC实现网页文件分享

点对点通讯(P2P)原理及webRTC实现网页文件分享

2024-05-28 19:23| 来源: 网络整理| 查看: 265

最终效果(已失效) :

截图 :

技术细节 : 前言

说明: 本文章为c4r小组所有, 采用CC BY-NC-SA 3.0协议. 且文章为小组成员调研和研究之后推理得到的结果, 可能存在片面性, 请读者自行判断. 欢迎讨论.

原理与流程介绍

主要参考 : 关于使用UDP(TCP)跨局域网,NAT穿透的心得

由于有限的IPV4地址, 使得无法做到每个上网的人都可以拥有固定并独立的IP地址. 这使得用户一般会先拿到一个路由器分配的局域网IP地址, 在访问外网的时候再分配一个公网(外网)IP地址. 假设现在有两个"人"想要相互之间传递数据, 我们称这两个人为A,B.

如果A, B在一个局域网

这种情况下, 两个人可以直接通过访问对方IP的方式直接传递数据

常见例子 : windos共享, 远程连接(ssh连接, 远程桌面)

2. 如果A在局域网, 而B拥有公告网IP

这种情况, A先访问B后, 建立连接后, 两者可以相互传递数据

常见例子 : 用户访问大型网站

具体过程 :

假设 : A处于路由器(NAT)后面. 内网地址为192.168.0.2, 外网地址 168.38.1.2​ B外网地址为 54.202.1.2

1) A首先像B发送数据(UDP包), 这时候A的路由器会记录下session, 里面保存A内网IP和外网IP的对应/映射关系. 我们称A为了B在NAT上打了一个洞.

2) 这个时候当B要把消息发送给A的时候, NAT会自动把消息转发给A

3. 当A和B全部躲在路由器(NAT)后面

在连接A和B之前,需要通过一个服务器S告知A和B的外网IP 服务器S满足的协议是STUN 1) A和B分别连接服务器S. 这样S就知道了A和B的公网IP. 这个时候A:NAT会保存session:A-S, B:NAT保存session:B-S

2) 让A向B的公网IP发送数据. 因为这个时候B:NAT不存在session:B-A 所以数据将会丢失. 但是A:NAT会创建session:A-B.

3) 然后让B向A的公网IP发送消息. 这个时候将会在B:NAT上建立session:B-A. 这个时候A:NAT和B:NAT上都储存了对方的映射关系. 现在A和B之间发送消息, 将会被NAT转发.

过程如下图:

4. 当A或者B躲在NAT后面, NAT转发的端口会根据会话发生改变

比如A躲在一个NAT后面, 这个NAT具有如下特性: 每当A与外面连接, 对于不同的连接对象NAT会给A重新分配一个端口.这种情况打洞非常困难



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3