当前位置: 首页 > news >正文

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数据库进行定时备…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...