p2p下载有问

@Ta 01-03 14:43 1122点击

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

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

直接传输的话,需要接收方有公网ip吧?如果接收方没有公网ip,是不是要通过百度,通过百度的话还是会占用其带宽吧
小米MIX2s(白)

回复列表(8)
  • @Ta / 01-03 14:56

    @老虎会游泳,请泰格老师来解答。
    hmd global nokia 7 plus(黑色)

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

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

    其他:可以试试玩PT,例如皇后、PThome、馒头、家园、猫
    ## 我的补充

    @天蓝,ptp通讯,你可以百度下什么 原理,就是吧家庭宽带利用起来,利用nat转发,两台IP为局域网的机器,通过nat转发上www,
    p2p只需要一台公网 信令服务器就可以了,在开始建立连接的时候用来 给双方指向对方的公网IP信息和端口 。

    以最简单的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转发,延迟,和数据重复
  • @Ta / 01-03 15:57
    image.png
  • hik
    @Ta / 01-03 20:14

    百度云太慢了已经投入迅雷的怀抱了,一会员两用
    https://cway.top

  • @Ta / 01-03 20:53

    @天蓝,IPv4内网穿透已经是一个很成熟的技术了。服务器辅助的内网穿透甚至有一些标准的协议:

    RFC3489 Simple Traversal of UDP Through NATs(简单UDP内网穿透,STUN)

    RFC5389 Session Traversal Utilities for NAT(会话内网穿透工具集)

    使用这些方法的话,只要有一个具有公网IP的服务器帮助,两个只有内网IP的客户端就可以直接建立点对点直连,实现直接通信。

    服务器只在连接建立时需要介入。连接建立后,不再依靠服务器传输数据。

    这些方法与大部分路由器都兼容,成功率很高。微信视频通话、向日葵远程控制等都会使用这种技巧。你抓包分析就会发现通话、远控过程中没有与服务器的通信,是直接与对方IP通信,只在重连时需要服务器配合。

  • @Ta / 01-04 00:32

    @老虎会游泳@胡椒舰长,受教了
    小米MIX2s(白)

  • @Ta / 01-04 21:12
    @老虎会游泳,有没有现成的工具可以方便的创建p2p连接
    用来传输http流量之类的
  • @Ta / 01-04 21:29

    @胡图图(你收不到我的@消息,你知道为什么),http://www.stunprotocol.org/

    关于
    版本1.2。这是STUNTMAN的源代码——John Selbie的开源STUN服务器和客户端代码。符合包括RFC5389、RFC5769和RFC5780在内的最新RFC。还包括对RFC 3489的向后兼容性。可在Linux,MacOS,BSD,Solaris和带有Cygwin的Win32上进行编译。Windows二进制文件可从 www.stunprotocol.org 获得。

    我会写个教程来讲怎么用。此外正如5楼所说,STUN属于“服务器辅助的内网穿透”,所以需要一个服务器来帮助两个内网用户建立连接。我们应该可以使用stun.stunprotocol.org(运行在UDP和TCP端口3478)。如果它很慢或者连不上,我会在测试2上搭建一个服务器。

添加新回复
回复需要登录

[聊天-此处没有老虎] 暗:视频链接(function(){var box=document.getElementById("v…