WireShark抓包分析TCP三次握手过程,TCP报文解析
「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》
使用WireShark工具抓取TCP协议三次握手的数据包,分析TCP三次握手过程,分析TCP报文中各个字段的作用。
- 第一步:访问百度
- 第二步:过滤TCP协议的数据包
- 第三步:数据包分析
- 第四步:数据报文分析
第一步:访问百度
1)打开wireshark,开启抓包,然后打开浏览器访问百度,触发TCP三次握手。
2)打开cmd,ping www.baidu.com 拿到百度的IP地址。

第二步:过滤TCP协议的数据包
1)显示过滤器输入:tcp and ip.addr==110.242.68.3,过滤TCP协议的数据包。

最上面的三个包,就是TCP三次握手的数据包,每个包对应一次握手。
第三步:数据包分析
先分析一下三个握手的包都做了什么
1)先看第一个数据包,源地址(Source字段)是我

cmd执行 ifconfig 验证一下:

目的地址(Detintion字段)是百度的地址
Info字段,是请求的描述,可以看到里面有一个 SYN

总结一下第一个包做了什么:
我的电脑向百度的服务器发送了一个TCP请求,SYN表示这是一个建立连接的请求,这是第一次握手。
2)再看第二个数据包,源地址(Source字段)是百度的地址

目的地址(Detintion字段)是我的
Info字段是描述,可以看到有一个 SYN 和 ACK

总结一下这个包做了什么:
百度的服务器(收到我的链接请求以后)向我的电脑发送了一个TCP请求,SYN+ACK表示这是一个应答的请求,这是第二次握手。
3)再看第三个数据包,源地址(Source字段)是我

目的地址(Detintion字段)是百度的服务器
Info字段是描述,可以看到里面有一个 ACK

总结一下这个包做了什么:
我的电脑(收到百度服务器的响应请求后)向百度的服务器发送了一个TCP请求,ACK表示这是一个确认请求,这是第三次握手
发送完这个确认请求后,三次握手就完成了,客户端会打开到服务器的单向链接;服务器收到确认请求后,就会打开到客户端的单向链接;两个方向的连接都打开,就可以传输数据了。
第四步:数据报文分析
TCP协议数据报文格式如下图,接下来,我们根据抓到的数据包,分析各个字段的对应关系及作用。

1)点开TCP协议的数据包,第四行 Transmission Control Protocol 就是TCP协议的数据了。按照首字母区分协议。
- Source Port字段是源端口,客户端会使用一个随机端口向服务器发起TCP连接
- Destination Port字段是目的端口,因为我们是用https协议访问百度,所以这里是向服务器的443端口发起TCP连接

2)序号和确认号用来按顺序重组数据
- Sequence Number:表示本次传输数据的起始字节在整个数据流中的位置,是相对序号
- Sequence Number (Raw):原始序号
- Next Sequence Numvber:下一个包的序号
- Acknowledgment Number:期望收到下一个包的序号,相对序号
- Acknowledgment Number(Raw):原始序号

3)数据偏移表示数据到开始位置的距离,用来计算TCP报文的首部长度

4)标志位用来确认请求的作用,三次握手中需要注意的两个标志位是:Acknowledgment (ack)和 syn
- Reserved:保留位
- Nonce:显式拥塞通知,标明阻塞即将发生,让发送方降低传输速率
- CWR:减少拥塞窗口
- ECN-Echo:有两种意思,取决于SYN的值
- 紧急 URG(Urgent):为1表示高优先级数据包
- 确认 ACK(Acknowledgment ):为1表示确认号字段有效
- 推送 PSH(Push):为1表示接收方尽快将这个报文交给应用层而不用等待缓冲区装满
- 复位 RST(Reset):为1表示出现严重错误,需要重新建立连接
- 复位 SYN:建立连接时同步序号;SYN=1和ACK=0表示连接的请求,SYN=1和ACK=1表示接收连接的请求
- 终止 FIN:为1表示传输完成,请求释放链接

注意看第一次握手的数据包,因为标志位里只有Syn的值为1,所以Flags显示的是SYN,请求的Info字段也就显示 SYN

再看第二次请求的数据包,因为标志位里Syn和Acknowledgment的值都是1,所以Flags显示的是 SYN,ACK,请求的Info字段也就显示 SYN,ACK

5)最后就是窗口大小、校验和、紧急指针、选项、填充这几个字段
- window字段表示窗口大小,告诉对方自己所能接收的最大字节是多少,用于流量控制
- Checksum字段表示校验和,用来检验数据包的完整性
- Urgent Poiter字段表示紧急指针,在标志位URG为1的时候有效,代表一个偏移量,和序号字段值相加
- Options字段表示选项,长度可变
- Timestamps字段表示填充

相关文章:
WireShark抓包分析TCP三次握手过程,TCP报文解析
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 使用WireShark工具抓取TCP协议三次握手的数据包&am…...
【C语言】指针和数组笔试题解析
大家好,我是苏貝,本篇博客带大家了解指针和数组笔试题解析,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1.前言2.一维数组2.字符数组2.12.22.32.42.52.6 1.前言 本篇文章是讲述在不同数…...
Vue的模板语法(下)
一.事件处理 事件修饰符 Vue通过由点(.)表示的指令后缀来调用修饰符, .stop, .prevent,.capture,.self,.once .stop:阻止事件冒泡。当一个元素触发了事件,并且该元素包含嵌套的父元素时&#…...
Zookeeper客户端——I0Itec-zkClient
dubbo使用了zkClient而不是使用zookeeper本身的客户端与zookeeper进行交互,为什么呢? 先看看zookeeper本身自带的客户端的问题。 1)ZooKeeper的Watcher是一次性的,用过了需要再注册; 2) session的超时后…...
火山引擎 ByteHouse:ClickHouse 如何保证海量数据一致性
背景 ClickHouse是一个开源的OLAP引擎,不仅被全球开发者广泛使用,在字节各个应用场景中也可以看到它的身影。基于高性能、分布式特点,ClickHouse可以满足大规模数据的分析和查询需求,因此字节研发团队以开源ClickHouse为基础&…...
hashmap使用
hashmap作为dao对象存储数据库数据 list是把每一个数据库的字段都映射了,而hashmap则是唯一id:数据库字段作为key hashmap遍历方式 public class Main {//使用迭代器(Iterator)EntrySetpublic static void main(String[] args) {// 创建并赋…...
Centos7配置国内yum源
目录 备份原系统中的repo文件配置国内开源镜像重新生成yum缓存 备份原系统中的repo文件 cd /etc/yum.repos.d/mkdir repo_bakmv *.repo repo_bak/配置国内开源镜像 到网易和阿里开源镜像站点下载系统对应版本的repo文件 curl -O http://mirrors.aliyun.com/repo/Centos-7.re…...
C#中async/await的线程ID变化情况
一、简单的起步 Console.WriteLine($"主线程开始ID:{Thread.CurrentThread.ManagedThreadId}");//aawait Task.Delay(100);//cConsole.WriteLine($"主线程结束ID:{Environment.CurrentManagedThreadId}");//b 结果: …...
网络安全—黑客技术—自学笔记
目录梗概 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来…...
功夫再高也怕菜刀。多年经验,会独立开发的机器视觉工程师,技术太强,但是找工作能力差劲
功夫再高也怕菜刀,专业的事情交给专业的人去做。 今年7月份中旬的时候,遇到一位老朋友,向我咨询某公司的信息,其实我根本不了解这家公司的情况与实力,向他说了,抱歉,我查下,等我晚上…...
numpy的多项式函数: `poly1d`
Python numpy.poly1d() numpy.poly1d()函数有助于定义一个多项式函数。它使得在多项式上应用 "自然操作 "变得容易。 语法: numpy.poly1d (arr, root, var) 参数 : arr : [array_like] 多项式系数按照幂的递减顺序给出。如果第二个参数(根)被…...
Python灰帽编程——错误异常处理和面向对象
文章目录 1. 错误和异常1.1 基本概念1.1.1 Python 异常 1.2 检测(捕获)异常1.2.1 try except 语句1.2.2 捕获多种异常1.2.3 捕获所有异常 1.3 处理异常1.4 特殊场景1.4.1 with 语句 2. 内网主机存活检测程序2.1 scapy 模块2.1.1 主要功能2.1.2 scapy 安装…...
【20230919】win11无法删除Chrome注册表项
win11无法删除Chrome注册表项 删除以下注册表项发生错误: 计算机\HKEY_LOCAL_MACHINE\SOFTWAR\Google计算机\HKEY_CURRENT_USER\Software\Google 尝试了很多删除注册表方法(例如:编辑remove.reg文件),都不行。 无法…...
TCP/IP客户端和服务器端建立通信过程
客户端和服务器端建立通信过程 使用Qt提供的类进行基于TCP的套接字通信需要用到两个类: QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接。 QTcpSocket:通信的套接字类,客户端、服务器端都需要使用。服务…...
Python ---使用Fake库向clickhouse造数据小案例
每次insert太麻烦了 先在clickhosue中建表 test_user表 CREATE TABLE dwh.test_user (name String,age Int32,address String,phone String,email String ) ENGINE MergeTree() ORDER BY name; 此时表中暂无数据 用Python脚本来造一些数据 from faker import Faker from c…...
09MyBatisX插件
MyBatisX插件 在真正开发过程中对于一些复杂的SQL和多表联查就需要我们自己去编写代码和SQL语句,这个时候可以使用MyBatisX插件帮助我们简化开发 安装MyBatisX插件: File -> Settings -> Plugins -> 搜索MyBatisx插件搜索安装然后重启IDEA 跳转文件功能 由于一个项…...
使用 Messenger 跨进程通信
什么是Messenger Messenger 也是IPC的方案之一,是基于消息的跨进程通信。基于消息是什么意思?Handler是我们最常用的消息机制,所以 Messenger 对于使用者来说就像是使用 Handler。实际上 Messenger 就是 AIDL 的上层封装而已,它们…...
Spring Cloud Gateway
路由谓词工厂 Route Predicate Factory 1. The After Route Predicate Factory spring:cloud:gateway:routes:- id: after_routeuri: https://example.orgpredicates:- After2017-01-20T17:42:47.789-07:00[America/Denver]# 用日期时间匹配 2. The Before Route Pr…...
JVM 优化技术
文章目录 JVM 优化技术概述方法内联优化说明优点内联条件 栈帧之间数据共享说明优点栈帧之间数据共享条件 JVM 优化技术 概述 JVM常见的优化技术: 方法内联优化。栈帧之间数据共享。 方法内联优化 说明 方法内联(Method Inlining)是JVM…...
【MySQL系列】- MySQL自动备份详解
【MySQL系列】- MySQL自动备份详解 文章目录 【MySQL系列】- MySQL自动备份详解一、需求背景二、Windows mysql自动备份方法2.1 复制date文件夹备份实验备份环境创建bat直接备份脚本 2 .2 mysqldump备份成sql文件创建mysqldump备份脚本 2 .3 利用WinRAR对MySQL数据库进行定时备…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例
在工业自动化控制系统中,常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中,客户现场采用了 罗克韦尔PLC,但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控,引入了开疆智能Etherne…...
[10-1]I2C通信协议 江协科技学习笔记(17个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...
