抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)
功能使用的详细介绍
wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP,UDP,等网络协议包。注:wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
一、开始界面
开始界面,如图1所示:

图1(wireshark开始界面)
点击Caputre->Interfaces,出现图2所示对话框,选择需要捕获网络包的网卡,点击start按钮开始抓包。
注:如果点击interfaces时弹出提示如下:“There are no interfaces on which a capture can be done.” ->解决方法:用管理员身份运行即可
图2(capture interfaces)
二、窗口界面介绍
如图3所示,是抓包后的窗口界面及自己所添加的界面描述:

图3(wireshark窗口)
1、Filter(过滤规则介绍)
使用过滤是非常重要的,在捕获的数据中会有大量的冗余信息,所以过滤功能会帮我们过滤掉不符合条件的包,提高我们的分析效率。
过滤器有两种:
1)显示过滤器,就是图3中的Filter,用来过滤在捕获的记录中找到所需要的记录,过滤后,可以点击save按钮,然后在filter栏上就多了个刚刚保存的数据按钮;
比如:
tcp->只显示TCP协议的记录;
http->只看HTTP协议的记录;
ip.src ==192.168.1.102 ->显示源地址为192.168.1.102的记录;
ip.dst==192.168.1.102 ->目标地址为192.168.1.10的记录;
ip.addr == 42.121.252.58 ->只显示与某主机的通信;
tcp.port ==80->端口为80的;
tcp.srcport == 80 ->只显示TCP协议的源端口为80的;
http.request.method=="GET" ->只显示HTTP GET方法的;
eth.type == 0x806->只显示ARP报文,这个字段的值表示是ARP报文,如果是ip报文此值为0x8000
注:Type后面的值记不住的话,可以在Expression中选择,如图4所示:

图4(expression设置)
2)捕获过滤器(Capture -> Capture Filters),用来过滤捕获的封包,以免捕获太多的记录。
2、封包列表(Packet List Pane)
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 可以看到不同的协议用了不同的颜色显示,当然也可以在View ->Coloring Rules中修改显示颜色的规则。
3、封包详细信息(Packet Details Pane)
这是最重要的信息,用来查看协议中的每一个字段。而OSI七层模型分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
在封包信息中,每行对应的含义及在OSI模型中的对应关系如下:
Frame: 物理层的数据帧概况 ->对应OSI七层模型中的【物理层】
Ethernet II: 数据链路层以太网帧头部信息 ->对应OSI七层模型中的【数据链路层】
Internet Protocol Version 4: 互联网层IP包头部信息 ->对应OSI七层模型中的【网络层】
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP ->对应OSI七层模型中的【传输层】
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议 ->对应OSI七层模型中的【应用层】
每层的封包详细含义如下:
下面的封包数据解析来源于博客:https://my.oschina.net/u/1585857/blog/479306
(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数据段的校验和
结合抓包数据分析TCP三次握手过程
1、首先要清楚TCP三次握手过程,如图5所示:

图5(TCP三次握手过程)
百度百科解释TCP三次握手过程如下:
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN SENT状态,等待服务器确认;SYN:即是同步序列编号(Synchronize Sequence Numbers);
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN RECV状态;
图6(TCP包的具体内容)
3、下面用实例讲下wireshark中的tcp三次握手过程:
1)打开wireshark后,在浏览器输入访问地址:http://www.cnblogs.com/Chilam007/,wireshark自动捕获数据包,然后过滤自己需要分析的数据,这里是过滤与主机通信的记录,
过滤规则为:ip.addr == 116.211.169.93 ,过滤后的数据如图7所示

图7(过滤后的数据包显示,注:这里不知道为什么数据包是重复的)
574帧是客户端向服务器发送TCP请求建立连接。标识为SYN。
- 619帧是服务器得到请求后向客户端回应确认包的过程。标识为SYN,ACK。
620帧是客户端回应服务器发送确认包的过程,将于服务器建立连接。标识为ACK。
663帧是客户端向服务器发送HTTP请求内容的过程。标识为GET。
667帧是服务器相应客户端请求的过程,收到请求。标识为ACK。
674帧是服务器向客户端回应内容的过程。
2)TCP三次握手分析:
第一次握手数据包,客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接,如图8所示

图8(第一次握手)
第二次握手的数据包,服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1,如图9所示

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

图10(第三次握手)
以上就是 wireshark中的tcp三次握手过程。
抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)的更多相关文章
- Wireshark基本介绍和TCP三次握手
转自:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS. ...
- Wireshark抓包介绍和TCP三次握手分析
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- Wireshark 网络抓包工具Wireshark的使用
阅读目录 wireshark介绍 wireshark不能做的 wireshark VS Fiddler 同类的其他工具 什么人会用到wireshark wireshark 开始抓包 wireshark ...
- 抓包工具Wireshark过滤器
抓包工具WireShark分为两种过滤器: 捕捉过滤器(CaptureFilters) 显示过滤器(DisplayFilters) 捕捉过虑器语法: Protocol Direction Host ...
- socket和抓包工具wireshark
socket和抓包工具wireshark 最近在学习Python代码中的socket和抓包工具wireshark,故又将socket等概念又学习了一遍,温故而知新: Python代码如下: serve ...
- WireShark简单使用以及TCP三次握手
最近一直在用C#编写服务器端的程序,苦于一直找不到合适的方法来测试网络程序,这篇文章很好的解释了网络程序的底层实现. WireShark是最好的学习网络协议最好的工具. wireshark介绍 wir ...
- 网络抓包工具wireshark and tcpdump 及其实现基于的libpcap
最近无意中看到博客园中一篇介绍wireshark的文章,写得不错,它简单清楚介绍了wireshark的使用 简介 wireshark以前叫做Ethereal, 在大学时候的网络课程中就常看到它,它是世 ...
- 抓包工具Wireshark的使用
WireShark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息. WireShark界面简介 启动WireShark的界面如下: 选择网卡 wireshar ...
- 软件测试必须掌握的抓包工具Wireshark,你会了么?
作为软件测试工程师,大家在工作中肯定经常会用到各种抓包工具来辅助测试,比如浏览器自带的抓包工具-F12,方便又快捷:比如时下特别流行的Fiddler工具,使用各种web和APP测试的各种场景的抓包分析 ...
随机推荐
- ASP.NET MVC4 微信公众号开发之网页授权(二):通过公众号AppID(应用ID)和AppSecret(应用密钥)取得网页授权openid
ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境 通过了上一篇文章我们已经搭建好了基础开发大环境,现在打开开发环境这里我用的是 vs2013,通过如下方式: 拼接请求链接重定向到 ...
- iOS 2017年, 上传审核被拒绝.到奔溃
2017年,苹果并没有因为新年的气氛而对CP们"网开一面".频繁锁榜.调整排名规则以及关键词覆盖算法--不断抛出的大动作,让CP们叫苦不迭.且从1月初开始,苹果还进一步加强了对应用 ...
- MySQL 事务与锁机制
下表展示了本人安装的MariaDB(10.1.19,MySQL的分支)所支持的所有存储引擎概况,其中支持事务的有InnoDB.SEQUENCE,另外InnoDB还支持XA事务,MyISAM不支持事务. ...
- [ SharePoint ADFS 开发部署系列 (一)]
前言 本文完全原创,转载请说明出处,希望对大家有用. 随着企业信息化建设逐渐成熟,基于微软体系的企业内部系统架构在众多企业中得到应用,随之而来的用户统一身份认证(SSO)问题成为企业IT部门急需解决的 ...
- [bug] Cannot proceed because system tables used by Event Scheduler were found damaged at server start
本地:mac 10.12.3 mysql 5.6 远程:linux 7.3 mysql 5.7.18. (远程数据库yum安装,又5.6升级到5.7) 步骤:从本地数据库导出数据到远程数据库 ...
- python中str的find()
今天学习语法的时候发现字符串自带函数find和操作符in功能十分近似,几乎一模一样 if 'a' in name: print 'Yes, it contains the string &quo ...
- 关于制作C语言头文件的思考
我们接触的第一个c语言代码是这个: #include<stdio.h> main() { printf("Hello World"); } 这是最简单的c代码,然而,它 ...
- 玩转mongodb(九):通过log4jmongo来实现分布式系统的日志统一管理
背景 在分布式系统中,我们有多个web app,这些web app可能分别部署在不同的物理服务器上,并且有各自的日志输出.当生产问题来临时,很多时候都需要去各个日志文件中查找可能的异常,相当耗费人力. ...
- c#无限循环线程如何正确退出
c#无限循环线程如何正确退出 在主程序将要结束时,迅速正确退出无限循环执行的子线程.一般子线程循环执行会有一个指定的周期, 在子线程等待(或者睡眠)时,无法唤醒退出,尤其在执行周期较长时,子线程无法即 ...
- .NET面试题系列[17] - 多线程概念(2)
线程概念 线程和进程的区别 进程是应用程序的一个实例要使用的资源的一个集合.进程通过虚拟内存地址空间进行隔离,确保各个进程之间不会相互影响.同一个进程中的各个线程之间共享进程拥有的所有资源. 线程是系 ...