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


Posted in Javascript onAugust 15, 2016

这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。

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

对我而言, wireshark 是学习网络协议最好的工具。

阅读目录

  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的官方下载网站: http://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基本介绍和学习TCP三次握手

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

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

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

Wireshark 窗口介绍

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

WireShark 主要分为这几个界面

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

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

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

4. Dissector Pane(16进制数据)

5. Miscellanous(地址栏,杂项)

Wireshark 显示过滤

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

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

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

过滤器有两种,

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

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

保存过滤

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

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

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

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

过滤表达式的规则

表达式规则

 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.

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

封包详细信息 (Packet Details Pane)

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

各行信息分别为

Frame:   物理层的数据帧概况

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

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

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

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

wireshark与对应的OSI七层模型

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

TCP包的具体内容

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

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

实例分析TCP三次握手过程

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

 三次握手过程为

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

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

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

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

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

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

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

第一次握手数据包

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

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

第二次握手的数据包

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

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

第三次握手的数据包

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

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

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

以上就是Wireshark基本介绍和学习TCP三次握手,后续继续整理相关知识,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript onmouseout 解决办法
Jul 17 Javascript
基于jQuery的左右滚动实现代码
Dec 03 Javascript
js取滚动条的尺寸的函数代码
Nov 30 Javascript
javascript实现获取字符串hash值
May 10 Javascript
JavaScript中this详解
Sep 01 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
小程序实现列表点赞功能
Nov 02 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 Javascript
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
JavaScript中removeChild 方法开发示例代码
Aug 15 #Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 #Javascript
Web安全测试之XSS实例讲解
Aug 15 #Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 #Javascript
卸载安装Node.js与npm过程详解
Aug 15 #Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
Aug 15 #Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 #Javascript
You might like
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
Yii2单元测试用法示例
2016/11/12 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
残疾人创业典型事迹
2014/02/01 职场文书
工会工作个人总结
2015/03/03 职场文书
荒岛余生观后感
2015/06/09 职场文书
同意报考公务员证明
2015/06/17 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技