V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
KevinTsui
V2EX  ›  程序员

下载文件消耗的流量比实际文件大很多是什么原因

  •  
  •   KevinTsui · 2022-09-16 16:44:29 +08:00 · 2842 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近把文件托管在七牛,在统计文件下载流量的时候发现七牛统计的流量比我实际下载的文件高了很多,并且不同的浏览器下载消耗的流量还不一样,下载一个 26M 的文件,最少统计的是 34M ,高的统计是 42M ,有大佬知道是什么原因?问了七牛的客服说是客户端下载的问题,但是我就是用浏览器下载的而已,也不是自己写程序下载的,有大佬遇到过这种问题吗
    17 条回复    2022-09-17 22:26:36 +08:00
    ylls
        1
    ylls  
       2022-09-16 16:55:51 +08:00
    试一下单线程下载看看
    Junzhou
        2
    Junzhou  
       2022-09-16 17:00:08 +08:00   ❤️ 1
    非相关领域,讲一些自己的理解,不一定对。

    1. 下载过程中,如果某些数据有问题,就要丢掉,然后重新下。

    2. 下载过程中,有可能丢包,需要重传。

    3. 不知道你下载东西用的什么协议,如果是 http 协议,传输过程中 header 之类的会有额外的流量开销。
    nothingistrue
        3
    nothingistrue  
       2022-09-16 17:06:08 +08:00
    下载文件时的消耗的网络流量,受网络协议、压缩协议、文件大小等多方面因素影响。
    Junzhou
        4
    Junzhou  
       2022-09-16 17:07:22 +08:00
    接 2 楼

    1. TCP/IP 包头 :这部分消耗的大约占比 2-3%左右。
    2. TCP 重传: 这个有可能会丢包,这个要看链路环境了。不知道这种重传应用层能不能统计到。有数据说这部分可能在 3%-7%左右。

    如果这样算的话,比实际文件大是正常的,但是具体大多少,就不好说了。
    Junzhou
        5
    Junzhou  
       2022-09-16 17:09:39 +08:00
    贴一段华为云 CDN 的描述:

    服务概览和统计分析页面展示的是加速域名日志中记录的流量数据,是应用层日志统计出的流量,但是实际产生的网络流量由于 TCP/IP 包头消耗和 TCP 重传消耗要比应用层统计到的流量高出 7%~15%。因此按照业界标准,应用于账单的计费数据会在控制台监控数据的基础上上浮 10%。
    KevinTsui
        6
    KevinTsui  
    OP
       2022-09-16 17:23:59 +08:00
    @ylls 自己写程序单线程下载没问题
    KevinTsui
        7
    KevinTsui  
    OP
       2022-09-16 17:25:10 +08:00
    @Junzhou 问题是我直接用浏览器下载的,传输过程可能丢失部分数据或者重复的头部信息,但是不应该高出太多的
    KevinTsui
        8
    KevinTsui  
    OP
       2022-09-16 17:29:00 +08:00
    @Junzhou 如果上浮 10% 是可以接受的,但是这相差 30% -70% 了.。。。,他们给我的解释是客户端的问题,不是他们统计的问题。。。通过分析日志看到浏览器同时发出了 200 和 206 的请求
    Junzhou
        9
    Junzhou  
       2022-09-16 17:29:40 +08:00
    @KevinTsui 那你就要问问七牛云,这个流量统计是实际的,还是根据实际流量按照业界标准上浮了。
    Junzhou
        10
    Junzhou  
       2022-09-16 17:33:35 +08:00
    @KevinTsui 如果是 206 请求,你可以看下这个请求的 content-length ,这个应该是实际的文件大小,计算下这些 206 请求的 content-length 的大小和,是不是 26MB 。 如果大于 26MB ,可能这里做了冗余。 比如一个文件 10MB ,切成 10 个 1MB 的,实际可能会每个分片,是 1.1MB, 有 0.1MB 的冗余。
    Junzhou
        11
    Junzhou  
       2022-09-16 17:41:39 +08:00
    @KevinTsui 如果是浏览器下载的,结合你说的有 206 状态,我觉得这里可能是断点续传导致的流量消耗更多,不过你可以找七牛的技术确认下这方面的影响。
    KevinTsui
        12
    KevinTsui  
    OP
       2022-09-16 17:52:35 +08:00
    @Junzhou 好的,我跟他们确认下,谢谢了
    zungmou
        13
    zungmou  
       2022-09-16 18:28:39 +08:00
    浏览器下载会发送多条请求,但是浏览器调试又看不出来。
    ngv2
        14
    ngv2  
       2022-09-16 20:03:44 +08:00 via Android
    拉原始日志直接一条命令算一下
    统计流量在原始文件的 105%左右是正常的
    但计费平台可能直接再×1.1 把 TCP 开销算上
    weyou
        15
    weyou  
       2022-09-16 20:14:56 +08:00 via Android
    查下 http header 的 content-type ,有可能不是按照 binary 模式来下载的,而是经过某种编码。比如编码成 base64 ,大小就会增加 1/3
    ShuA1
        16
    ShuA1  
       2022-09-16 22:37:31 +08:00
    @Junzhou 话是按你说的没错,但是 gzip 不是能压缩么?用于减少传输的文件的大小
    wanguorui123
        17
    wanguorui123  
       2022-09-17 22:26:36 +08:00
    加解密,压缩
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5449 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:34 · PVG 16:34 · LAX 00:34 · JFK 03:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.