为什么微信的文件助手不是点对点传输?

一、 现象

        从日常使用微信文件助手来看,每次从电脑端通过文件助手,传输文件到手机,发现文件都是先传到服务端,完成后再从服务端传到手机端,花了上传和下载两份时间。为什么不能在PC端上传的时候,手机端就开始下,服务端建立一个管道队列,以FIFO的方式处理流数据,并且创建数据的副本存于服务端,这样实时获得数据,时间减少一半岂不美哉?

二、分析

  1. 文件传输的方式
            笔者猜测是通过TCP协议,以安全的方式传输文件。在传输之前,需要对文件预处理,并且拆分成一个个的报文,以某种策略,比如滑动窗口的方式,上传至服务器,如果数据丢失需要重传。服务器以报文的标志位来排序,最终拆掉协议外套,拼装数据。
  2. 服务端的任务
           服务器作为接收方获得客户端的数据,再以发送方给其他端同步。目前微信仅支持一个PC端和一个移动端两头登录,其实服务器的作用就是中介,并且保存了文件的副本。
  3. 为何不同步进行传输(以下内容仅凭推论)
    假设有以下角色:客户端A <=> 服务器S <==> 客户端B
            ① 服务端需要维护一系列缓存队列,如果A->S->B,B出现阻塞,会影响A的上传;
            ② 服务端需要建立P2P代理机制,来处理A->S,S->B两段错误重传:A->S失败的需要A重传,A->S成功但是S->B失败可以让S拿副本的缓存传给B
            ③ 服务端需要对副本的保存将受到②的影响,只有A->S失败才会修改副本数据

三、结论(基于浅显的认知)

        微信作为免费使用的工具,有文件传输服务已经很不错了,绝对不会强求更多极致的服务了。而QQ是有在线传输和离线传输两种模式的,毕竟QQ有Q币相关的业务比较赚钱,微信的收入直观上是来自广告的,其他的不敢乱讲。
        最后一点小的建议,当微信的两个端处于同一局域网的时候,可以采用局域网直达的传输,然后服务端备份的那个可以慢慢再网上传,这样速度有保证,数据有备份。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值