抓包神器 Wireshark,帮你快速定位线上网络故障(2)
ninehua 2024-11-25 15:36 39 浏览
Wireshark:界面与基本操作
正式分享之前,先简单介绍一下 Wireshark。Wireshark 的前称是 Ethereal,该开源软件的功能正如其名,用来还原以太网的真相。
Wireshark 可以捕获网络封包,并尽可能显示出最为详细的网络数据包信息。通过对捕获的包进行分析,可以了解用户的行为和传输的数据内容等。
Wireshark 的主界面如上图示意,主要包含显示过滤器、数据包列表、数据包详细信息、数据包字节流以及状态栏五大部分。在这里要重点提一下过滤器表达式,对于日常快速定位问题很有帮助。
如上图所示,Wireshark 内置了很多过滤器表达式,而且工具本身会对输入的过滤器表达式进行强校验,为了给后续分享做好铺垫,也为了老铁们上手快,简单总结几种常用的过滤方式(切记:未列出的并非不重要)。
一款工具软件罢了,可劲造就是啦,折腾折腾就搞明白怎么使用啦,具体的操作方式就不再赘述,下面将通过 Wireshark 抓包来谈谈面试常提及的 TCP 的三次握手、四次挥手机制。
当用户访问网站时,首先会通过 TCP 协议进行建立连接,然后才发送 HTTP 请求以获取网站的内容。服务端响应客户端的信息,也会通过 TCP 协议传输给客户端。
TCP 协议是因特网中的传输层协议,主要使用三次握手协议建立连接,四次挥手断开连接。
Wireshark:看透 TCP 的三次握手
在正式分析 TCP 协议建立连接的数据包之前,先介绍一下它的工作原理,以帮助老铁们更容易理解传输的数据包。其中 TCP 协议三次握手过程如下图所示。
通过对 TCP 三次握手的了解可知,TCP 协议在建立连接时,通过发送不同标志位(如 SYN、SYN+ACK、ACK)的数据包来建立连接,而且每次请求及响应的序列号也不同,接下来通过 Wireshark 抓包来分析一下。
上图显示的就是完整的 TCP 建立连接时“三次握手”的过程,在 7875 -> 2000 中,7875 是客户端的端口,2000 是服务端的端口。7875 端口和 2000 端口之间的三次来回就是“三次握手”过程。
- 第一次握手:
客户端发送的 TCP 报文中以 [SYN] 作为标志位,并且客户端序号 Seq=0。
- 第二次握手:
服务端返回的 TCP 报文中以 [SYN,ACK] 作为标志位;并且服务器端序号 Seq=0;确认号 Ack=1,也就是“第一次握手”中客户端序号 Seq 的值+1。
- 第三次握手:
客户端在向服务端发送的 TCP 报文中以 [ACK] 作为标志位;其中客户端序号 Seq=1,即是“第二次握手”中服务端确认号 Ack 的值;确认号 Ack=1,即是“第二次握手”中服务端序号 Seq 的值 +1。
现在再回头看看 TCP 协议三次握手的过程图,应该不会那么陌生,如果依然很陌生,那就多理解几遍(油从钱孔入而钱不湿,熟能生巧而已),建议用 Wireshark 自己抓包分析一番。
Wireshark:体会 TCP 的四次挥手
TCP 协议建立连接需要三次握手,而断开一个连接则需要经过四次挥手,其中 TCP 协议四次挥手过程如下图所示。
感兴趣的老铁,希望能亲自通过 Wireshark 去分析一把 TCP 的四次挥手,本次不做阐述,争取下次窥探 HTTP 协议的报文时再把 TCP 的四次挥手机制给演示一下。
写在最后:为什么分享 Wireshark?
第一次接触 Wireshark 距离至今已有 10 年,但是最近才真正开始推动团队去使用这款软件去分析问题,因为负责的团队与银行、三方交互的比较多,存在很多扯皮、甩锅而导致的效率低下,希望能把问题都摆在桌面上,进而让因为网络环境而导致纠缠不清的边界问题越发清晰。
鉴于并非 Wireshark 大神,所以会结合团队中遇到的问题,并尽量多的查阅资料、书籍,希望每篇分享能够准确,真心希望每篇分享对大家都有所帮助。
本次 Wireshark 分享就写到这里,接下来会借助 Wireshark 来窥探一下 HTTP 报文(真的毫无隐私可言),敬请期待。
一起聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出原创精彩分享,敬请期待!
相关推荐
- 配合制导弹药!土耳其推出反无人机武器系统,可全天候拦截无人机
-
【军武次位面】作者:FriedrichLau据报道,日前土耳其军队装备了一款名为Sahin"沙欣"的反无人机武器系统。该系统由土耳其Aselsan公司开发,旨在摧毁迷你或小型无人机,...
- 威纶通常见问题18 威纶通触摸屏密码使用的相关介绍
-
密码1:屏右下角的系统设定列(向左的箭头)进入密码提醒:上传下载的默认密码均为6个1,若不慎忘记密码,因已加密所以原厂也无法解开,请妥善保管密码。若因不可抗力因素造成的忘记密码,只能将屏恢复出厂设置然...
- 轻松学会威纶通触摸屏上传与反编译
-
说到上传,大家并不陌生,上传顾名思义:就是把实际触摸屏画面上传到电脑EasyBuilderPro软件上,上传的作用是什么呢?可以修改触摸屏上原有的画面,所以说在上传这两字在工控中是非常重要的,接下来进...
- DLL 可以被反编译吗?(dll文件可以编辑吗)
-
DLL可以被反编译,但存在一定难度DLL(动态链接库)是一种二进制文件,包含了可执行代码和数据。虽然它不像高级语言源代码那样容易被理解,但可以通过一些反编译工具进行逆向分析。不过,反编译后的结果通常...
- 复古游戏反编译工具遭任天堂下架 工具名或为诱因
-
Reddit用户mhjhacker1近日发表文章称,自己开发的一款“复古主机游戏逆向工程”工具被其他用户使用,反编译了一款任天堂四十年前的游戏,因而遭到了Itch.io的下架。而相关的另外三个工具也遭...
- protobuf之序列化数据和反序列化数据基础知识
-
什么是protobufProtocalBuffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。ProtocolBuffers是一种语言无关、平台无关、可扩展的...
- MT管理器-简单实战-去除启动页(mt管理器去除登录界面)
-
每次打开APP都要看着启动页2秒,很烦人,既然如此我们把它去掉吧。学过Android开发的都知道,APP的每个界面都是一个Activity,然后你点击桌面上的图标之后,其实是启动了这个...
- 这两个强大的开源C#反编译逆向工具,探索C#桌面应用的小秘密
-
C#的应用也比较多,有时候,我们想要研究一下别人的优秀的项目,可能会借助一些非常规手段来学习。下面,我就分享几款开源的C#反编译工具。dnSpydnSpy是一个用C#开发,开源的调试器和.NET汇...
- 一款开源的.NET程序集反编译、编辑和调试神器
-
致力于发掘、评测和推荐各种高效实用的工具和软件,帮助您在工作和生活中事半功倍。项目介绍dnSpyEx是dnSpy项目的非官方Fork维护版本,一款开源、功能强大的.NET反编译工具和调试器,可用于在没...
- 记一次噩梦般的经历--论学会反编译的重要性
-
最近在做一个android项目,因为非开源,github上也没购有私有库,所以就没有提交github管理。昨天我感觉写到了一定程度,一个小的版本已经出来了,于是就想U盘和网盘都备份一下。结果出现了下面...
- 奇!AI(人工智能)能不能反编译二进制代码为高级语言Java或者C?
-
一直很好奇某些软件的制作过程,使用的算法。因为自己实现的,写的稀烂,虽然功能达到了,但处理速度和处理效率很低下,于是也尝试使用一些反编译软件,如IDAPro软件。想看看人家怎么实现,怎么做到效果那么...
- 你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类
-
持续创作,加速成长!这是我参与「掘金日新计划·10月更文挑战」的第7天,点击查看活动详情写下这篇文章,也纯属于是一个机缘巧合,我一个非常要好的朋友程,也是刚刚踏上工作岗位。这个问题也是他踏上岗位...
- SpringBoot项目Jar包加密,防止反编译
-
场景最近项目要求部署到其他公司的服务器上,但是又不想将源码泄露出去。要求对正式环境的启动包进行安全性处理,防止客户直接通过反编译工具将代码反编译出来。方案第一种方案使用代码混淆采用proguard-m...
- 安卓移动应用代码安全加固系统设计及实现
-
安卓平台已经逐渐成为最受欢迎的移动终端操作系统,基于安卓系统的软件应用数量众多,同时安全威胁也在不断增加。介绍了Android系统的安全风险及加固的核心技术,据此提出了一种安卓应用程序的安全加固系统,...
- 代码安全之代码混淆(代码混淆器是干什么的)
-
防止核心代码泄露以及代码合并每日辛辛苦苦码的代码被轻松破解?机密核心模块被盗用?数据库地址和语句暴露?……这些都是由代码未混淆加密,从而进行泄露的我们目前DLL文件存在的风险:一、直接引用二、反编译...