wireshark初学者使用
介绍
Wireshark是一款网络封包分析软件,截取网络封包,显示其封包的详细信息。日常工作中用的比较多。在使用wireshark之前须了解常用的网络协议。如:tcp,http,ip,udp等。(其实这篇文章是用来给应届生培训的,入门级简单使用),以下图都是从网上找的,感觉很有用
一、wireshark的安装
下载地址:http://www.wireshark.org/(官方网站有windows64位和32位的下载包)
安装简单,默认选项,直接下一步下一步就可以。
wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,所以在开始抓包之前需要先选择网卡,上图红色框中。
二、抓包过程
1、Capture Filter:捕获过滤器,写抓包规则,用于决定将什么样的信息记录在捕捉结果中,需在捕捉前设置。
语法:protocol+direction+host(s)+value+logical operation 即:
协议+src/dst+net/port/host+value+not/and/or
例:ip src host 192.168.31.231 捕捉来源IP为192.168.31.231的封包
tcp dst port 3182 捕捉目的端口为3182的tcp封包
2、Display Filter:显示过滤器。在捕捉结果中查找封包。
语法:protocol.string1.string2+comparison operator+value+logical operations+other expression
即:协议.协议的子类+比较运算符+value+逻辑运算符
例:snmp||dns||icmp 显示snmp或者dns或者icmp的封包
Ip.addre==192.168.31.132 显示来源或目的ip为192.168.31.132的封包
可参照链接:https://www.cnblogs.com/bigben0123/p/5019078.html使用
逻辑运算符:
英文 |
C语言 |
含义 |
and |
&& |
与 |
or |
|| |
或 |
xor |
^^ |
异或 |
not |
! |
非 |
比较运算符:
英文 |
C语言 |
含义 |
eq |
== |
等于 |
he |
!= |
不等于 |
gt |
> |
大于 |
it |
< |
小于 |
ge |
>= |
大于等于 |
le |
<= |
小于等于 |
点击Expression可以查看支持哪些协议和协议的子类。
三、包分析
1、窗口介绍:
封包详细信息面板介绍:该模块是按照网络层协议来展示
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
①第一层物理层的数据帧概况
Frame 1 (62 bytes on wire, 62 bytes captured) 1号帧,线路62字节,实际捕获62字节
Arrival Time: Jan 21, 2018 15:17:33.910261000 捕获日期和时间
[Time delta from previous packet:0.00000 seconds]此包与前一包的时间间隔
[Time since reference or first frame: 0.00 seconds]此包与第1帧的间隔时间
Frame Number: 1 帧序号
Packet Length: 62 bytes 帧长度
Capture Length: 62 bytes 捕获长度
[Frame is marked: False] 此帧是否做了标记:否
[Protocols in frame: eth:ip:tcp] 帧内封装的协议层次结构
[Coloring Rule Name: HTTP] 用不同颜色染色标记的协议名称:HTTP
[Coloring Rule String: http || tcp.port == 80] 染色显示规则的字符串:
② 第二层数据链路层以太网帧头部信息
Ethernet II, Src: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61), Dst: Jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a) 以太网协议版本II,源地址:厂名_序号(网卡地址),目的:厂名_序号(网卡地址)
Destination: Jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a) 目的:厂名_序号(网卡地址)
Source: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61) 源:厂名_序号(网卡地址)
Type: IP (0x0800) 帧内封装的上层协议类型为IP(十六进制码0800)
③第三层网层IP包头部信息
Internet Protocol, Src: 202.203.44.225 (202.203.44.225), Dst: 202.203.208.32 (202.203.208.32) 互联网协议,源IP地址,目的IP地址
Version: 4 互联网协议IPv4
Header length: 20 bytes IP包头部长度
Differentiated Services Field:0x00(DSCP 0x00:Default;ECN:0x00)差分服务字段
Total Length: 48 IP包的总长度
Identification:0x8360 (33632) 标志字段
Flags: 标记字段(在路由传输时,是否允许将此IP包分段
Fragment offset: 0 分段偏移量(将一个IP包分段后传输时,本段的标识)
Time to live :128 生存期TTL
Protocol: TCP (0x06) 此包内封装的上层协议为TCP
Header checksum: 0xe4ce [correct] 头部数据的校验和
Source: 202.203.44.225 (202.203.44.225) 源IP地址
Destination: 202.203.208.32 (202.203.208.32) 目的IP地址
④传输层TCP数据段头部信息
Transmission Control Protocol, Src Port: 2764 (2764), Dst Port: http (80), Seq: 0, Len: 0 传输控制协议TCP的内容
Source port: 2764 (2764) 源端口名称(端口号)
Destination port: http (80) 目的端口名http(端口号80)
Sequence number: 0 (relative sequence number) 序列号(相对序列号)
Header length: 28bytes 头部长度
Flags: 0x02 (SYN) TCP标记字段(本字段是SYN,是请求建立TCP连接)
Window size: 65535 流量控制的窗口大小
Checksum: 0xf73b [correct] TCP数据段的校验和
Options: (8bytes) 可选项
例:tcp3次握手抓包分析
Tcp连接的建立:1、客户端向服务器申请打开一个端口,用SYN=1 seq=X的tcp报文
2、服务器发回一个ACK=x+1 SYN=1 seq=Y的报文通知客户端请求报文收到
3、客户端收到确认报文后向服务器再次发出确认报文,ACK=Y+1 seq=Z,连接建立成功
注: X,Y,Z为序列号
抓包:下图圈起来的为一个完整的tcp3次握手
第一次握手:标志位为SYN,发送序列号seq=0
第二次握手:标志位为:SYN,ACK 确认序号seq=0 ack=1
第三次握手:标志位为:ACK 确认序号与发送序号都为1 连接建立
可在Statistics-Flow Graph-TCP flow查看TCP数据流,分析确认号与序列号的变化
四、IP协议头结构
4位版本号:IP协议(IPv4)版本号位4
4位头部长度:标识头部有多少个4字节,即最大共15*4个字节
8位服务类型:包含一个4位优先权字段:最小延时,最大吞吐量,最高可靠性和最小费用。
16位总长度:表示整个IP数据报的长度,最大表示65535,但由于MTU限制,一般无法到达这个值。
16位标识:唯一的标识数据报。系统采用加1的式边发送边赋值。
3位标识(保留,DF禁止分片,MF更多分片):所以这个标志是为分片存在,DF设置时禁止分片所以如果数据报太大则发送失败。MF设置时,如果产生分片,除了最后一个分片,其他此片置1。
13位分片偏移:分片相对原始IP数据报开始处的偏移。
8位生存时间(TTL):数据报到达目的地之前允许经过的路由跳跳数。跳一下减1,得0丢弃。
8位协议:用来区分上层协议(ICMP为1,TCP为6,UDP为17)。
16位头部校验和:仅以CRC算法检验数据报头部在传输过程中是否损坏。
32位源端口IP地址和目的端口地址很明白。
选项(可变长):记录路由,告诉途径得所有路由把IP填进来。 时间戳,告诉每个路由器都将数据报被转发的时间传进来。松散路由选择,指定一个路由器IP地址列表,必须按这个表发送,严格路由选择,数据报经过路由表。
注:1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit) IP头长20B=20byte
四、TCP协议头结构
16位源端口号和16位目的端口号。
32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号,通过这个来确认发送的数据有序,比如现在序列号为1000,发送了1000,下一个序列号就是2000。
32位确认号:用来响应TCP报文段,给收到的TCP报文段的序号加1,三握时还要携带自己的序号。
4位头部长度:标识该TCP头部有多少个4字节,共表示最长15*4=60字节。同IP头部。
6位保留。6位标志。URG(紧急指针是否有效)ACK(表示确认号是否有效)PSH(提示接收端应用程序应该立即从TCP接收缓冲区读走数据)RST(表示要求对方重新建立连接)SYN(表示请求建立一个连接)FIN(表示通知对方本端要关闭连接)
16位窗口大小:TCP流量控制的一个手段,用来告诉对端TCP缓冲区还能容纳多少字节。
16位校验和:由发送端填充,接收端对报文段执行CRC算法以检验TCP报文段在传输中是否损坏。
16位紧急指针:一个正的偏移量,它和序号段的值相加表示最后一个紧急数据的下一字节的序号。
Stream index:40 是根据ip端口 目的和源转换过来的索引
到此:这篇文章就算结束了,相对来说这篇文章包含内容很多,最重要的在于通过分析数据包,进行TCP/IP协议的学习,理解网络层等。作者能力有限,技术无限,学习不止于眼前的资料,在于扩展。。。
wireshark初学者使用的更多相关文章
- 网络抓包wireshark(转)
转自 网络抓包wireshark 抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经 ...
- Wireshark基本介绍和学习TCP三次握手
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- 网络抓包wireshark
抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshar ...
- 【学习笔记】Wireshark的用法
计算机网络课上,需要我们灵活运用网络协议分析仪wireshark,最近一直在看,感觉有点难,并不是软件本身操作难,而是看懂一大群包的含义难,这个难主要也因为它是全英文的~~.. 好了,大致总结一下,基 ...
- wireshark安装
原文链接地址:http://blog.csdn.net/holandstone/article/details/47026213 Wireshark下载地址:https://www.wireshark ...
- wireshark怎么抓包、wireshark抓包详细图文教程
wireshark怎么抓包.wireshark抓包详细图文教程 作者:佚名 来源:本站整理 发布时间:2013-05-02 19:56:27 本日:53 本周:675 本月:926 总数:3749 ...
- WireShark抓包过程
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了. 为了安全考虑 ...
- tcp抓包 Wireshark 使用
fidder主要是针对http(s)协议进行抓包分析的,所以类似wireshark/tcpdump这种工作在tcp/ip层上的抓包工具不太一样,这种工具一般在chrome/firefox的开发者工具下 ...
- Wireshark 网络抓包工具Wireshark的使用
阅读目录 wireshark介绍 wireshark不能做的 wireshark VS Fiddler 同类的其他工具 什么人会用到wireshark wireshark 开始抓包 wireshark ...
随机推荐
- 简明python教程八----输入/输出
通过创建一个file类的对象来打开一个文件,分别使用file类的read.readline或write方法来读写文件. 最后调用一个close方法来告诉Python我们完成了对文件的使用. poem= ...
- 爬虫——请求库之requests
阅读目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,reque ...
- android解决setOnItemClickListener没有响应
今天遇到一种情况,抽屉式导航栏里的listView的点击事件没有响应点击事件. 查看了下,原来是因为抽屉式导航栏的fragment声明,放在了内容fragment之前,导致点击动作被内容fragmen ...
- 使用Spring Session和Redis解决分布式Session跨域共享问题
http://blog.csdn.net/xlgen157387/article/details/57406162 使用Spring Session和Redis解决分布式Session跨域共享问题
- LNMP环境简单教程
一:LNMP可以进行简单优化,主要2方面.NGINX和PHP进程数,分别是以下2个文件: 1. /usr/local/nginx/conf/nginx.conf2. /usr/local/php/et ...
- Minor GC和Full GC区别(转)
http://blog.csdn.net/u010796790/article/details/52213708 概念: 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Ja ...
- php项目代码 编码格式不对会大范围报错
php项目代码 编码格式不对会大范围报错
- HDU2189 来生一起走
好久没发博客了,最近遇到以下奇葩错误,不明觉厉,忍不住发一篇 /*母函数,因为要求的是素数,那么先打一个素数表,所有的因子都是素数构成 但是遇到一个奇葩事,当num初值取1,结果就出不来,运行了好久 ...
- 吉哥系列故事——完美队形I
/*hud4512 dp[i]表示当前以下标i结束的最长公共上升子序列. 我们让第一个序列为原序列,第二个序列为原系列的反向. 则,也就是说,第二个序列的顺序为原序列的下标[n-1,0],设为j 当j ...
- 【分库分表】sharding-jdbc—分片策略
一.分片策略 Sharding-JDBC认为对于分片策略存有两种维度: 数据源分片策略(DatabaseShardingStrategy):数据被分配的目标数据源 表分片策略(TableShardin ...