wireshark分析:
上图是我进行一个HTTP协议的下载,文件内容大概是1.7M左右。
抓包数据:
https://files.cnblogs.com/files/botoo/wireshark%E2%80%94http%E4%B8%8B%E8%BD%BD.rar
首先通过wireshark过滤的规则,过滤出满足条件的包。
前三次通信是三次握手。三次握手内容详见我之前的文章:网络知识===wireshark抓包,三次握手分析
第116次是我的http get请求,响应200。
然后服务器开始要向client发送数据了:
122 http协议确认发送
123 第一次发送,server端的seq = 1453 len = 1452 (实际上1506字节包括,1452的数据 和 14的MAC头地址 和 20的IP头 和 20的TCP头)
*这里补充点知识:数据太大就要分片。分片最大的包的单位叫做MTU。1500字节作为最大传输单位!
MTU=数据 + TCP头+IP头 对应上列:MTU = 1452+20+20=1492
MTU一般不大于1500字节。
可以对应下图:
124 客户端第一次确认:这里的ACK= 2905 (确认的方式是:123次的seq+len)2905 = 1453+1452
这样确认的目的是反馈我client收到server的数据是没有丢失的。再sever收到确认后又会继续发送数据
127 & 128 服务器向客户端发送数据 这里是两次,也可以是1次或者4,5,6次这是保证数据发送的高效
129 客户端第二次确认 :这里的 ACK = 5809 (确认的方式是:上一次,即128次的seq+len)5809 = 4357+1452
132 & 133 server发送数据
134 客户端确认
... ... ... ...
... ... ... ...
以此类推
... ... ... ...
直到数据发送结束。但是过程中有一些特殊的情况,我待会结合抓包数据做一下说明。详见wireshark抓包数据分析(二)
同时,如果有写的不对的地方希望指正。