wireshark分析tcp协议(二)四次挥手(异常情况)【理论 + 实操】
上一章: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
此时fin
和ack
都为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协议(二)四次挥手(异常情况)【理论 + 实操】相关推荐
- 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开
用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...
- 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...
<计算机网络实验-使用Wireshark分析TCP和UDP协议>由会员分享,可在线阅读,更多相关<计算机网络实验-使用Wireshark分析TCP和UDP协议(6页珍藏版)>请 ...
- Wireshark抓包分析三次握手四次挥手
根据在8.3.3节中介绍的协议的封包格式,再将Wireshark捕获的TCP包中的各个字段对应起来,更直观地看到TCP的通信过程.本次抓包分析使用8.1.5节中的TCP编程程序,在ubuntu系统直接 ...
- 接口协议之抓包分析 TCP 协议
TCP 协议是在传输层中,一种面向连接的.可靠的.基于字节流的传输层通信协议. 环境准备 对接口测试工具进行分类,可以如下几类: 网络嗅探工具:tcpdump,wireshark 代理工具:fiddl ...
- TCP四次挥手不同情况的研究(正常状态,三次挥手,以及CLOSING和RST)
文章目录 TCP四次挥手不同情况的研究 1.新手加油站 1.1 TCP四次握手流程图 1.2 TCP头部 1.3 四次握手流程详解 2.针对挥手不同情况的实验和研究 2.1 正常情况 2.2 三次挥手 ...
- linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手
本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程. 执行tcpdump命令 tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113 ...
- tcp wireshark 过滤syn_使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手
TCP 三次握手 示意图 Wireshark 抓包注意事项 为了演示一个TCP三次握手建立连接的过程,我们通过 Chrome 访问一个网页. 已知 HTTP 协议就是建立在TCP链接上的 通过 Cmd ...
- 使用 WireShark 分析 TCP/IP 三次握手和四次挥手
目录 TCP包头分析 TCP三次握手 TCP四次挥手 TCP包头分析 注释: 端口号范围:0-65535 源端口号:是客户端进程随机生成的,一般是从50000开始的 目标端口号:一般是服务器固定的.如 ...
- 【计算机网络】利用WireShark分析TCP/UDP协议
前期准备: IntelliJ IDEA 2021.1.3 (Ultimate Edition) Build #IU-211.7628.21, built on June 30, 2021 JDK 1. ...
最新文章
- antd checkbox 默认选中_antd 开发的一些坑(一)
- ❤️详解腾讯面试❤️
- SAP Spartacus的User明细如何通过ngrx-store-devtools被解析出来
- asp.net 微信企业号办公系统-流程设计--保存与发布
- 辨析矩阵内积(hadamard、kronecker)
- c# asp.net mvc 开发的正方教务助手(二)
- centos mysql jar 驱动包_JDBC连接MySQL的数据库
- 深入理解java虚拟机 (三) 第二版
- 通过kubernetes release制作k8s rpm包
- AWK处理日志入门(转)
- 网络请求statusCode(状态码) 200、300、400、500序列
- 修改浏览器 User-Agent
- 晶闸管对触发脉冲的要求
- 《Nature》论文插图的Matlab复刻第4期—单组多色柱状图(Part2-82)
- 数据分析师工资水平怎么样?看看这些你就知道了
- Windows下WordPress安装教程(全)
- rebase操作使用方法
- go语言sql转struct在线工具
- 为什么低代码治好了CIO们的 “精神内耗” ?
- OpenCV系列四 --- 颜色通道分离与多通道图像混合