点对点通讯(P2P)原理及webRTC实现网页文件分享 |
您所在的位置:网站首页 › p2p网络搭建大文件传输 › 点对点通讯(P2P)原理及webRTC实现网页文件分享 |
最终效果(已失效) : 截图 : 说明: 本文章为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 |