Wireshark详细介绍和TCP三次握手

jopen 6年前

一.什么是Wireshark及其发展

Wireshark(前称Ethereal)是一个网络数据包分析软件。网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据。

在过去,网络数据包分析软件是非常昂贵,或是专门属于营利用的软件,Wireshark的出现改变了这一切。在GNU GPL通用许可证的保障范围底下,用户可以以免费的代价取得软件与其代码,并拥有针对其源代码修改及定制化的权利。Wireshark是目前全世界最广泛的网络数据包分析软件之一。

 

1997年底,Gerald Combs需要一个能够追踪网络流量的工具软件作为其工作上的辅助。因此他开始撰写Ethereal软件。

Ethereal 在经过几次中断开发的事件过后,终于在1998年7月发布其第一个版本 v0.2.0。自此之后,Combs收到了来自全世界的补丁、错误回报与鼓励信件。Ethereal的发展就此开始。不久之后,Gilbert Ramirez 看到了这套软件的开发潜力并开始参予低级程序的开发。1998年10月,来自 Network Appliance 公司的 Guy Harris 在查找一套比 tcpview(另外一套网络数据包截取程序)更好的软件。于是他也开始参与Ethereal的开发工作。

1998年底,一位在教授 TCP/IP 课程的讲师 Richard Sharpe,看到了这套软件的发展潜力,而后开始参与开发与加入新协议的功能。在当时,新的通信协议的制定并不复杂,因此他开始在Ethereal上新增的数据包截取功能,几乎包含了当时所有通信协议。

自此之后,数以千计的人开始参与Ethereal的开发,多半是因为希望能让Ethereal截取特定的,尚未包含在Ethereal默认的网络协议的数据包而参予新的开发。

2006年6月,因为商目标问题,Ethereal更名为Wireshark。

 

二.Wireshark使用目的

以下是一些使用Wireshark目的的例子:

  • 网络管理员使用Wireshark来检测网络问题
  • 网络安全工程师使用Wireshark来检查信息安全相关问题
  • 开发者使用Wireshark来为新的通信协议除错
  • 普通用户使用Wireshark来学习网络协议的相关知识

 

三.Wireshark开始抓包

Wireshark详细介绍和TCP三次握手

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

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

Wireshark详细介绍和TCP三次握手

 

四.窗口介绍

Wireshark详细介绍和TCP三次握手

WireShark 主要分为这几个界面

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

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

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

4. Dissector Pane(16进制数据)

5. Miscellanous(地址栏,杂项)

 

五、Wireshark过滤

1.显示过滤

Wireshark详细介绍和TCP三次握手

 

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

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

过滤器有两种,

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

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

2.保存过滤

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

Wireshark详细介绍和TCP三次握手

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

Wireshark详细介绍和TCP三次握手

3.过滤表达式

 

表达式规则

 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

常用的过滤表达式

Wireshark详细介绍和TCP三次握手

 

六、封包的列表

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

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

Wireshark详细介绍和TCP三次握手

 

七、封包的详细信息

Frame:   物理层的数据帧概况

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

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

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

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

Wireshark对应的OSI七层模型

Wireshark详细介绍和TCP三次握手

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

Wireshark详细介绍和TCP三次握手

实例分析tcp三次握手过程

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

Wireshark详细介绍和TCP三次握手

 

打开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三次握手,建立了连接

 

转自:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

参考:http://zh.wikipedia.org/wiki/Wireshark

参考:http://blog.csdn.net/xmphoenix/article/details/6546022