搜索
查看
编辑修改
首页
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
开源大数据工具整理_最全大数据组件整理
2
Android的四种监听事件处理方式_简述 android 系统基于监听的事件处理机制的 4 种实现方式。
3
面向文档的代理:矢量数据库、chatgpt、Langchain、FastAPI 和 Docker 之旅,利用 ChromaDB、Langchain 和 ChatGPT:增强大型文档数据库的响应和引用来_docker chromadb
4
git合并远程库并将代码合并完提交到自己的分支的流程_合并其他人的代码后提交自己的代码
5
spark概述和scala的安装部署
6
找到服务器系统日志,查看服务器系统日志
7
数据结构学习——树形结构之递归遍历二叉树
8
消费级显卡轻松跑AI,英伟达RTX领跑AI PC竞争
9
Hive 常用函数_hive lpad
10
android自定义选年控件,Android精美日历控件CalendarView自定义使用完全解析
当前位置:
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
sklearn
中
随机
森林
的
参数
_
sklearn
随机
森林
参数
...
一:
sklearn
中决策树的
参数
:1,criterion: ”gini” or “entropy”(default=”g...
赞
踩
article
3dMax
使用
Vray
渲染器
制作
光
效教程_
vray
体积
光
...
使用
Vray
渲染器
在
3dMax
中制作
体积
光
效果_
vray
体积
光
vray
体积
光
VRay
渲染器
是业...
赞
踩
article
题解
| #
nginx
日志分析5-
统计
爬虫抓取
404
的次数#_
bash
语言
统计
出现
404
个数...
rt,报了华为云计算部门,听说今年云计算没什么hc,对接人做过笔试之后就不理我了,发微信不回,不知道有没有过求华为云计算...
赞
踩
article
宜搭低
代码
开发
师(
高级
)
考试
选择题
(超级详细版)_低
代码
开发
师
高级
考试
题库答案...
连接器变量描述},#{变量名},#{
代码
中定义的变量})_低
代码
开发
师
高级
考试
题库答案低
代码
开发
师
高级
考试
题库答案 ...
赞
踩
article
nodejs
:本地
安装
nvm
实现
nodejs
多
版本
管理
及
切换
版本
_
nvm
切换
版本
...
vue3+ts、nuxt3
版本
,node推荐使用node18。vue2、nuxt2,node 建议使用node16,如果...
赞
踩
article
Flink
安装
部署
与快速入门_
flink
安装
...
(一)、
Flink
安装
部署
与快速入门(xxbj)一、
flink
概述1、为什么选用
flink
?不仅仅是一个高吞吐、低延迟...
赞
踩
article
基于
springBoot
实现
民宿
管理
平台
系统
源码_基于
springboot
的
民宿
管理
系统
...
首页、
民宿
信息、房间信息、个人中心、后台
管理
、在线客服等功能。房间退订
管理
:通过房间退订
管理
列表可以获取退订编号、商家编...
赞
踩
article
【小5聊】
Chrome
谷歌
浏览器
下载
任何东西都
提示
- 失败 -
下载
错误
的
解决方法_
谷歌
浏览器
下载
...
在安装完成chrome
谷歌
浏览器
后,重新对磁盘做了调整,导致chrome
下载
存储
的
路径空了,所以就
提示
了上面
的
错误
提示
。...
赞
踩
article
在
Node
.
js
(
express
框架)中使用
nodemailer
实现
邮箱
注册功能...
需要使用自己的QQ来向注册的用户发送邮件,所以此处需要开启相关服务。此处获取的授权码后续将用于验证。此处使用
Node
....
赞
踩
article
Mybatis
实现
JsonObject
对象与
JSON
之间交互
_
mybatis
json
...
项目中使用PostGresql数据库进行数据存储,表中某字段为Json类型,用于存储Json格式数据。PG数据库能够直接...
赞
踩
article
【
Sql
Server
】
锁
表
如何
解锁
,模拟会话
事务
方式锁定一个
表
然后进行
解锁
_解
锁
表
的
事务
...
在实际项目开发过程中,C#后端代码逻辑有时候没有处理好,容易造成sql server
锁
表
的情况。大家都知道,
锁
表
了,就会...
赞
踩
article
【解决】模拟器设置
system
读写报错‘/
dev
/
block
/
sda6
‘
is
read
-
only
...
re
mount
失败'/
dev
/
block
/
sda6
'
is
read
-
only
adb
d
is
able-verity f...
赞
踩
article
Python
标准
库
subprocess
模块多
进程
编程详解...
本文主要介绍python
标准
库
subprocess
模块创建子
进程
的各种用法 (1) 用
subprocess
.ru...
赞
踩
article
Hyperf
自动
注解
_
hyperf
@
autocontroller
注解
...
Hyperf
自动
注解
注意事项_
hyperf
@
autocontroller
注解
hyperf
@autocontrolle...
赞
踩
article
深入理解
HDFS
工作
原理:
大
数据
存储
和
容错性
机制解析...
在当今
数据
爆炸的时代,
存储
和管理
大
规模
数据
成为了许多组织面临的重要挑战。为了解决这一挑战,分布式文件系统应运而生。Had...
赞
踩
article
Idea
中使用
git
将多次
提交
记录
合并
成一次
提交
记录
_
idea
,
合并
git
提交
记录
...
使用Interactively Rebase from Here进行
合并
_
idea
,
合并
git
提交
记录
idea
,
合并
...
赞
踩
article
2024
年4月
TIOBE
指数
头条:四月头条:
PHP
正在失去魔力吗?多家
权威机构
____
编程语言
排...
2024
年4月多家
权威机构
的
编程语言
流行度
指数
排行榜和资历
薪酬
状况,
2024
年3月
TIOBE
指数
头条:四月头条:
PHP
...
赞
踩
article
uniapp
使用腾讯
地图
_
uniapp
使用腾讯
地图
...
引入qqmap-wx-jssdk.min.js在腾讯
地图
官网下载。vue-jsonp解决
地图
跨域问题。_
uniapp
使...
赞
踩
article
NLP
自然语言
处理系列-
week6
-
文本
生成
案例(1)(
Text
Generation)_
文本
生成
...
NLP
自然语言
处理系列-
week6
-
文本
生成
案例(
Text
Generation)目录
文本
生成
目录
文本
生成
文本
生成
是自...
赞
踩
article
微信
公众号 点击
显示
答案
操作步骤
...
根据内容区域大小调整遮罩层大小,大小一般取内容区域高度+40。添加完遮罩层后,由于遮罩层作用,无法对内容区域直接编辑。添...
赞
踩
相关标签
机器学习
3dmax
3dmax插件
3dsmax
vray
3dmax效果图
java
低代码
前端
node
npm
nvm
flink
大数据
spring boot
毕业设计
课程设计
项目源码
chrome
node.js
express
nodemailer
邮箱注册
mybatis
json