利用wireshark对TCP抓包分析

2023-11-15

抓包结果已上传可免费下载对应观看:
wireshark抓包结果

一、流程梳理

我的机子192.168.1.131简称A与服务端机子223.166.138.30简称B先三次握手建立TCP连接,再进行HTTP请求,最后四次挥手断开TCP连接
1.三次握手:
在这里插入图片描述
A先给B发出一个SYN包请求建立连接
B给A发回一个ACK SYN包针对上一个SYN请求且发出请求建立连接
A再给B发回一个ACK包针对上一个SYN请求

2.PSH
在这里插入图片描述
TCP segment of a reassembled PDU,字面意思是要重组的协议数据单元(PDU:Protocol Data Unit)的TCP段。比如由多个数据包组成的HTTP协议的应答包,如下

这里的分段是指:上层协议HTTP的应答由多个分段组成,每个分段都是TCP协议的。TCP本身没有分段的概念,它的sequence number和acknowledge number 是使TCP是基于流的协议的支撑,TCP segment of a reassembled PDU的出现是因为Wireshark分析了其上层的HTTP协议而给出的摘要,如果配置Wireshark不支持HTTP协议解析

参考:https://blog.csdn.net/weixin_30439067/article/details/97999147?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-97999147-blog-103210932.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-97999147-blog-103210932.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=2

PSH(Push):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。

3.HTTP的请求与相应
在这里插入图片描述
HTTP的工作方式是先由客户端向服务器发起一个请求,再由服务器回复一个相应,根据不同需要,客服端发送的请求会用到不同的方法,有GET、POST、PUT等,
这里使用了POST方法,多用于网站上登录账号,用来传输实体的主体
/cloudquery.php表示请求URI
HTTP/1.1表示协议版本
对于POST方法的相应是服务端接收主体的处理结果
200OK表示从客服端发来的请求在服务器端被正常处理了

4.TCP的四次挥手
在这里插入图片描述
由于TCP是全双工连接,需要双方互相通知断开连接,然后对端应答这个通知
这里和书上的例子顺序会有所不同
A主机先发送断开连接请求
B主机紧接着发送断开连接请求
B主机相应A主机的断开连接请求
A主机响应B主机的断开连接请求

二、读网络包

现在打开B主机响应A主机建立连接请求的第80号包:
在这里插入图片描述
最下方的为整个数据包的16进制形式,由于是对于建立连接请求的相应包,所以并没有携带要传输的信息,只有各个层的数据头

第一行:因为这个包是在主机上抓的,所以最外层的是通过数据链路层封装的,数据链路层会将数据包封装陈帧(Frame),帧的序号就是这个包的序号,该包共64字节
第二行:数据链路层,从中可以看到相邻两个设备的MAC地址,源MAC地址还能看到路由器的型号捏,因此该网络包才能以接力的方式送达目的地址
第三行:网络层,在该数据包中本层主要任务是把TCP层传下来的数据加上目的地址和源地址
第四行:传输层,指明使用了TCP协议及原端口号和目的端口号,以及TCP连接中的一些信息
第五行:填充的意思。
因为在以太网中,规定最小的数据包为64个字节,如果数据包不足64字节,则会由网卡填充。
在sniffer中显示padding,而wiershark则显示trailer。

点开网络层,再点开其中的源IP地址:
在这里插入图片描述
223对应df,166对应a6,138对应8a,30对应1e
1e:16+14=30
再点开传输层:
在这里插入图片描述
可以看到源端口号为80,目标端口号为55469
序列号为11769945
确认应答号为1205542292
数据偏移,保留,控制位一起记录在flags中:
在这里插入图片描述
16进制70转为二进制:0111 1110
首部长度0111转为十进制为7,TCP首部长度单位为4字节,即28字节
保留位1110,主要是为了以后扩展使用,暂时忽略
16进制12转为二进制:0001 0010
对应图上只有SYN与ACK置1,确实符合
在这里插入图片描述
窗口大小14600
校验和0x0376
紧急指针0
选项:选项字段主要用于提高TCP的传输性能
在这里插入图片描述
对TCP首部一个更直观的展示:
在这里插入图片描述

三、关于TCP的三次握手与四次挥手

在这里插入图片描述
A与B单独维护其发送法术网络包的序列号
A发送表示建立连接的网络包序列号为1205542291
B也发送表示建立连接的网络包,其序列号为117691945,其中确认号为1205542292,在建立和断开连接时发送的SYN包和FIN包虽然并不携带数据,但是也会作为一个字节增加对应的序列号,否则其序列号就是上一个数据包的序列号加上其长度,这个确认号既表示收到了上一个数据包,又表示对方下次发数据包的起始序列号应该是多少
A针对B发送的建立连接请求发出一个确认,其序列号为1205542292,确认号为117691946
在这里插入图片描述

大部分与握手时相似,注意的点:
TCP连接断开前进行是HTTP的响应,该响应的序列号117691946,长度为482,加起来为117692428,也就是B下次再发数据包的序列号
倒数第二个包既不是syn包也不是fin包,其中也没有数据,因此B端的syn计数不会加1

四、关于窗口大小的变化

MSS:maximum segment size最大消息长度

MSS (Maximum Segment Size)是 TCP Layer (L4) 的属性, MSS 指的是 TCP payload 的长度. 当在 MTU 1500 的网络上传输时, MSS 为 1460 (即 1500 减去 20 字节 IP 头, 20 字节 TCP 头).
发送窗口决定了一口气能发送多少字节,而MSS决定了这些字节要分成多少个段发送
如发送窗口是16000字节时,MSS是1000字节,就要分成16个段进行发送

在建立TCP连接时,两端互相发送MSS然后取最小的MSS投入使用
在这里插入图片描述
这里两个MSS一样

流控制:TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量,具体操作:接收端主机向发送端主机通知主机可以接收数据的大小,于是发送端会发送不超过这个限度的数据,当接收端的缓冲区溢出时,窗口大小的 值也会随之设置成一个更小的值通知发给发送端,从而控制数据发送量。
注意window size不是指发送窗口,而是告诉对方自己的接受窗口,也就是自己的缓冲区大小

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用wireshark对TCP抓包分析 的相关文章

  • 网络协议与攻击模拟_01winshark工具简介

    一 TCP IP协议簇 网络接口层 没有特定的协议 物理层 PPPOE宽带拨号 应用场景 宽带拨号 运营商切网过来没有固定IP就需要拨号 家庭带宽一般都采用的是拨号方式 数据链路层 网络层 IP v4 v6 ARP 地址解析协议 RARP
  • 八路视频光端机技术导论:多通道视频传输的高效解决方案

    随着光通信技术的快速发展 八路视频光端机 已成为多通道视频传输的有效解决方案 本文将探讨该技术的原理 优势及应用前景 为光通信行业的技术人员和研究学者提供参考 技术原理 八路视频光端机基于 波分复用 WDM 技术 通过一个光纤同时传输多路视
  • Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

    通过本篇文章 我们将会学习以下内容 1 在Windows上安装Metasploit 2 在Linux和MacOS上安装Metasploit 3 在Kali Linux中使用 Metasploit 4 升级Kali Linux 5 使用虚拟化
  • 通过一个寒假能学会黑客技术吗?看完你就知道了

    一个寒假能成为黑客吗 资深白帽子来告诉你 如果你想的是学完去美国五角大楼内网随意溜达几圈 想顺走一点机密文件的话 劝你还是趁早放弃 但是成为一名初级黑客还是绰绰有余的 你只需要掌握好渗透测试 Web安全 数据库 搞懂web安全防护 SQL注
  • 这些专利知识你知道吗?

    专利作为一种重要的知识产权保护形式 专利不仅成为了企业核心竞争力的重要组成部分 也成为了国家创新发展的重要支撑 专利是指国家专利主管机关授予发明创造申请人的一种专有权 这种专有权具有独占性 排他性和法律强制性 能够为持有者带来经济利益和竞争
  • 如果wireshark无法识别某些类型的协议(RTSP、RTP、RTCP),如何强制其破译它们?

    我正在尝试根据Java实现RTSP协议http www csee umbc edu pmundur courses CMSC691C lab5 kurose ross html http www csee umbc edu pmundur
  • 将 HTTP 请求映射到 HTTP 响应

    如果我向同一服务器发出多个 HTTP Get 请求 并且每个请求都获得 HTTP 200 OK 响应 我如何使用 Wireshark 判断哪个请求映射到哪个响应 目前看起来好像发出了一个 http 请求 并且很快收到了下一个 HTTP 20
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • Windows 8 Phone 客户端证书 HTTPS 身份验证

    我正在尝试使用我正在开发的 Windows 8 Phone 应用程序中的客户端证书访问安全的 HTTPS 服务器 这根本不起作用 这让我尝试从标准 Web 浏览器访问 HTTPS 服务器 但它也不起作用 我不知道 Internet Expl
  • 使用 libwireshark 以编程方式获取 Wireshark 功能

    如果我想编写一个使用 Wireshark 功能的脚本 我会使用 tshark 我听说还有一个 libwireshark 可以在用 C 编写程序时使用 但是我一生都找不到any其文档 我尝试隔离wireshark源树中的库代码 但似乎代码组织
  • 无法理解 PcapNG 文件中的 802.11 数据帧格式

    I have PcapNG由 Wireshark 创建的文件 我尝试用它来解析python pcapng However I cannot figure out how to reconcile the output I receive f
  • 尝试通过 SMTP 发送邮件。没有邮件到达并且没有异常错误

    问题 制作了一个小型邮件程序 该程序在我的开发人员电脑上完美运行 但在投入生产时却失败了 protected void Page Load object sender EventArgs e string smtpHost Configur
  • IE 未在 TLS 相互身份验证中发送客户端证书

    我正在尝试与第三方 API 建立 TLS 相互身份验证 客户端证书配置良好 当我尝试通过 Chrome 访问端点 url 时 它工作正常 Chrome 要求在消息框中确认证书 当我这样做时 页面会显示其内容 当我尝试使用 IE 执行同样的操
  • 设计 EAP-TLS 客户端问候消息

    我正在尝试设计第一个启动 EAP TLS 握手的数据包 这是我的数据包目前的样子 我通过用相应的信息手动填充 C 中的缓冲区来设计 EAP 部分 我使用 OpenSSL 导出的 TLS 部分如图所示在这个问题中 https stackove
  • Wireshark 解剖器 - 如何将 dissectortable:add(pattern, dissector) 与任何模式一起使用?

    我正在为 Wireshark 创建一个自定义解析器 我将我的解剖器添加到解剖器表中 就像这样 udp table DissectorTable get udp port udp table add 7777 my proto 然而 我的解析
  • 如何使用wireshark清晰捕获mysql查询sql

    因为我们使用远程开发Mysql服务器 所以不能轻易检查查询sql 如果使用本地服务器可以tail f general log file查看调用某个http接口时执行了哪些sql 所以我安装了一个wireshark捕获这些从本地发送的查询sq
  • 如何找出数据包的HTTP头长度?

    我知道如何手动执行此操作 通过查看十六进制转储 我怎样才能自动获得相同的信息 我必须使用 API 吗 我有wireshark 和Microsoft 网络监视器 这可以通过简单地实现Lua解析器 http wiki wireshark org

随机推荐

  • 如何将Web主页性能提升十倍以上?

    给IT平头哥联盟加星标 提升前端技能 作者 exAspArk 译者 核子可乐 最近 我们将 Universe com 主页的性能提升了十倍以上 在本文中 我们将解析实现这一重大改进的具体技术手段 但在开始之前 让我们先对网络性能的重要意义进
  • C 基本语法

    原文链接 https www runoob com cprogramming c basic syntax html 我们已经看过 C 程序的基本结构 这将有助于我们理解 C 语言的其他基本的构建块 C 的令牌 Tokens C 程序由各种
  • Selenium+python之不打开浏览器,来运行测试用例

    调用浏览器 来进行自动化测试 是一个常规操作 或者说针对少量测试用例 可以打开浏览器运行 但是针对大量运行测试用例来说 如果每个测试用例都需要调用一次 浏览器 那么无疑对服务器增加了巨大的压力 那么有没有一个办法 不调用浏览器 让浏览器在后
  • (只需两步)让ChatGPT免费帮你制作出漂亮的PPT

    目录 第一步 生成 PPT 代码 第二步 将代码转化为 PPT 还在为制作PPT而烦恼吗 让ChatGPT来帮您 本篇文章介绍如何利用ChatGPT一键生成PPT文字和样式 省时省力又专业 真的只需两步 真的非常简单 以下部分生成效果 pp
  • bash和sh的区别

    一 简述 Shell 中文意思贝壳 寓意类似内核的壳 Shell是指一种应用程序 这个应用程序提供了一个界面 用户通过这个界面访问操作系统内核的服务 Shell 是一个用 C 语言编写的程序 它是用户使用 Linux 的桥梁 Shell 既
  • 一文搞懂Ubuntu环境变量

    用户级别的环境变量 bash profile bash login bashrc 坑的原理 1 当bash shell作为登录shell启动时 比如用户登录系统时 首先会查找并执行 bash profile文件 如果这个文件不存在 那么它会
  • R根据列名提取想要的列

    数据格式如下 a b c d e 1 2 3 4 5 使用select过滤不要的列 df which names df in c a b subset df select c a b 使用select选择想要的列 df c x y subs
  • 微信小程序 真机调试无法请求localhost

    问题描述 在微信开发者工具里能正常请求后台数据 但真机调试时 却报localhost请求失败的错误 解决方案 在客户端的config js中 把host里的localhost改成本机在局域网里的ip地址即可 服务端可继续沿用localhos
  • 【云原生】kubectl常用命令大全

    目录 一 资源管理方法 kubectl 的命令大全 二 kubectl常用命令大全 2 2 项目的生命周期 创建 gt 发布 gt 更新 gt 回滚 gt 删除 1 创建 kubectl create命令 2 发布 kubectl expo
  • plt.show无法显示图片

    省流 Linux系统本来就没有图形界面 import matplotlib pyplot as plt plt savefig img png 引号里是保存的路径 像此处示例就是相对路径 保存在当前文件夹 远程服务器连接Linux系统 则保
  • SpringAOP+自定义注解实现日志功能

    SpringAOP 自定义注解实现日志功能 上篇文章讲解了springAOP实现简单日志功能 这次讲解使用自定义注解实现日志功能 具体pom Spring SpringMVC的配置不再进行讲解 详情点击链接查看SpringAOP Aspec
  • 前端性能优化之Gzip

    前端性能优化之Gzip 什么是GZIP gzip是GNUzip的缩写 它是一个GNU自由软件的文件压缩程序 它是Jean loupGailly和MarkAdler一起开发的 压缩原理 Gzip 压缩背后的原理 是在一个文本文件中找出一些重复
  • Flutter 23: 图解 PopupMenu 那些事儿

    小菜需要处理标题栏弹出对话框 PopupMenu 样式 Flutter 当然提供了一些处理方式 类似 PopupMenuEntry 等 小菜仅就最基础的使用方式进行初步的学习和整理 PopupMenuItem 基本样式 PopupMenuI
  • 同态加密的基本概念

    所谓的同态加密 HE homomorphic encryption 是指 对明文m加密 得到密文c 满足f c 是f m 的密文 其中f是任意属于某个函数族F的函数 明文可以是单个明文 也可以是明文向量 对应的为单个密文和密文向量 而对应的
  • JAVA多线程之当一个线程在执行死循环时会影响另外一个线程吗?

    一 问题描述 假设有两个线程在并发运行 一个线程执行的代码中含有一个死循环如 while true 当该线程在执行while true 中代码时 另一个线程会有机会执行吗 二 示例代码 代码来源于互联网 1 public class Ser
  • redis的有序集合在score相同的情况 下是如何排序的

    前两天倒腾redis的有序集合时 自己发现了一个问题 redis的有序集合在score相同的情况 下是如何排序的 通过谷歌搜索 发现了一些线索 在score相同的情况下 redis使用字典排序 不过不是太明白什么是字典排序 这就是非科班出生
  • TortoiseSVN安装及使用方法

    安装说明 首先安装SVN客户端 windows一般选择乌龟客户端https tortoisesvn net downloads html 根据系统位数选择相应客户端进行安装 如果你喜欢用命令行操作 请务必记得勾选command line c
  • Python中PyEcharts库安装报错的解决办法

    如果安装pyecharts后 进行导包操作 如from pyecharts import Line 报错 出现类似connot import name Line 问题 那么下面给出了解决办法 方法一 通过查看包安装位置发现 在pyechar
  • 解决关闭hbase时stop-hbase.sh报错stopping hbasecat: /tmp/hbase-xxxx-master.pid: No such file or directory

    完整报错是 stopping hbasecat tmp hbase xxxx master pid No such file or directory 解决方法 sudo mkdir p var hadoop pids 然后进入hbase的
  • 利用wireshark对TCP抓包分析

    抓包结果已上传可免费下载对应观看 wireshark抓包结果 一 流程梳理 我的机子192 168 1 131简称A与服务端机子223 166 138 30简称B先三次握手建立TCP连接 再进行HTTP请求 最后四次挥手断开TCP连接 1