Wireshark使用教程

Wireshark使用教程文章目录安装使用开始捕获以wireshark2.6.3汉化版为例安装除了路径是自定义之外,其它均默认即可。使用开始捕获菜单“捕获-选项”,设置需要捕获的网络适配器,点击“开始”。也可以在菜单“捕获-开始”、“捕获-结束”来控制开始结束。在“捕获-捕获过滤器”编辑捕获表达式在上述“捕获”菜单中进行的操作,也可以在工具栏进行,如下图捕获结果着色规则在菜单“视图-着色规则”…

大家好,又见面了,我是你们的朋友全栈君。


wireshark 2.6.3 汉化版为例

1. 安装

除了路径是自定义之外,其它均默认即可。

2. 使用技巧

  1. 点击每一行时,wireshark很智能的在记录前用标线表明了本次会话的记录范围[从三次握手到四次挥手]
    在这里插入图片描述

  2. http请求是“请求->响应”式的,需要查看对应请求的响应时,可以在包上右键,选择“追踪流(Follow TCP Stream)”在这里插入图片描述

在这里插入图片描述

  1. 错误包的产生与解决办法:参考Wireshark抓包时显示TCP校验和错误(checksum incorrect)
在Windows平台上用Ethereal抓包时发现TCP校验和错误,
但应用层的反应告诉我,这个报文的TCP校验和没问题。
 
A: 2000-03
 
网卡配置->高级->Rx Checksum Offload/Tx Checksum Offload,
很可能你的这两处设置是Enable,将之调整成Disable即可,代价是网络性能降低。
 
一般由操作系统的TCP/IP协议栈完成TCP/UDP/IP校验和的计算工作,
这两处设置成Enable之后,协议栈不再进行校验和的计算,而是由网卡自己完成。
如果在前述位置没有发现Rx Checksum Offload/Tx Checksum Offload项,
有两种可能,一种是网卡本身不支持这种功能,另一种是网卡驱动未提供配置项,后一种情形居多。

解决方法:

把网卡的属性修改一下就可以,禁用 Checksum Offload(原理是让网卡硬件自己计算校验和,而不是交给操作系统的 tcp/ip 协议栈来计算):
在这里插入图片描述

2.1. 捕获过滤器表达式

这个主要还是需要多看输入的提示,我也是靠蒙写个简单的

//表示只过滤主机10.6.161.15或者10.10.65.67的包
host 10.6.161.15 or host 10.10.65.67
//使用域名
host baidu.com

在这里插入图片描述

//表示只显示Source为10.6.161.15的
ip.src==10.6.161.15

在这里插入图片描述

2.2. 开始捕获

菜单“捕获-选项”,设置需要捕获的网络适配器,点击“开始”。也可以在菜单“捕获-开始”、“捕获-结束”来控制开始结束。在“捕获-捕获过滤器”编辑捕获表达式
在这里插入图片描述

在上述“捕获”菜单中进行的操作,也可以在工具栏进行,如下图
在这里插入图片描述

2.3. 捕获结果

双击每一行记录,可在弹出窗口中查看详细记录

在这里插入图片描述

2.3.1. 着色规则

在菜单“视图-着色规则”下查看
在这里插入图片描述

2.3.2. 数据包的大致结构

  • 第一行:数据包整体概述,
  • 第二行:链路层详细信息,主要的是双方的mac地址
  • 第三行:网络层详细信息,主要的是双方的IP地址
  • 第四行:传输层的详细信息,主要的是双方的端口号。

在这里插入图片描述
在这里插入图片描述

2.3.3. 示例

注:window查看本机ip、mac等,可在cmd下使用命令ipconfig/all

2.3.3.1. 三次握手

  1. 客户端->服务器:发送标识为SYN=1、随机产生的客户端序号seq(发送序号)
  2. 服务器->客户端:发送标识为SYN=1、ACK=1、第一步产生的客户端序号seq+1(确认序号)、随机产生的服务端序号seq
  3. 客户端->服务器:第一步产生的客户端序号seq+1(发送序号)、第二步产生的服务端序号seq+1(确认序号)、ACK=1

三次握手示意图
三次数据包

其中[SYN]意为SYN位为1(如果没有,则表示为0)。同理如果[]中有ACK,表示ACK位为1
在这里插入图片描述

客户端==》服务器
在这里插入图片描述

服务器==》客户端
在这里插入图片描述

客户端==》服务器
在这里插入图片描述

2.3.3.2. 四次挥手

摘抄自:TCP三次握手和四次挥手过程

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说”我Client端没有数据要发给你了“,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,“告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,“告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。Client端收到FIN报文后,”就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,“就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
在这里插入图片描述

四次数据包
在这里插入图片描述
数据含义同三次握手

2.3.3.3. tcp/ip数据包

标志位对应的功能:

  • URG: 紧急指针( urgent pointer)有效。
  • ACK: 确认序号有效。
  • PSH: 接收方应该尽快将这个报文段交给应用层。
  • RST: 重建连接。
  • SYN: 同步序号用来发起一个连接。
  • FIN: 发端完成发送任务。
  • 窗口大小:用于流量控制。
  • 检验和:检验和覆盖了整个的 TCP报文段: TCP首部和TCP数据,与udp相似需要计算伪首部。

tcp数据包结构及在wireshark中的位置

在这里插入图片描述
在这里插入图片描述

ip数据包:(不画了,耐心已为负值)
在这里插入图片描述

在这里插入图片描述

2.3.3.4. 使用实例

抓取财政会计行业管理系统的一些示例

点击页面中的任意一个查询
在这里插入图片描述

在这里插入图片描述

如下,将包的内容和浏览器的内容对比一下
在这里插入图片描述

在这里插入图片描述

查看响应包(注意http和tcp流的不同)
在这里插入图片描述

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148707.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 38款 流媒体服务器开源软件

    38款 流媒体服务器开源软件Flash流媒体服务器Red5Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流;录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash…更多Red5信息最近更新:Red51.0.1

  • Java实现冒泡排序详细代码

    Java实现冒泡排序详细代码冒泡排序定义冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢”浮”到数列的顶端。算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最

  • nrzi是什么编码_epc编码

    nrzi是什么编码_epc编码NRZ与NRZI编码解释RZ编码(Return-to-zeroCode),即归零编码。在 RZ 编码中,正电平代表逻辑 1,负电平代表逻辑 0,并且,每传输完一位数据,信号返回到零电平,也就是说,信号线上会出现 3 种电平:正电平、负电平、零电平:从图上就可以看出来,因为每位传输之后都要归零,所以接受者只要在信号归零后采样即可,这样就不在需要单独的时钟信号。实际上, RZ 编码就是相当于把时钟

    2022年10月30日
  • C语言数组当参数传递

    C语言数组当参数传递在学习C语言的过程中遇到数组作为参数传递的问题一维数组:#includeinttest2(inta[]){ for(inti=0;i<5;i++){ printf("%d",a[i]); }}intmain(){ inta[5]={1,2,3,4,5},*p; p=a; test2(a); }这样我们可以很顺利的在test去遍历这个

  • linux离线安装docker_Unable to locate package vim

    linux离线安装docker_Unable to locate package vim首先报错Nomodulenamedpyyaml说明没有pyyaml在线安装windowslinux:pipinstallpyyaml亲测好用离线的情况下windowsPyYaml资源可以下载.whl文件然后pip安装即可离线的情况下linuxPyYaml资源可以下载.tar.gz文件然后pip安装即可pip可以直接安装.tar.gz文件#linux版样例[do…

  • python保存文件的几种方式「建议收藏」

    python保存文件的几种方式「建议收藏」当我们获取到一些数据时,例如使用爬虫将网上的数据抓取下来时,应该怎么把数据保存为不同格式的文件呢?下面会分别介绍用python保存为txt、csv、excel甚至保存到mongodb数据库中文件的方法。保存为txt文件首先我们模拟数据是使用爬虫抓取下来的,抓取的下来的数据大致就是这样的下面使用代码保存为txt文件importrequestsfromlxmlimportetr…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号