The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
hanguofu

HTTP 多线程下载同一个文件,是从不同的客户端口发出的请求吗?

  •  
  •   hanguofu · Apr 19, 2021 · 3309 views
    This topic created in 1862 days ago, the information mentioned may be changed or developed.
    如果使用多线程从同一个服务器上下载同一个文件,假设该服务器支持 获取文件的部分内容 ( range & content-range ) , 客户端如果同时发出 10 个并发请求的话,这些请求是从 客户端 的 同一个端口 发出去的吗 ?
    18 replies    2021-04-20 08:37:13 +08:00
    missdeer
        1
    missdeer  
       Apr 19, 2021 via Android
    客户端侧不同连接不同端口
    AngryPanda
        2
    AngryPanda  
       Apr 19, 2021   ❤️ 1
    开启多线程下载:

    ```
    axel -n 20 https://mirrors.163.com/ubuntu-releases/20.10/ubuntu-20.10-live-server-amd64.iso
    ```

    另外开个终端看端口 `netstat -antp | grep axel`, 输出类似于:

    ```
    tcp 0 0 192.168.0.101:50326 125.77.20.37:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:48718 183.146.17.167:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:56402 106.225.229.135:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:48720 183.146.17.167:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:52922 60.174.42.166:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:58068 183.146.17.165:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:50356 125.77.20.37:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:48712 183.146.17.167:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:58060 183.146.17.165:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:58094 183.146.17.165:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:50340 125.77.20.37:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:36068 183.146.17.166:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:33660 106.225.229.134:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:48234 125.77.20.38:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:50324 125.77.20.37:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:44112 60.174.42.167:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:53444 60.174.42.165:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:52910 60.174.42.166:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:33686 106.225.229.134:80 ESTABLISHED 18142/axel
    tcp 0 0 192.168.0.101:48242 125.77.20.38:80 ESTABLISHED 18142/axel
    ```
    ebingtel
        3
    ebingtel  
       Apr 19, 2021
    取决于用了几个连接……多连接的话,客户端是从多个端口发出请求
    zongren
        4
    zongren  
       Apr 19, 2021
    http 无状态,取决于你的 header 里有没有设备唯一标识
    no1xsyzy
        5
    no1xsyzy  
       Apr 19, 2021
    客户端用同一个端口能算是并发请求吗?
    五元组唯一确定一个连接
    jorneyr
        6
    jorneyr  
       Apr 19, 2021
    每个连接在客户端都有自己独立的、唯一的、不冲突端口
    abersheeran
        7
    abersheeran  
       Apr 19, 2021
    多线程下载能提高速度的原因就是用了多个 TCP 信道。
    ericls
        8
    ericls  
       Apr 19, 2021 via iPhone
    看客户端的具体实现
    ch2
        9
    ch2  
       Apr 19, 2021 via iPhone
    多连接就是多端口,不开多连接就只有一个端口
    caola
        10
    caola  
       Apr 19, 2021
    http2 应该是一个端口通道吧
    est
        11
    est  
       Apr 19, 2021
    这个情况可以讨论的

    1. 如果客户端有多个 IP,一般不会来自同一个端口。但是可以做到
    2. 如果服务器端有多个 IP,可以做到客户端来自同一个端口
    3. 传输协议如果是 h2 之类的支持复用的,那么多半是来自同一个端口
    zhengxiaowai
        12
    zhengxiaowai  
       Apr 19, 2021
    HTTP/1.1 只能是 ping-pong 模式,所以只能是多个链接。。。
    newmlp
        13
    newmlp  
       Apr 19, 2021
    http1.1 肯定是多个端口,因为每个 tcp 链接算一个会话
    ysc3839
        14
    ysc3839  
       Apr 19, 2021 via Android
    一般口头上说的“多线程下载”其实指的是多连接下载,在这个语境下是从不同端口发出去的。
    css3
        15
    css3  
       Apr 19, 2021
    顺着再请教下这个问题,多个线程下载同一个文件,是要把一个文件拆成多份吗?最后再合并成一个吗?
    atx
        16
    atx  
       Apr 19, 2021
    @css3 不需要,多线程下载之前就知道了文件多大.然后创建个等大小的空文件,下载时根据 range 参数填空就行
    css3
        17
    css3  
       Apr 20, 2021 via iPhone
    @lc1450 那下载完不是也还是多个吗
    iminto
        18
    iminto  
       Apr 20, 2021
    @css3 下载时根据 range 参数填空...怎么就变成多个文件了

    一个大房间,开了四个门,走进来四组人,按顺序就位,不还是一个房间么。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   918 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 21:19 · PVG 05:19 · LAX 14:19 · JFK 17:19
    ♥ Do have faith in what you're doing.