• 弥勒秋实
    2019-06-27
    牛掰哦,http还可以当ftp玩,还能断点续传,多线程,但是怎么让http服务器支持range头部呢?

    作者回复: 每个http服务器都有相关配置的

    
     3
  • Jax
    2019-11-09
    老师您好,最近工作中遇到一个问题,准备了一个测试文件20M。在wifi电信的网络下,用curl -H Range:bytes=0-8000000 能成功下载这个文件;切换到4g联通网络下,用同样方法去下载,却下载失败(下载速度很快,网络没问题,下载到99%就会莫名其妙中断失败),curl error_code是18 (文件传输短或大于预期部分文件,只有部分文件被传输),我把-H Range:bytes=0-8000000这个去掉,则能成功下载。那这个会是什么问题导致?是4g运营商问题将其拦截了?老师对此有什么好的见解,谢谢~

    作者回复: 信息太少,还无法判断。
    1、中断哪方发起的?比如是RST包吗?服务器发起的吗?
    2、server上和client上都抓下包,对比下http request的内容,看看是否一致。
    client上我用wireshark抓包,你先看下第37课。server上我一般用 tcpdump抓包,你看下第87课。

    
     1
  • Young
    2019-10-01
    老师,这节课介绍的是通过Http的Range进行下载,那如果是通过Range进行上传呢,我之前使用过nginx的断点续传插件nginx-upload-module,它单片上传成功是201,上传文件的大小取第一片Range头中的大小,所有片上传完后由nginx后的服务器返回最后的response,不知道这个模块的实现是否严格符合规范

    作者回复: RFC规范中并没有包含客户端上传文件。这个模块定义了一种新的协议,专用于分片上传文件,它使用的HTTP头部是X-Content-Range,可以看出吸收了RFC规范的理念,但明显不是同一种协议,这里是该协议的详细定义:https://github.com/fdintino/nginx-upload-module/blob/master/upload-protocol.md

    
     1
  • 一步
    2019-05-30
    Range: bytes=-4 这个指后面的4个字节不应该是 wxyz 吗? 这里是 xyx 是因为后面有个 \r\n 换行符吗?

    作者回复: 是的

     1
     1
  • ray
    2019-12-06
    老师好,
    client端发起range请求后,收到的response是不是只能由client端的程序自己将其组回完整的response?
    如果是的话,有没有现成的工具或是套件可以帮我们组合response呢?

    谢谢老师^^

    作者回复: 通常没有,这与业务逻辑关联太紧密了,你是要下载一个文件吗?文件有多大?如果很大,肯定要持久化到磁盘上,那么磁盘的位置就是个问题,磁盘够不够放得下?
    另一个原因是,组合其实就是拼接,你记录下每个response body的位置,而从response中取body非常容易,拼接下就可以了

    
    
  • 一步
    2019-05-31
    可以不可以直接通过wireshaek查看响应的报文,不通过tcpdump的

    作者回复: 可以,如果你的客户端工具运行在安装了wireshark的操作系统上,直接用wireshark抓包即可

    
    
  • 我行我素
    2019-05-30
    老师,想请问下断点续传是如何做到多次请求的呢(想法是有设置一个条件,比如达到多少后会去请求下一次)?还是说是在下载是时候是进行了多次请求最后将返回的数据进行拼装

    作者回复: 早期的迅雷、NetAnts、FlashGet等下载工具,是可以设置并发请求数的,当总分块数大于并发请求数时,需要串行进行

    
    
  • 一步
    2019-05-30
    multipart/bytesrange 多段的响应报文,在wireshark 中 怎么查看啊?

    作者回复: 与23课14分50秒显示的curl内容是一致的。你可以用tcpdump抓包输出为pcap文件后,在wireshark中打开

    
    
我们在线,来聊聊吧