• 欢迎来到我的博客
  • [email protected]

浅谈 P2P 下载原理:内网穿透的一种

学习笔记 tianlan 2个月前 (01-04) 83次浏览 0个评论 扫描二维码
文章目录[隐藏]

问题

拿百度网盘举例,百度占用用户带宽可以节省自己带宽,我不是很明白。

假设A将自己下载的传输给B,是直接传输吗?还是通过百度。

直接传输的话,需要接收方有公网ip吧?

如果接收方没有公网ip,是不是要通过百度,通过百度的话还是会占用其带宽吧?

解答

感谢 @猫腻 的解答

1:假设A将自己下载的传输给B,是直接传输吗,还是通过百度。
2:直接传输的话,需要接收方有公网ip吧?如果接收方没有公网ip,是不是要通过百度,通过百度的话还是会占用其带宽吧

1解答:是直接传输,第一次搭建 通讯隧道,百度需要消耗几kb的流量,所以就是吧用户当作了 分部署OSS服务器,所以百度的成本可以节省99.9999%
2解答:和对方有没有公网IP没关系,可以看下方解答, 当然如果是公网会更好点,毕竟数据通过N次的转发 ,丢包,或者阻塞,啥的。

以最简单的UDP打洞服务器原理解析(微信视频就是P2P UDP,视频内容不经过微信服务器)。

下面 有两设备:

1: 新疆的移动网络A,地址为192.168.1.2,他的总出口IP为 2.2.2.2
2:浙江的电信设备B,地址为192.168.1.3,他的出口IP为:3.3.3.3

公网服务器S,他的IP为4.4.4.4

步骤1:双方都连上 公网服务器的4.4.4.4:8888,此时S机器可以得知 两个设备的IP和端口

例如A机器(192.168.1.2:88(随机))->2.2.2.2:1293(随机)->4.4.4.4:8888(固定)
机器B (192.168.1.3:2123(随机))->3.3.3.3:2231(随机)->4.4.4.4:8888(固定)

然后由公网服务器告知 A,B的端口和公网IP

然后A收到服务器信号,就往 3.3.3.3:2231发送一个UDP包,虽然B总出口路由器收到来自陌生IP的包会把他丢弃,但是A的总出口服务器,却缓存记录了 来自3.3.3.3:2231 端口的数据,都转发给 内网A机器192.168.1.2:88,
反过来B也一样,

然后双方通讯正式建立。

TCP打洞同理,不过因为TCP连接具有不可啥绑定的东西,建立TCP的时候,A和B都需要 一个TCP连接特殊参数,具体百度

此外还要注意 多层NAT转发,延迟,和数据重复


天蓝, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:浅谈 P2P 下载原理:内网穿透的一种
喜欢 (0)
[[email protected]]
分享 (0)

您必须 登录 才能发表评论!