Wireshark抓包

TCP三次握手

![在这里插入图片描述](https://img-blog.csdnimg.cn/59e3da1be12e42038bf1f6f82e4ca20a.png

ManagementService进程使用58884端口,向ObjectService的8083端口发起TCP连接。

握手1:58884端口发起SYN,SEQ=0,SEQ是Sequence number代表发送端本地的序号。
握手2:8043端口收到请求后,发现是建链的报文,自己本地产生自己的SEQ=0,作为对握手1 SEQ=0报文的应答,ACK=0(握手1报文的SEQ)+1=1。回复SYN,ACK报文。
握手3:58884端口收到SYN,ACK后,通过收到握手2的报文,ACK=1,知道8043端口同意建链,自己也开心的回复一个ACK=0(握手2报文的SEQ)+1=1。作为同意建链的答复。

至此三次握手完成了。

HTTP请求

HTTP请求如下。第20个报文。

HTTP相应如下,第187个报文:

从22-187都是文件传输接口的相应。那么为什么会有这么多报文?这就要说TCP分段。

TCP分段

一个大文件如何通过网络传输?
能通过一个报文讲大文件传过去么? 不行的。
TCP层有MSS。也就是如果用TCP协议发送大文件,超过TCP单报文的最大值,就会再TCP层被分段发送。

备注:IP的MTU,这个主要是针对UDP等协议的。也就是用UDP发送大内容,如文件流,那么会被IP层分片发送。

再回过头去看这个获取下载内容的HTTP报文。一个Request的HTTP请求。
和一个Reponse的HTTP请求之间有很多交互的报文,这些报文都是要传输的内容经过TCP分段后,传输交互的内容。

分段大小

TCP分段大小,是IP层分片MTU-40得到的值就是TCP分段的MSS值。40=20(IP头)+20(TCP)头。
MSS的值与客户端和服务器都有关系,最终使用协商最小值作为传输的MSS值。
MSS值再TCP建立连接的3次握手阶段完成。分别是SYN,SYN ACK这两个阶段,如下图所示。双方的MSS都是65495。那么通信过程中协商的MSS值就是65495。

TCP 窗口

看到抓包中有很多特殊的报文,如上。包括TCP WINDOW FULL和TCP ZeroWindow以及TCP Window update标记的报文。看下这些是怎么产生的以及是怎么工作的。
TCP接收和发送有滑动窗口机制。重要的标识包括Win字段,就是说名窗口大小。

如上图所示。60号报文代表,报文接收方给服务器说自己的win=65535。并且通过ACK可以看到,接收方要接收到报文下次要从98305byte的位置开始。
这个时候服务器就继续发送61号报文,PSH,ACK类型,Req=98305。Len=32768。
接着发送62号报文,PSH,ACK类型,Req=131073,Len=32768。
可以看出来当前已经发出的报文长度是65536。已经等于最后一次收到ACK,也就是60号报文中最大的Win长度了。服务器就知道自己发送的报文已经到接收方的接收临界了。就不在发送了。所以报文类型是TCP Window Full。代表接收方的TCP Window已经满了。接下来要等接收方,发确认的ACK了。

接收方发送的65号报文,ACK=163841,也就是62号报文的REQ+Len,代表已经收到61,62报文的数据了。并且自己此时的Window长度是0。通知服务器自己的Win是0了。没有能力收报文了。
当然接收方收到报文后,通过滑动窗口处理报文,内核将内容读取到接收缓冲区,并供上层应用使用。

处理了一会(当然时间很短),接收方有足够的Window长度了,就发送了72号报文。标记TCP Window Update。代表自己的Window长度更新了,告诉服务器可以继续发送了。

服务器收到这个后,就继续发送了。。。。。。

HTTP响应

经过一堆数据报文的传输,最终服务器发送完了所有文件数据。
并且计算出来Data数据长度1048676byte。以及服务器相应的HTTP的Header信息。
客户端拿到这些数据,根据HTTP协议,做对应处理。
比如浏览器拿到这个HTTP Response报文后,看到Content-disposition里面写的是attachment,filename=abc。
那就会弹出问询窗口,询问用户是打开,还是保存附件。

文件下载(三):wireshark抓包文件下载整个过程相关推荐

  1. 网络知识===wireshark抓包,三次握手分析

    TCP需要三次握手建立连接: 网上的三次握手讲解的太复杂抽象,尝试着使用wireshark抓包分析,得到如下数据: 整个过程分析如下: step1 client给server发送:[SYN] Seq ...

  2. WireShark抓包 图解探索网络请求过程(五层网络模型、三次握手、滑动窗口协议)

    当我们在浏览器输入URL点击确认后,浏览器展示出网页信息.可你曾想过这其中的过程是怎样的?理论性较强的朋友可能知道后续DNS会解析地址,然后TCP/IP三次握手建立起连接,紧接着客户端与服务器开始传输 ...

  3. wireshark抓包理解TCP的三次握手

    一.实验目的 通过wireshark抓包工具,抓取客户机访问FTP服务器的连接过程进一步理解TCP的三次握手 二.实验拓扑 三.实验步骤 1.根据拓扑图搭建实验环境. 2.在客户机上安装安装Wires ...

  4. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  5. Wireshark抓包分析三次握手四次挥手

    根据在8.3.3节中介绍的协议的封包格式,再将Wireshark捕获的TCP包中的各个字段对应起来,更直观地看到TCP的通信过程.本次抓包分析使用8.1.5节中的TCP编程程序,在ubuntu系统直接 ...

  6. Wireshark抓包示范:TCP三次握手建立连接和四次握手断开连接

    转载请标注: 披萨大叔的博客 http://blog.csdn.net/qq_27258799/article/details/51379508 如果您觉得这篇文章对您有帮助,请点下文章最下面的赞~ ...

  7. hls二次加密 m3u8_HLS实战之Wireshark抓包分析

    0.引言 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直 ...

  8. Wireshark抓包工具使用教程以及常用抓包规则

    Wireshark是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具进行分析,不过要说明的是,这只是一个工具,用法是非常灵活的,所以今天讲述的内容可能无法直接帮你解决问题,但 ...

  9. tcpdump + wireshark 抓包组合

    学习wireshark抓包随笔 一.目标地址: 239.255.255.250 239.255.255.250是多播地址,多见于路由器上开了UPnP服务,而这个服务会用SSDP(简单服务发现协议)就是 ...

最新文章

  1. 剑指Offer——当当+搜狐+好未来笔试题+知识点总结
  2. 神经网络预测mnist时候如果不归一化,则准确率仅仅10%下文作者svm也遇到了。
  3. 在Apache上搭建pywebsocket提供html5的websocket服务
  4. 130506datafile和tablespace offline区别
  5. vue 创建项目的命令
  6. [转]Oracle update用例
  7. WebAssembly:随风潜入夜
  8. objective-C 的内存管理之-引用计数
  9. 使用telnet进行Dubbo接口测试
  10. AI智能电话机器人源码搭建的原理与功能
  11. 如何构建自己的计算机,第四部分:安装Windows和加载驱动程序
  12. VR是什么,去哪里学习?
  13. 期权定价Python实现
  14. -------已搬运------BUUCTF:[RootersCTF2019]ImgXweb --- jwt --寻找secret,easy
  15. 有赞宣布收费,免费模式在移动电商时代真走不通?
  16. 葵花宝典之数据结构1800T--2
  17. 微信公众号--开发模式之用户关注后自动回复(Java实现)
  18. 贪心算法-磁带最优存储问题
  19. 【树形DP】 HDOJ 5148 Cities
  20. IC验证工程师高效战斗手册---提问之道(上篇)

热门文章

  1. vscode代码格式管理插件prettier-Code formatter安装和设置
  2. 华为干部管理经典模型
  3. 刚发布!新型病毒下,程序员可在家免费学习了!
  4. tcpdump 分析
  5. Oracle数据库中索引的维护
  6. 如何系统地学习计算机编程?自学还是培训?怎么选?
  7. DFS深度优先搜索算法(适合初学者)
  8. python twisted安装_图文详解python之twisted模块安装
  9. App Technical Support
  10. 启动类上的@MapperScan注解与yml配置中mybatis.mapper-locations和mybatis.type-aliases-package的作用