Wireshark网络分析入门篇

简介: Wireshark网络分析入门篇

Wireshark是什么?


Wireshark是最流行的网络嗅探器之一,能在多种平台上抓取和分析网络包,比如Windows、Linux和Mac等。它的图形界面非常友好,但如果你觉得鼠标操作不够有范,也可以使用它的命令行形式——TShark。


学习Wireshark有何意义?


很显然,Wireshark并不能帮我们变成网络新贵,但它对技术上有所追求的攻城狮来说,有着金钱难以衡量的价值。用它来辅助学习,可以更深入地理解网络协议;用它来排查故障,可以更快地发现问题。假如你是团队中唯一掌握Wireshark的网络攻城狮,这个看家本领非常有助于你保持大牛地位。在同事们手足无措时,你可以用最快的速度摆平,然后平静地说一句:“问题解决了,我先去泡杯咖啡。”接下来就可以离开座位,让他们一脸崇拜地研究你满是Tshak命令的屏幕了。


Wireshark图形窗口介绍


640.jpg

WireShark 主要分为这几个界面:


1. Display Filter(显示过滤器),  用于过滤

2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。颜色不同,代表

3. Packet Details Pane(封包详细信息), 显示封包中的字段

4. Dissector Pane(16进制数据)

5. Miscellanous(地址栏,杂项)

显示过滤器


显示过滤器是在原来或者现在抓包的基础上,过滤掉其他的包,找到自己需要的数据报包。如图所示:

640.png

640.jpg

640.jpg

过滤表达式的规则


表达式规则

  1. 协议过滤 比如TCP,只显示TCP协议。
  2. IP 过滤 比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102, ip.dst==192.168.1.102, 目标地址为192.168.1.102
  3. 端口过滤 tcp.port ==80, 端口为80的 tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
  4. Http模式过滤 http.request.method=="GET", 只显示HTTP GET方法的。
  5. 逻辑运算符为 AND/ OR 常用的过滤表达式

过滤表达式                                           用途http                                                只查看HTTP协议的记录ip.src ==192.168.1.102 or ip.dst==192.168.1.102     源地址或者目标地址是192.168.1.102


封包列表


封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。你可以看到不同的协议用了不同的颜色显示。


你也可以修改这些显示颜色的规则, View ->Coloring Rules.

640.png

640.png


封包详细信息


这个面板是我们最重要的,用来查看协议中的每一个字段。


各行信息分别为:

Frame:   物理层的数据帧概况

Ethernet II: 数据链路层以太网帧头部信息

Internet Protocol Version 4: 互联网层IP包头部信息

Transmission Control Protocol:  传输层T的数据段头部信息,此处是TCP

Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

640.jpg


我们用wireshark实际分析下三次握手的过程。打开wireshark, 打开浏览器输入 http://www.cr173.com 在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream", 这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图


640.jpg

图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。


第一次握手数据包


客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。如下图

640.jpg

第二次握手的数据包


服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图

640.jpg


第三次握手的数据包


客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1,如下图:

640.jpg


就这样通过了TCP三次握手,建立了连接


Wireshark命令窗口介绍

Wireshark网络分析软件用命令窗口处理数据包的情况很少,在处理大包时,为节约资源同时也是有效地利用PC机硬件,不得不用wireshark的命令行来处理数据包,以达到预期目的。


命令行方式与wireshark图形界面等效的命令是:tshark.exe


不管是用安装版的还是绿色版的wireshark软件,只要找到安装目录,即可进行操作。


640.jpg

在命令窗口(DOS)输入dir *.exe,就会列出所有可执行文件。Tshark.exe就是wireshark的命令行文件,与窗口方式具有同等的功效(有点卖“野药”的感觉)。Tshark.exe有很多参数,可以通过命令后加-h查看帮助。

640.png


多的参数

640.jpg


命令行工具功能很强大,参数多且可组合使用。如果我们在CDN机房或核心设备上做镜像抓包时,因数据量太大,图形界面抓包,几十秒或几秒钟的时间,电脑有可能就会蓝屏,造成电脑死机,达不到我们抓包的效果,所以,这时候我们就会用到命令行进行抓包。命令行捕获最大的优点就是资源占用少,可控性强。缺点是参数繁多,不易记忆和操作。


Tshark默认情况下选择的是电脑中的第一张网卡,我们可以利用参数-D(注意大小写,参数中大小写的定义会不同)来查看。

640.png

举例:如下图

640.png


其他的一些命令的参数和用法,请参考-h帮助或相关资料研究学习。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
网络协议 Unix iOS开发
Wireshark 4.6.0 发布 - 网络协议分析器
Wireshark 4.6.0 发布 - 网络协议分析器
428 0
Wireshark 4.6.0 发布 - 网络协议分析器
|
8月前
|
人工智能 运维 API
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
370 1
|
11月前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
645 3
图卷积网络入门:数学基础与架构设计
|
11月前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
481 8
|
11月前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
3115 2
|
11月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
332 3
|
12月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
1507 0
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
1671 1