搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小蓝xlanll
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
一文带你透析zookeeper原理_zookeeper原理详解
2
WPF总结INotifyPropertyChanged用法_inotifypropertychanged如何通知界面
3
C#(C Sharp)学习笔记_变量常量与作用域【十二】
4
详解数据仓库数据湖及湖仓一体_数据湖仓一体
5
解决谷歌浏览器你的时钟快了和证书问题_谷歌浏览器您的时钟快了
6
CPS1848国产替代芯片 国产SRIO交换芯片_cps1848 csdn
7
python利用数据库实现注册登录系统_python和数据库搭建注册网页
8
SQLCoder-70b 成为领先的 AI SQL 模型_sqlcode 大模型训练
9
Dockerfile实例
10
带环相交链表问题_为什么环装链表求相交
当前位置:
article
> 正文
TCP标志位syn,ack,fin以及序列号(seq),响应号(ack)_fin标志位
作者:小蓝xlanll | 2024-05-07 06:14:55
赞
踩
fin标志位
一,三次握手
TCP使用三次握手建立一个连接:
第一次握手:客户端发送SYN包至服务器,并进入SYN_SENT状态,等待服务器确认
第二次握手:服务器收到客户端的SYN包,发送一个ACK,同时发送自己的SYN,此时服务器进入SYN_RCVD状态
第三次握手:客户端接收到服务器发送的SYN+ACK后,进入ESTABLISHED状态,并发送服务器SYN包的确认ACK,服务器接收到客户端ACK后,进入ESTABLISHED状态
当客户端和服务器都进入ESTABLISHED状态后,客户端和服务器之间就可以开始双向传递数据了
二,四次挥手
TCP使用四次挥手关闭一个连接:
第一次挥手:主动关闭方发送一个FIN并进入FIN_WAIT1状态
第二次挥手:被动关闭方接收到主动关闭方发送的FIN并发送ACK,此时被动关闭方进入CLOSE_WAIT状态;主动关闭方收到被动关闭方的ACK后,进入FIN_WAIT2状态
第三次挥手:被动关闭方发送一个FIN并进入LAST_ACK状态
第四次挥手:主动关闭方收到被动关闭方发送的FIN并发送ACK,此时主动关闭方进入TIME_WAIT状态,经过2MSL时间后关闭连接;被动关闭方收到主动关闭方的ACK后,关闭连接
--------------------------------------------------------------------
转载自
http://blog.csdn.net/a19881029/article/details/38091243
序列号为当前端成功发送的数据位数,确认号为当前端成功接收的数据位数,SYN标志位和FIN标志位也要占1位
如果你正在读这篇文章,很可能你对TCP“非著名”的“三次握手”或者说“SYN,SYN/ACK,ACK”已经很熟悉了。不幸的是,对很多人来说,对TCP的学习就仅限于此了。尽管年代久远,TCP仍是一个相当复杂并且值得研究的协议。这篇文章的目的是让你能够更加熟练的检查Wireshark中的TCP序列号和确认号
TCP包的具体内容
从下图可以看到wireshark捕获到的TCP包中的每个字段。
在我们开始之前,确保在Wireshark中打开示例(请到作者原文中下载)并亲自实践一下
示例中仅包含一个单独的HTTP请求,请求的流程是:web浏览器向web服务器请求一个单独的图片文件,服务器返回一个成功的响应(HTTP/1.1200 OK),响应中包含请求的文件。右键示例文件中任意一个TCP包并且选择
Follow TCP Stream
就可在单独的窗口查看原始的TCP流
客户端请求使用红色显示,服务端响应使用蓝色显示
TCP三次握手
(参见:
http://blog.csdn.net/a19881029/article/details/30241561
)
TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态,我们最感兴趣的3个标志位如下:
SYN
- 创建一个连接
FIN
- 终结一个连接
ACK
- 确认接收到的数据
就像我们看见的那样,一个包中有可以设置多个标志位
选择Wireshark中的“包”1并且展开中间面板的TCP层解析,然后展开TCP头中的标志位域,这里我们可以看见所有解析出来的TCP标志位,需要注意的是,“包1”设置了SYN标志位
使用同样的方式操作“包2”。可以看到"包2"设置了2个标志位:ACK - 用来确认收到客户端的SYN包,SYN - 用来表明服务端也希望建立TCP连接
从客户端发来的“包3”只设置了ACK标志位。这3个包完成了最初的TCP3次握手
序列号和确认号
:
TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收
当某个主机开启一个TCP会话时,他的初始序列号是随机的,可能是0和4,294,967,295之间的任意值,然而,
像Wireshark这种工具,通常显示的都是相对序列号/确认号,而不是实际序列号/确认号
,相对序列号/确认号是和TCP会话的初始序列号相关联的。这是很方便的,因为比起真实序列号/确认号,跟踪更小的相对序列号/确认号会相对容易一些
比如,在“包1”中,最初的相对序列号的值是0,但是最下方面板中的ASCII码显示真实序列号的值是
0xf61c6cbe
,转化为10进制为
4129057982
如果想要关闭相对序列号/确认号,可以选择Wireshark菜单栏中的
Edit
->
Preferences
->
protocols
->
TCP
,去掉
Relative sequence number
后面勾选框中的√即可
需要注意的是,文章接下来的部分依然使用相对序列号/确认号
为了更好的理解在整个TCP会话期间,TCP序列号和确认号是如何工作的,我们可以使用Wireshark内置的绘制流功能,选择菜单栏中的
Statistics
->
Flow Graph...
->
TCP flow
->
OK
Wireshark会自动创建一个TCP流的图形摘要
每行代表一个单独的TCP包,左边列显示时间,中间列显示包的方向、TCP端口、段长度和设置的标志位,右边列以10进制的方式显示相关序列号/确认号,在这里选中任意行会高亮主窗口中该行所关联的包
我们可以利用这个流图更好的理解序列号和确认号是如何工作的
包1
:
TCP会话的每一端的序列号都从0开始,同样的,确认号也从0开始,因为此时通话还未开始,没有通话的另一端需要确认(我使用的Wireshark版本和原作者不同,Wireshark1.10.2中,包1不显示确认号)
包2
:
服务端响应客户端的请求,响应中附带序列号0(由于这是服务端在该次TCP会话中发送的第一个包,所以序列号为0)和相对确认号1(表明服务端收到了客户端发送的包1中的SYN)
需要注意的是,尽管客户端没有发送任何有效数据,确认号还是被加1,这是因为接收的包中包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)
包3
:
和包2中一样,客户端使用确认号1响应服务端的序列号0,同时响应中也包含了客户端自己的序列号(由于服务端发送的包中确认收到了客户端发送的SYN,故客户端的序列号由0变为1)
此时,通信的两端的序列号都为1,通信两端的序列号增1发生在所有TCP会话的建立过程中
包4
:
这是流中第一个携带有效数据的包(确切的说,是客户端发送的HTTP请求),序列号依然为1,因为到上个包为止,还没有发送任何数据,确认号也保持1不变,因为客户端没有从服务端接收到任何数据
需要注意的是,包中有效数据的长度为725字节
包5
:
当上层处理HTTP请求时,服务端发送该包来确认客户端在包4中发来的数据,需要注意的是,确认号的值增加了725(725是包4中有效数据长度),变为726,简单来说,服务端以此来告知客户端端,目前为止,我总共收到了726字节的数据,服务端的序列号保持为1不变
包6
:
这个包标志着服务端返回HTTP响应的开始,序列号依然为1,因为服务端在该包之前返回的包中都不带有有效数据,该包带有1448字节的有效数据
包7
:
由于上个数据包的发送,TCP客户端的序列号增长至726,从服务端接收了1448字节的数据,客户端的确认号由1增长至1449
在抓包文件的主体部分,我们可以看到上述过程的不断的重复,客户端的序列号一直是726,因为客户端除了最初的725字节数据没有再向服务端发送数据,服务端的序列号则与此相反,由于服务端不断的发送HTTP响应,故其序列号一直在增长
序列号为当前端成功发送的数据位数,确认号为当前端成功接收的数据位数,SYN标志位和FIN标志位也要占1位
关闭连接
包38
:
在确认了服务端发送过来的最后一个数据段之后,客户端将处理整个HTTP响应并决定不需要进一步通信了。此时客户端发送设置了FIN标志位的包38,其确认号和之前的包37一样
包39
:
服务端通过将确认号加1的方式回应客户端期望关闭连接的请求(这里和包2中确认SYN标志位时所作的操作是一样的),同时设置当前包的FIN标志位
包40
:
客户端发送最终序列号727,通过将确认号加1的方式确认服务端的FIN包
此时,通信双方都终结了会话并且可以释放用于维持会话所占用的资源
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小蓝xlanll/article/detail/547785
推荐阅读
article
edge
入门基础了解使用_
edge
快速
搜索
当前
页面
所有
文字
数量...
Edge扩展是指为微软Edge浏览器设计的插件,可以帮助用户个性化定制浏览器,提高工作效率。这些扩展可以在Microso...
赞
踩
article
【
一起
深度
学习
吧!!!!!】
24
/
05
/03...
仅个人记录
学习
状况哈哈哈【
一起
深度
学习
吧!!!!!】
24
/
05
/03 ...
赞
踩
article
HarmonyOS4
-
ArkUI
组件
动画
_
arkui
小球
动画
...
position({ x: this.fishX - 20, y: this.fishY - 20 }) // 中心点坐...
赞
踩
article
mysql
字符集不相等 error
code
1267_
mysql
1267
utf8mb4
_un...
错误代码: 1267Illegal mix of
collations
(
utf8mb4
_uni
code
_ci,IMPL...
赞
踩
article
基于
FPGA
的
VGA
显示
彩条、字符、图片_基于
fpga
的
vga
显示
设计...
基于
FPGA
的
VGA
显示
彩条、字符、图片_基于
fpga
的
vga
显示
设计基于
fpga
的
vga
显示
设计 ...
赞
踩
article
多
目标
优化
算法
:
多
目标
鳟海鞘
算法
(Multi-objective
Salp
Swarm
Algori...
多
目标
鳟海鞘
算法
(Multi-objective
Salp
Swarm
Algorithm
,
MSSA
)由Seyedal...
赞
踩
article
解决
mumu
模拟器
安装
burp
证书
adb
remount失败问题_
mumu
12
安装
证书
...
最近新
安装
一个
mumu
模拟器
12.1,
安装
burp
证书
时遇到坑,按照之前的步骤
安装
,找不到
证书
,网上找资料才发现新的mu...
赞
踩
article
python
后端
好找
工作
吗_记搜狗一次不成功的
Python
后端
面试
经历...
面试
搜狗
Python
后端
结束快一个月了,终于有时间来做一个简单的总结了。简介:
工作
不久,基础
后端
岗位,一面结束,失败。先...
赞
踩
article
网络
基础-
网关
,
DNS
,
MAC
地址
,
子网掩码
,网段_
网关
地址
...
是192.168.1.0-192.168.1.254,这个网段就像一个村子一样,就称它为安防村,此这网段有个ip
地址
是1...
赞
踩
article
不懂
Java
注解
?带你
写
一个
_
java
注解
写
一个
...
从理论到实践,带你真正理解
Java
注解
_
java
注解
写
一个
java
注解
写
一个
...
赞
踩
article
JAVA
面试小结三十四:
java
agent
实现
原理
_
java
agent
原理
...
通过Instrumentation API,Java Agent可以在类加载到JVM之前或之后,对类的字节码进行修改或分...
赞
踩
article
linux
定时
任务备份
redis
_
linux
crontab
定时
备份
redis
...
1,查看当前
linux
系统是否安装了
定时
服务:命令rpm -qa | grep
crontab
,,若未安装,可以自行百度...
赞
踩
article
PicGo
一条龙:下载、
安装
、
配置
gitee
、
配置
typora
_
picgo
官网...
PicGo
:一个用于快速上传图片并获取图片 URL 链接的工具。官网地址:https://
picgo
.github.io...
赞
踩
article
预测丨
2023
年
软件
测试
职业
发展趋势
,
附晋升路线_
2023
测试
写什么项目比较好找
工作
...
2023
年到了
,
不管是遭遇互联网寒冬还是经济萧条
,
只有每一个
测试
人员坚定了努力方向
,
具备了相应的实力
,
才有资格向企业要求...
赞
踩
article
深入理解
SpaCy
:中级指南
_
from
spacy
import
display
...
SpaCy
允许你添加自定义的处理组件,这些组件将会被加入到处理管道中,你可以使用它们对文档进行各种各样的处理。在这篇中级...
赞
踩
article
贝叶斯
网络
之父
Judea
Pearl
:新因果科学与数据科学、
人工智能
的思考_
贝叶斯
网络
之父
新因果...
2020-06-22 03:49:58作者 | Mr Bear、蒋宝尚编辑 | 丛末6月21日,图灵奖得主、
贝叶斯
网络
之...
赞
踩
article
mysql
中
字
段
类型
及
字
符集
_
mysql
字
符集
到
字
段
吗?...
介绍数据库中常用
字
段
类型
标识符的
字
符SQL语句分类
字
符集
字
符集
概述Mysql支持的
字
符集
简介Unicode简述怎样选择...
赞
踩
article
2024
年
3
月份微软
安全
通告...
从漏洞的危险等级来看,相较去
年
“Critical”等级的漏洞数量减少,“Important/High”等级的漏洞数量减少...
赞
踩
article
用户画像之
Spark
ML
实现
...
参考文章:用户画像之
Spark
ML
实现
1.
Spark
ML
简单介绍
Spark
ML
是面向DataFrame编程的。...
赞
踩
article
数值
常量
_
android
'
20
'
是
一个
魔术数字(直接常数)...
数值
常量
数值
常量
是高精度的 值 。
一个
未指定类型的
常量
由上下文来决定其类型。也尝试一下输出 needInt(Big) 吧...
赞
踩
相关标签
edge
深度学习
pytorch
人工智能
nginx
运维
fpga开发
多目标算法
多目标规划
多目标进化算法
android
adb
python后端好找工作吗
网络
tcp/ip
网络协议
注解
反射
Java
java
开发语言
picgo
单元测试
测试工具