我们以最广泛的http协议来讨论网络下载
http下载文件的过程
HTTP 文件下载过程主要包含以下四个核心阶段:
- 建立连接:客户端首先通过 DNS 解析域名,随后与服务器进行 TCP 三次握手。对于 HTTPS,还会进行额外的 TLS 握手以确保数据传输的安全性。
- 发送请求:浏览器向服务器发送 HTTP
GET请求。如果支持断点续传,请求头中会包含Range字段,指定请求的字节范围。 - 服务器响应:服务器解析请求后,返回相应的状态码(如
200 OK或206 Partial Content)。关键响应头如Content-Type定义了文件类型,Content-Disposition: attachment则指示浏览器弹出下载对话框。 - 数据传输与持久化:文件内容以二进制流的形式分块传输。为了提高性能,浏览器通常采用“边下边存”的策略,将收到的数据块实时写入磁盘,而非全部缓存于内存。
理解了这一基础过程后,我们就能发现提升下载速度的关键点:通过并行建立多个连接并利用 Range 头请求文件的不同部分,这也是 oget 等高性能下载器的核心原理。