上一章:wireshark分析tcp协议(一)三次握手【理论 + 实操】

在完成对三次握手的抓包后,间隔了一段时间,来进行四次挥手的抓包。

知识背景

问题一:为什么要四次挥手呢?

在上一章的三次挥手中,我们说tcp协议是

  • 面向连接
  • 可靠的
  • 基于字节流的传输层协议

而且在三次握手时有对这些特点进行体现。

在理解过程中,我们可以简单的将

tcp的通信过程,理解为为两个陌生的小朋友的行为

  • 三次握手:两个小朋友在相互认识
  • 发送数据:两个小朋友在愉快的玩耍,有来有回的
  • 而四次挥手则是两个小朋友中有一个小朋友要回家了

小朋友A突然被妈妈叫回家了,于是和小朋友B说我要回家了,但是他没有走,还想听小朋友B说说话。

小朋友B不舍的说知道了,然后再把之前没说完的话继续说完,然后小朋友B也说到,好吧,那你走吧。

小朋友A听完小朋友B的话之后,愉快的分开了,期待下次的相遇~

四次挥手操作步骤

1.建立连接

此步骤为三次握手的全部过程,详情见wireshark分析tcp协议(一)三次握手【理论 + 实操】

2.关闭网站

在建立起连接后,我们关闭网站,等待FIN ACK包的出现

但是我们发现这里只有三次挥手出现,而且等待了很久也没有第四次的出现,为什么呢?

注意:

这里虽然显示的是三次挥手,但是实际上的 步骤没有变

只是将第二次和第三次合并

为什么第二次会没了呢?

服务器其实在之前就早已经发送完数据了,一直等着你发消息呢!但是你有一直不发,

这时候你说“好了”,服务器收到之后,心里想“好家伙,老子早就不想干了”——客户端FIN ACK

于是它快速的返回了“我这边也完了,快散伙吧,我还要去找其他人玩呢”——服务端FIN ACK

客户端接受后,同意了结束请求

为什么服务器在发完数据后不主动结束呢?

因为开启了TCP延迟确认机制(默认开启)

3.第一次挥手——请求中断(FIN,ACK)

在第一次挥手时,我们主动的向服务端发送结束连接请求

我们查看第一条报文

  • 源端口:9277,目的端口:80

查看当前的Flags

此时finack都为1,是一个客户端发送连接请求

  • 客户端序号seq = 3747946131
  • 确认序号 seq = 1890243776

4.第二次挥手——服务器请求中断

  • 源端口:80,目的端口:9277
  • 服务器序号 = 1890243776
  • 服务器确认序号 = (客户端发送序号)+ 1= 3747946131 + 1

与客户端发送完成请求一致,不过为 服务端发送请求

5.第三次挥手——客户端同意结束

  • 源端口:9277,目的端口:80
  • 客户端序列号 = 3747946131 + 1 = 3747946132
  • 客户端确认序号 = 服务器端序号 + 1 = 1890243776

自此,中断连接。

异常情况:RST终止

在研究这四次挥手的时候,我貌似发现了一个不得了的东西

首先,我很正常的等待终止连接

第一个令我疑惑的点出现了:服务器提出终止连接请求

原本,我以为正常情况下,只有客户端才能主动终止请求的

但是了解下来,发现 TCP中断,双方都有权利主动终止请求
因为TCP是全双工通信,两者通信地位相等

在服务器主动发送终止指令后,客户端被动响应终止。

然后客户端主动提出keep-alive不断开连接,服务器响应

再一次客户端提出keep-alive的时候,服务器RST终止了异常的连接。

甚至,我还想到了一个离谱的卑微爱情故事

服务器首先对客户端提出了分手,客户端通过ack犹豫的答应了,但是客户端发现他还有很多话没有对服务器说,然后就提出了keep-alive承诺,保持一段时间的交流好吗?我还有一些话要对你说。
服务器看到keep-alive承诺的情况下,发送ack不耐烦的答应了他。
但是客户端觉得不放心,又发送了一次,你真的愿意交流一段时间吗?
最后,服务器直接通过RST关闭了这异常的链接……

wireshark分析tcp协议(二)四次挥手(异常情况)【理论 + 实操】相关推荐

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

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

  2. 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...

    <计算机网络实验-使用Wireshark分析TCP和UDP协议>由会员分享,可在线阅读,更多相关<计算机网络实验-使用Wireshark分析TCP和UDP协议(6页珍藏版)>请 ...

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

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

  4. 接口协议之抓包分析 TCP 协议

    TCP 协议是在传输层中,一种面向连接的.可靠的.基于字节流的传输层通信协议. 环境准备 对接口测试工具进行分类,可以如下几类: 网络嗅探工具:tcpdump,wireshark 代理工具:fiddl ...

  5. TCP四次挥手不同情况的研究(正常状态,三次挥手,以及CLOSING和RST)

    文章目录 TCP四次挥手不同情况的研究 1.新手加油站 1.1 TCP四次握手流程图 1.2 TCP头部 1.3 四次握手流程详解 2.针对挥手不同情况的实验和研究 2.1 正常情况 2.2 三次挥手 ...

  6. linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手

    本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程. 执行tcpdump命令 tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113 ...

  7. tcp wireshark 过滤syn_使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手

    TCP 三次握手 示意图 Wireshark 抓包注意事项 为了演示一个TCP三次握手建立连接的过程,我们通过 Chrome 访问一个网页. 已知 HTTP 协议就是建立在TCP链接上的 通过 Cmd ...

  8. 使用 WireShark 分析 TCP/IP 三次握手和四次挥手

    目录 TCP包头分析 TCP三次握手 TCP四次挥手 TCP包头分析 注释: 端口号范围:0-65535 源端口号:是客户端进程随机生成的,一般是从50000开始的 目标端口号:一般是服务器固定的.如 ...

  9. 【计算机网络】利用WireShark分析TCP/UDP协议

    前期准备: IntelliJ IDEA 2021.1.3 (Ultimate Edition) Build #IU-211.7628.21, built on June 30, 2021 JDK 1. ...

最新文章

  1. antd checkbox 默认选中_antd 开发的一些坑(一)
  2. ❤️详解腾讯面试❤️
  3. SAP Spartacus的User明细如何通过ngrx-store-devtools被解析出来
  4. asp.net 微信企业号办公系统-流程设计--保存与发布
  5. 辨析矩阵内积(hadamard、kronecker)
  6. c# asp.net mvc 开发的正方教务助手(二)
  7. centos mysql jar 驱动包_JDBC连接MySQL的数据库
  8. 深入理解java虚拟机 (三) 第二版
  9. 通过kubernetes release制作k8s rpm包
  10. AWK处理日志入门(转)
  11. 网络请求statusCode(状态码) 200、300、400、500序列
  12. 修改浏览器 User-Agent
  13. 晶闸管对触发脉冲的要求
  14. 《Nature》论文插图的Matlab复刻第4期—单组多色柱状图(Part2-82)
  15. 数据分析师工资水平怎么样?看看这些你就知道了
  16. Windows下WordPress安装教程(全)
  17. rebase操作使用方法
  18. go语言sql转struct在线工具
  19. 为什么低代码治好了CIO们的 “精神内耗” ?
  20. OpenCV系列四 --- 颜色通道分离与多通道图像混合

热门文章

  1. python中var是什么变量_python变量
  2. poi-tl生成word文档,java生成word文档
  3. “奔驰车主哭诉维权”续:双方再次协商无果
  4. 基于Java实现的用于计算个人所得税的程序
  5. 海康IPCamera结合OpenCV图像处理的一般步骤
  6. CCD与CMOS的区别?
  7. RSS MSE RMSE之间的关系
  8. mp3转wma格式转换器 mp3音频怎么转换wma格式
  9. 打印10以内的加减法
  10. 【机器学习】贝叶斯分类三大实战项目:高斯模型进行疾病诊断、多项式模型进行文本分类、伯努利模型进行好/差评判别