基础知识:
TCP的三次握手。
TCP的ACK机制。
IP协议的MTU。
HTTP协议。
LF的ASCII编码为10(10进制),0A(16进制)。
CR的ASCII编码为13(10进制),0D(16进制)。
数字0的ASCII编码为48(10进制),30(16进制)。
使用http的chunked模式下载文件。
这里使用抓包工具监控一个小文件下载的全过程。
网络包概览:
2104
client -> server (http)
MTU=1500,以太网一般都是1500。
减掉IP header和TCP header。1500-20-20=1460Bytes, 这个地方payloadlen=1460。
2105
Clinet -> Server (TCP)
由于一个TCP的payload没有发完所有的http请求,tcp协议再发一次,104Bytes。
注意这里的Push标识。
对于发送端,使tcp cache中的数据都发送出去。对于服务端,提交cache的数据到高一层的协议处理。这里,就是服务端的http协议层处理。
2109
Server -> Client (TCP)
服务端给了一个ACK。
2110
Server -> Client (TCP)
服务端又给了一个ACK。这个ACK和前一个比增大了3911564407 - 3911564303 =104
2195
Server -> client (Http)
这里2809就是下载文件的大小。
Chunked模式下载。第1个chunk的第1块数据。
一个简单的理解,可以认为chunk的模式为。
[Chunk大小]
[CR LF]
[Chunk数据体]
[CR LF]
[Chunk大小]
[CR LF]
[Chunk数据体]
[CR LF]
....
[0] //最后一个块。
[CR LF]
这次传输了1058bytes数据。(这个值是看不到的,可以通过抓包结果计算。找到 [Chunk大小] [CR LF] ,之后的字节就是实际的数据。
2196
Server -> client (Tcp)
Chunked模式下载。第1个chunk的第2块数据。
这次传输了1460bytes数据。
2197
Client -> server (Tcp)
一个Ack。
2198
Server -> client (Tcp)
Chunked模式下载。第1个chunk的第3块数据。
2809-1058-1460=291
291+2(CR LF所占用的2个bytes)=293(该payload的大小)
2199
30是数字0.
这里实际上是:
[Chunk大小] 0
[CR LF] 0D 0A
这是实际上是第2个chunk,同时也是end chunk。标示chunk模式结束。
Server -> client (http)
Chunked模式下载完成。
2200
client->server (TCP)
ACK
下载完成
- 大小: 54.4 KB
- 大小: 78.3 KB
- 大小: 47.3 KB
- 大小: 59.9 KB
- 大小: 64.6 KB
- 大小: 71.8 KB
- 大小: 32.3 KB
- 大小: 44 KB
- 大小: 51.2 KB
- 大小: 56 KB
- 大小: 46.1 KB
- 大小: 35.4 KB
- 大小: 11.4 KB
分享到:
相关推荐
Nginx 详解 Nginx 是一个自由的、开源的、高性能的 HTTP 服务器和反向代理服务器,支持负载均衡、缓存、内容缓存、SSL/TLS 加密、虚拟主机、URL 重写、访问控制、速率限制等多种功能。 模块架构 Nginx 的架构是...
前端应提供清晰的错误提示,如网络问题、文件格式错误等。这需要捕获并解析服务器返回的错误信息,确保用户能够理解并解决遇到的问题。 总结,jQuery结合HTML5的新特性以及相关插件,可以实现大文件的高效、流畅...
HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,它定义了客户端(通常是Web浏览器)和服务器之间通信的数据格式和交互规则。HTTP协议是TCP/IP协议栈中的应用层协议,它允许用户通过Web浏览器获取网页和...
8. **性能优化**:为了提高文件传输速度,可以考虑使用BinaryFormatter或DataContractSerializer进行序列化,或者使用Chunked传输来分块发送大文件。 9. **并发控制**:WCF支持并发实例化模型,允许服务处理多个...
以上内容详细阐述了给定文件中的知识点,包括网络体系结构、TCP/IP协议的基本概念、报文封装方式、常用TCP/IP协议及其层次结构、报文格式定义以及典型网络应用的实现原理等。通过实验报告的内容,可以全面了解这些...
**Nginx-HTTP-FLV 模块详解** Nginx 是一款高性能、轻量级的 HTTP 和反向代理服务器,广泛应用于互联网服务。它以其稳定性和高并发处理能力而受到赞誉。在标题提到的 "nginx-http-flv - module.rar" 文件中,包含的...
在HTTP协议中,Keep-Alive模式是一种用于优化网络通信的技术,它允许客户端和服务器在同一TCP连接上进行多次请求和响应,而不是每次交互都创建新的连接。这种模式显著提高了效率,减少了网络延迟,降低了资源消耗,...
这种格式将手册分成多个小的HTML文件,便于在网络上传输和本地浏览,尤其在没有完整手册数据库的离线环境中非常有用。每个HTML文件对应手册的一个部分,这样可以快速定位到所需的信息,而无需加载整个大文件。 **...
2. **HTTP/1.1编码**:支持 chunked transfer encoding 和 content-length 编码,保证大文件的传输效率。 3. **异步处理**:HttpCore提供了异步执行HTTP请求的能力,通过Future接口进行回调,适应高并发场景。 五、...
转移编码(Transfer Codings)则关注数据在网络传输过程中的编码形式,例如“分块转移编码”(Chunked Transfer Coding)允许将数据分割成较小的块进行传输,提高了传输效率和错误恢复能力。 #### 媒体类型 媒体...
《TCP-IP详解卷1-2》是理解网络协议基础的宝贵资料,其中涵盖了TCP/IP协议族的各个方面,包括TCP/IP层次结构、网络接口层、互联网层、传输层以及应用层协议等,对理解HTTP协议的工作原理有着重要帮助。通过阅读这...
- **分块编码(Chunked Transfer Coding)**:允许服务器在不知道响应大小的情况下发送数据,提高了大文件传输的效率。 - **缓存控制(Cache Control)**:增强了缓存机制,使得重复请求的资源可以直接从本地缓存中...
【Nginx-FLV 模块详解】 Nginx 是一款高性能的 Web 和反向代理服务器,以其轻量级、稳定性和高并发处理能力而备受赞誉。在 Windows 环境下,为了实现流媒体服务,特别是 FLV(Flash Video)格式的视频流,可以借助 ...
### HTTP响应报文头详解 #### 一、HTTP响应报文结构 HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是互联网上应用最为广泛的一种网络协议。HTTP响应报文由状态行、响应头部、空行以及...
### HTTP/1.1协议详解 #### 一、引言 **HTTP/1.1**是超文本传输协议(Hypertext Transfer Protocol)的一个版本,它由互联网工程任务组(IETF)制定,并在RFC 2616文档中进行了详细定义。自1999年发布以来,...
### Python 之 前端开发详解:HTTP协议、HTML标签 #### 第十一章:前端开发 本章节主要探讨Python在前端开发中的应用,重点介绍了HTTP协议的关键特性及其对前端开发的影响。此外,还涉及了如何利用Python进行HTTP...