Wireshark基本介绍和学习TCP三次握手

阅读 235
收藏
2017-12-11
原文链接:www.cnblogs.com
Wireshark基本介绍和学习TCP三次握手 - 小坦克 - 博客园 小坦克

专注APP, HTTP, HTTPS 抓包程序开发。 网站抓包分析
随笔 - 107  文章 - 0  评论 - 2438  博客园   首页    联系  管理   

Wireshark基本介绍和学习TCP三次握手

之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS。 这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。

记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实。有了wireshark就能截获这些网络数据包,可以清晰的看到数据包中的每一个字段。更能加深我们对网络协议的理解。
对我而言, wireshark 是学习网络协议最好的工具。

  本文版权归【小坦克】和【博客园】共有,欢迎转载,但须保留此段声明,并给出原文链接  www.cnblogs.com/tankxiao,谢谢合作

阅读目录

  1. wireshark介绍
  2. wireshark不能做的
  3. wireshark VS Fiddler
  4. 同类的其他工具
  5. 什么人会用到wireshark
  6. wireshark 开始抓包
  7. wireshark 窗口介绍
  8. wireshark 显示过滤
  9. 保存过滤
  10. 过滤表达式
  11. 封包列表(Packet List Pane)
  12. 封包详细信息 (Packet Details Pane)
  13. wireshark与对应的OSI七层模型
  14. TCP包的具体内容
  15. 实例分析TCP三次握手过程
 

wireshark介绍

wireshark的官方下载网站: www.wireshark.org/

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。

wireshark是开源软件,可以放心使用。 可以运行在Windows和Mac OS上。

 

使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。

Wireshark不能做的

为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。

 

Wireshark VS Fiddler

Fiddler是在windows上运行的程序,专门用来捕获HTTP,HTTPS的。

wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容

 

总结,如果是处理HTTP,HTTPS 还是用Fiddler,  其他协议比如TCP,UDP 就用wireshark

同类的其他工具

微软的network monitor

sniffer 

 

什么人会用到wireshark

1. 网络管理员会使用wireshark来检查网络问题

2. 软件测试工程师使用wireshark抓包,来分析自己测试的软件

3. 从事socket编程的工程师会用wireshark来调试

4. 听说,华为,中兴的大部分工程师都会用到wireshark。

 

总之跟网络相关的东西,都可能会用到wireshark.

 

wireshark 开始抓包

开始界面

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。

点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包

 

Wireshark 窗口介绍

 

WireShark 主要分为这几个界面

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

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

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

4. Dissector Pane(16进制数据)

5. Miscellanous(地址栏,杂项)

 

Wireshark 显示过滤

使用过滤是非常重要的, 初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。

过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。

过滤器有两种,

一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录

一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。 在Capture -> Capture Filters 中设置

 

保存过滤

在Filter栏上,填好Filter的表达式后,点击Save按钮, 取个名字。比如"Filter 102",

Filter栏上就多了个"Filter 102" 的按钮。

过滤表达式的规则

表达式规则

 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
   
   

 

 

 

 

 

 

 

封包列表(Packet List Pane)

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

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

 

封包详细信息 (Packet Details Pane)

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

各行信息分别为

Frame:   物理层的数据帧概况

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

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

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

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

 

wireshark与对应的OSI七层模型

TCP包的具体内容

 从下图可以看到wireshark捕获到的TCP包中的每个字段。

 

 

实例分析TCP三次握手过程

看到这, 基本上对wireshak有了初步了解, 现在我们看一个TCP三次握手的实例

 

 三次握手过程为

 

这图我都看过很多遍了, 这次我们用wireshark实际分析下三次握手的过程。

打开wireshark, 打开浏览器输入 www.cnblogs.com/tankxiao

在wireshark中输入http过滤, 然后选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream",

这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图

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

 

第一次握手数据包

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

第二次握手的数据包

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

第三次握手的数据包

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

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

 

个人广告

本人从事以下兼职: 请联系QQ:2464602531

1. 软件测试,自动化测试培训

2. 抓包程序开发, APP, HTTP, HTTPS, 网站抓包分析

3. Fiddler 工具培训

 

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

感谢您的阅读,请关注我的后续博客

posted on 2012-10-10 10:50 小坦克 阅读(244843) 评论(78) 编辑 收藏 < Prev 12
发表评论    #51楼 2013-11-20 10:50 | 硬盘很大   Market 支持(0)反对(1)    #52楼 2013-11-22 10:56 | Jasoncheng  
如上图所示
“选中GET /tankxiao HTTP/1.1的那条记录,右键然后点击"Follow TCP Stream ",”看到的顺序总是不对!不知道是哪里没设置好,望高人能指点下...支持(3)反对(0)http://pic.cnblogs.com/face/u330308.jpg?id=08195500    #53楼 2014-02-26 17:31 | zhanglingzeng   挺不错,不过弱弱问一句,看到这些包有什么用,不知道什么意思支持(0) 反对(0)http://pic.cnblogs.com/face/467653/20130704000443.png    #54楼 2014-03-13 10:57 | 丿陈浩然丶   希望能有四次挥手的详解教程啊啊。支持(0) 反对(0)    #55楼 2014-03-27 15:59 | 年轻国王   @ 水手520
那个z不是y+1支持(3) 反对(0)http://pic.cnblogs.com/face/u71441.jpg    #56楼 2014-03-28 17:21 | 要往高处走   好文,不错,收下了!支持(1) 反对(0)http://pic.cnblogs.com/face/501520/20130306091454.png    #57楼 2014-05-13 22:39 | czlelva   咨询下,如何批量导出HTTP中的Line-based text data类数据?支持(0) 反对(0)    #58楼 2014-06-22 14:09 | Journeyman   三次握手中,最后一次,Z不是在y+1啊?支持(0)反对(0)http://pic.cnblogs.com/face/511419/20130331030121.png    #59楼 2014-06-24 14:54 | lisaxue   不太会筛选出有用的信息啊?!能教教么?支持(0)反对(0)    #60楼 2014-06-24 14:56 | lisaxue   你的tcp.stream eq 5是什么意思支持(0)反对(0)    #61楼 2014-06-24 15:23 | lisaxue   三次握手的数据包在wireshark中的顺序有时是乱的吧,不是按顺序来的支持(0) 反对(0)    #62楼 2014-10-19 22:27 | seanyxie   wireshark抓包分析三次握手和四次挥手 支持(1)反对(0)    #63楼 2014-12-08 22:51 | Kiinlam   提问:我在wireshark里抓了些数据包,我能否取出某条请求出来,重发一次?或者在其他软件里发送支持(0) 反对(0)http://pic.cnblogs.com/face/u299483.jpg?id=26214314    #64楼 2014-12-10 16:35 | lanshh   非常好,谢谢支持(0)反对(0)    #65楼 2015-03-06 23:57 | tunpishuang   good.支持(0)反对(0)    #66楼 2015-03-23 14:51 | 邦邦酱好   我觉得这篇文章没有说清楚标志位SYN的变化。
当SYN=1时表示客户端想跟服务端建立链接。其实应该重点看下面这个地方中6个标志位的变化:
 支持(4)反对(0) http://pic.cnblogs.com/face/554772/20131016095555.png    #67楼 2015-03-27 14:17 | wnfight   不错,咱一个 支持(0)反对(0) http://pic.cnblogs.com/face/714875/20150116181308.png    #68楼 2015-05-04 00:27 | 登高行远   wireshar 中的“Frame”,不是对应什么物理层,而是这个数据帧的一些统计和分析信息以及wireshark自己特定的标记选项而已 支持(0) 反对(0) http://pic.cnblogs.com/face/519867/20130518173002.png    #69楼 2015-05-25 23:01 | Hubery Pang   之前的fiddler文章能不能再分享下呢? 支持(0)反对(0)    #70楼 2015-06-07 17:25 | 冇二哥   学习了 支持(0) 反对(0)    #71楼 2015-06-27 21:12 | Alpha++   感谢博主的博文!!! 支持(0)反对(0) http://pic.cnblogs.com/face/652989/20140722005122.png    #72楼 2015-09-21 20:01 | hujun1992   我用wiresshark在局域网抓包时,只能得到自己的TCP/UDP包,请问怎么才能抓到其他人发的TCP包? 支持(0) 反对(0) http://pic.cnblogs.com/face/706570/20150917223158.png    #73楼 2015-12-12 10:32 | 小龙3   请教下:Fiddle如何监控翼支付APP的内容,现在手机设置代理也无法监控。 支持(0) 反对(0)    #74楼 2016-05-25 03:14 | 猫也要做大王   扫盲班学员,来看下热闹 支持(0)反对(0)    #75楼 2016-09-07 14:57 | 小桥流水呀   这个有点看不懂,好像咱岁对我这种小白没用哈 支持(0)反对(0)    #76楼 2016-09-10 15:49 | 席凌lian   以前测试的时候用过这个东西,但也是按照用例上写的看看结果对不对,是不是连通了而已,至于怎么用于测试,获取数据包该怎么分析,获取到的数据具体怎么用于测试结果,基本上不知道,希望楼主可以结合实例分析一下,谢谢~ 支持(0)反对(0)    #77楼 2016-10-26 09:07 | bbqpure   请教个问题wireshark抓http包,有一部分http包是以tcp形式展现在wireshark的cap文件中,如果过滤器用http关键字过滤会漏掉这一部分,如果用follow tcp stream 虽然能看到完整的会话情况,但是量太大效率太低,有没有比较好的方法 支持(0)反对(0)    #78楼36978652017/5/22 13:45:55 2017-05-22 13:45 | selening_chan   Fiddler 教程 怎么看不了
能发一份到536500160@qq.com吗 支持(0) 反对(0) < Prev12 刷新评论 刷新页面返回顶部 注册用户登录后才能发表评论,请 登录注册访问网站首页。 【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】腾讯云免费实验室,1小时搭建人工智能应用
【新闻】H3 BPM体验平台全面上线
AR_1206 最新IT新闻:
· 迅雷“玩客币”更名“链克”,钱包功能14日正式实名制
· 微信支付买火车票送福利:最高优惠888元
· 微软Edge Android客户端下载量已超百万
· “游戏氪金”算赌博吗?最近各国陆续做了一些动作
· 百度AI战略背后雄心:欲重获互联网霸主地位
» 更多新闻... 阿里云C2-1208 最新知识库文章:
· 以操作系统的角度述说线程与进程
· 软件测试转型之路
· 门内门外看招聘
· 大道至简,职场上做人做事做管理
· 关于编程,你的练习是不是有效的?
» 更多知识库文章...

公告

专注APP, HTTP, HTTPS 抓包程序开发。 网站抓包分析

 

姓名:肖佳

英文名:Tank
所在位置: 上海-

本人从事专业 沪牌代拍 请联系微信:tank777888

个人简介: 10年的软件测试经验,精通各种测试方法,各种测试工具。目前兼职从事软件测试培训

访问者位置

    Loading data... 访问量: dream weaver statistics
昵称:小坦克
园龄: 6年10个月
荣誉:推荐博客
粉丝:5724
关注: 23 +加关注

我的标签

积分与排名

  • 积分 - 288998
  • 排名 - 606

最新评论

阅读排行榜

评论排行榜

推荐排行榜

Copyright ©2017 小坦克
评论