Wireshark数据抓包教程之认识捕获分析数据包
Wireshark数据抓包教程之认识捕获分析数据包
认识Wireshark捕获数据包
当我们对Wireshark主窗口各部分作用了解了,学会捕获数据了,接下来就该去认识这些捕获的数据包了。Wireshark将从网络中捕获到的二进制数据按照不同的协议包结构规范,显示在Packet Details面板中。为了帮助用户能够清楚的分析数据,本节将介绍识别数据包的方法。
在Wireshark中关于数据包的叫法有三个术语,分别是帧、包、段。下面通过分析一个数据包,来介绍这三个术语。在Wireshark中捕获的一个数据包,如图1.45所示。每个帧中的内容展开后,与图1.48显示的信息类似。

图1.48 数据包详细信息
从该界面可以看出显示了五行信息,默认这些信息是没有被展开的。各行信息如下所示:
- q Frame:物理层的数据帧概况。
- q Ethernet II:数据链路层以太网帧头部信息。
- q Internet Protocol Version 4:互联网层IP包头部信息。
- q Transmission Control Protocol:传输层的数据段头部信息,此处是TCP协议。
- q Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议。
下面分别介绍下在图1.48中,帧、包和段内展开的内容。如下所示:
(1)物理层的数据帧概况
- Frame 5: 268 bytes on wire (2144 bits), 268 bytes captured (2144 bits) on interface 0 #5号帧,线路268字节,实际捕获268字节
- Interface id: 0 #接口id
- Encapsulation type: Ethernet (1) #封装类型
- Arrival Time: Jun 11, 2015 05:12:18.469086000 中国标准时间 #捕获日期和时间
- [Time shift for this packet: 0.000000000 seconds]
- Epoch Time: 1402449138.469086000 seconds
- [Time delta from previous captured frame: 0.025257000 seconds] #此包与前一包的时间间隔
- [Time since reference or first frame: 0.537138000 seconds] #此包与第一帧的时间间隔
- Frame Number: 5 #帧序号
- Frame Length: 268 bytes (2144 bits) #帧长度
- Capture Length: 268 bytes (2144 bits) #捕获长度
- [Frame is marked: False] #此帧是否做了标记:否
- [Frame is ignored: False] #此帧是否被忽略:否
- [Protocols in frame: eth:ip:tcp:http] #帧内封装的协议层次结构
- [Number of per-protocol-data: 2] #
- [Hypertext Transfer Protocol, key 0]
- [Transmission Control Protocol, key 0]
- [Coloring Rule Name: HTTP] #着色标记的协议名称
- [Coloring Rule String: http || tcp.port == 80] #着色规则显示的字符串
(2)数据链路层以太网帧头部信息
- Ethernet II, Src: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89), Dst: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0)
- Destination: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0) #目标MAC地址
- Source: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89) #源MAC地址
- Type: IP (0x0800)
(3)互联网层IP包头部信息
- Internet Protocol Version 4, Src: 192.168.0.104 (192.168.0.104), Dst: 61.182.140.146 (61.182.140.146)
- Version: 4 #互联网协议IPv4
- Header length: 20 bytes #IP包头部长度
- Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) #差分服务字段
- Total Length: 254 #IP包的总长度
- Identification: 0x5bb5 (23477) #标志字段
- Flags: 0x02 (Don't Fragment) #标记字段
- Fragment offset: 0 #分的偏移量
- Time to live: 64 #生存期TTL
- Protocol: TCP (6) #此包内封装的上层协议为TCP
- Header checksum: 0x52ec [validation disabled] #头部数据的校验和
- Source: 192.168.0.104 (192.168.0.104) #源IP地址
- Destination: 61.182.140.146 (61.182.140.146) #目标IP地址
(4)传输层TCP数据段头部信息
- Transmission Control Protocol, Src Port: 51833 (51833), Dst Port: http (80), Seq: 1, Ack: 1, Len: 214
- Source port: 51833 (51833) #源端口号
- Destination port: http (80) #目标端口号
- Sequence number: 1 (relative sequence number) #序列号(相对序列号)
- [Next sequence number: 215 (relative sequence number)] #下一个序列号
- Acknowledgment number: 1 (relative ack number) #确认序列号
- Header length: 20 bytes #头部长度
- Flags: 0x018 (PSH, ACK) #TCP标记字段
- Window size value: 64800 #流量控制的窗口大小
- Checksum: 0x677e [validation disabled] #TCP数据段的校验和
Wireshark分析数据包
在Wireshark中的数据包都可以称为是网络数据。每个网络都有许多不同的应用程序和不同的网络涉及。但是一些常见的包中,通常都会包括一些登录程序和网络浏览会话。本节以访问Web浏览器为例将介绍分析网络数据的方法。
通常在访问Web服务器过程中,会涉及到DNS、TCP、HTTP三种协议。由于此过程中来回发送的数据包较为复杂,所以下面将介绍分析Web浏览数据。
【实例1-3】分析访问Web浏览数据。具体操作步骤如下所示:
(1)捕获访问www.qq.com网站的数据包,并保存该文件名为http-wireshar.pcapng。本例中捕获的文件如图1.49所示。

图1.49 http-wireshar.pcapng捕获文件
(2)接下来通过该捕获文件中的数据,分析访问Web的整个过程。在该捕获过程中,将包含DNS请求、响应、TCP三次握手等数据。如图1.50所示,在该界面显示了在访问网站之间DNS解析过程。

图1.50 DNS解析
(3)在该界面31帧,是DNS将www.qq.com解析为一个IP地址的数据包(被称为一个“A”记录)。32帧表示返回一个与主机名相关的IP地址的DNS响应包。如果客户端支持IPv4和IPv6,在该界面将会看到查找一个IPv6地址(被称为“AAAA”记录)。此时,DNS服务器将响应一个IPv6地址或混杂的信息。
说明:31帧是客户端请求百度,通过DNS服务器解析IP地址的过程。标识为“A”记录。
- 32帧是DNS服务器回应客户端请求的过程。标识为response.
(4)如图1.51所示,在该界面看客户端和服务器之间TCP三次握手(33、34、35帧)和客户端请求的GET主页面(36帧)。然后服务器收到请求(37帧)并发送响应包(38帧)。
说明:33帧是客户端向服务器发送TCP请求建立连接。标识为SYN。
- 34帧是服务器得到请求后向客户端回应确认包的过程。标识为SYN,ACK。
- 35帧是客户端回应服务器发送确认包的过程,将于服务器建立连接。标识为ACK。
- 36帧是客户端向服务器发送HTTP请求内容的过程。标识为GET。
- 37帧是服务器相应客户端请求的过程,收到请求。标识为ACK。
- 38帧是服务器向客户端回应内容的过程。

图1.51 TCP三次握手
(5)当客户端从相同的服务器上再次请求访问另一个链接时,将会再次看到一个GET数据包(1909帧),如图1.52所示。

图1.52 请求另一个元素
此外,如果链接另一个Web站点时,客户端将再次对下一个站点进行DNS查询(156、157帧),TCP三次握手(158、159、160帧)。如图1.53所示。

图1.53 请求下一个站点
本文选自:Wireshark数据抓包基础教程大学霸内部资料,转载请注明出处,尊重技术尊重IT人!
Wireshark数据抓包教程之认识捕获分析数据包的更多相关文章
- 使用winpcap多线程抓包,以及简单的分析数据包
刚开始使用winpcap数据包的时候,我在抓包的时候使用了 pcap_loop(adhandle, 0, packet_handler, NULL); 这个回调函数进行抓包.同时在回调函数中分析IP地 ...
- 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上
Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...
- 使用wireshark捕获SSL/TLS包并分析
原创博客,转载请注出处! TLS运作方式如下图:
- 【Python入门只需20分钟】从安装到数据抓取、存储原来这么简单
基于大众对Python的大肆吹捧和赞赏,作为一名Java从业人员,我本着批判与好奇的心态买了本python方面的书<毫无障碍学Python>.仅仅看了书前面一小部分的我......决定做一 ...
- python-requests 简单实现数据抓取
安装包: requests,lxmlrequest包用于进行数据抓取,lxml用来进行数据解析对于对网页内容的处理,由于html本身并非如数据库一样为结构化的查询所见即所得,所以需要对网页的内容进行分 ...
- Python爬虫工程师必学——App数据抓取实战 ✌✌
Python爬虫工程师必学——App数据抓取实战 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统 ...
- Python爬虫教程-18-页面解析和数据提取
本篇针对的数据是已经存在在页面上的数据,不包括动态生成的数据,今天是对HTML中提取对我们有用的数据,去除无用的数据 Python爬虫教程-18-页面解析和数据提取 结构化数据:先有的结构,再谈数据 ...
- 65、Spark Streaming:数据接收原理剖析与源码分析
一.数据接收原理 二.源码分析 入口包org.apache.spark.streaming.receiver下ReceiverSupervisorImpl类的onStart()方法 ### overr ...
- Wireshark数据抓包教程之安装Wireshark
Wireshark数据抓包教程之安装Wireshark 安装Wireshark 通过上一节的学习可以根据自己的操作系统来下载安装Wireshark了.本书中已开发版1.99.7(中文版)为主,下面介绍 ...
随机推荐
- C语言的内存对齐
从一个例子开始 象下面这样定义的结构体占几个字节? typedef struct{ char a; int i; } Sample; char占1个字节,int占4个字节,答案是5个字节? 错了.如果 ...
- JS 数组 foreach 和 map
本文地址:http://www.cnblogs.com/veinyin/p/8794677.html foreach 和 map 都是数组的迭代方法,对数组的每一项执行给定函数,不会改变原数组. 两 ...
- postman pre-request-script 操作方法记录
上代码----自己参考下就明白了 例子1:自动登陆获取token let chatHost,chatName,chatPassword;//设置环境变量 if (pm.environment.get( ...
- 【leetcode 简单】 第一百零六题 压缩字符串
给定一组字符,使用原地算法将其压缩. 压缩后的长度必须始终小于或等于原数组长度. 数组的每个元素应该是长度为1 的字符(不是 int 整数类型). 在完成原地修改输入数组后,返回数组的新长度. 进阶: ...
- c语言学习笔记.链表.
链表: 链表单个节点的数据结构.链表的实现主要依靠结构体和指针. 头指针(head)指向链表的第一个节点,然后第一个节点中的指针指向下一个节点,然后依次指到最后一个节点,这样就构成了一条链表. str ...
- 2016.07.13-map的使用(以leetcode1-Two Sum为例)
map的使用 1.unordered_map和map的区别 2.如何用 3.for (int a : nums1) 4.to_string() 5.map的应用 1.unordered_map和map ...
- haproxy代理https配置方法【转】
记得在之前的一篇文章中介绍了nginx反向代理https的方法,今天这里介绍下haproxy代理https的方法: haproxy代理https有两种方式:1)haproxy服务器本身提供ssl证书, ...
- MVVM模式用依赖注入的方式配置ViewModel并注册消息
最初的想法 这次主要讨论下给View指定ViewModel的事情.一般来说给View指定ViewModel常用的方式有两种,一种是在View的后台代码中写DataContext = new ViewM ...
- NuGet套件还原步骤(以vs2012为例)
下载别人的范例,出现由于Nuget套件不存在而无法启动时: 效果如下图: 步骤如下: 1.点击 项目->启用NuGet程序包还原 2.点击下图中的是 3.点击下图中的确定 4.效果如图: . 5 ...
- Java不为人知的小秘密
Java中的main方法必须有一个外壳类,而且必须是静态的! Java中的所有函数都属于某个类的方法,所以main方法也不例外,必须放在一个类中才能编译运行. 例如: public class tex ...