辽宁工业大学
开放项目论文
题目 基于Wireshark软件对TCP/IP体系结构的研究
院(系)专业 班
学生姓名 学 号 指导教师
结题日期:2014年5月 27 日
1. 基于Wireshark软件对TCP/IP体系的研究
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换
在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。
网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识。
Wireshark不是入侵侦测系统(Intrusion Detection System,IDS)。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。Wireshark不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。 Wireshark本身也不会送出封包至网络上。发展简史1997年底,GeraldCombs需要一个能够追踪网络流量的工具软件。
作为其工作上的辅助。因此他开始撰写Ethereal软件。Ethereal在经过几次中断开发的事件过后,终于在1998年7月释出其第一个版本v0.2.0。自此之后,Combs收到了来自全世界的修补程式、错误回报与鼓励信件。Ethereal的发展就此开始。不久之后,GilbertRamirez看到了这套软件的开发潜力并开始参予低阶程式的开发。1998年10月,来自NetworkAppliance公司的GuyHarris在寻找一套比tcpview(另外一套网络封包撷取程式)更好的软件。于是他也开始参与Ethereal的开发工作。1998年底,一位在教授TCP/IP课程的讲师RichardSharpe,看到了这套软件的发展潜力,而后开始参与开发与加入新协定的功能。在当时,新的通讯协定的制定并不复杂,因此他开始在Ethereal上新增的封包撷取功能,几乎包含了当时所有通讯协定。
自此之后,数以千计的人开始参与Ethereal的开发,多半是因为希望能让Ethereal撷取特定的,尚未包含在Ethereal默认的网络协定的封包而参予新的开发。2006年6月,因为商标的问题,Ethereal更名为Wireshark。
1
2.实验步骤及TCP协议分析
一、实验目的
1.掌握Wireshark软件的安装、基本配置方法。 2.掌握利用Wireshark具抓取各种数据包的方法。 3.掌握Ping命令、tracert命令的原理及使用。
4.了解IP、TCP、UDP、SMTP、ARP、FTP、ICMP、HTTP、DNS等重要的网络协议的工作过程。
二、实验内容
1. 通过对截获的帧进行分析,验证Ethereal V2标准和IEEEE 802.3标准规定的各层帧结构,初步了解TCP/IP 的主要协议和协议的层次结构。
2. 通过在位于不同网段或同一网段的主机之间执行ping命令、tracert命令,截获报文,分析报文结构,并分析ARP协议的解析过程。
3. 选取自己感兴趣的协议或某一通信过程截获报文,并进行相应分析。 三﹑利用Ethereal捕获分组:
步骤1 启动Wireshark桌面双击图标 ,启动Ethereal/Wireshark。 步骤2 对Capture Options各个选项设置。
Interface:以太网接口混杂模式下捕获分组,没有指定捕获规则,没有指定捕获文件,没有指定实时更新分组Name Resolution全部选择。
步骤3 打开网络浏览器,并键入网站的URL地址。本次选择www.baidu.com。按下ENTER键后。点击Start按钮开始抓包。
TCP连接建立:TCP的连接建立过程又称为TCP三次握手。首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;接收方主机在收到这个请求后向送方主机回复一个同步/确认(SYN/ACK)应答;发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立;
TCP数据传送:TCP是一种可靠传输的协议,它在传输的过程中使用序列号和确认号来跟踪数据的接收情况;在传输过程中,如果在重传超时时间内没有收到接收方主机对某数据包的确认回复,发送方主机就认为此数据包丢失,并再次发送这个数据包给接收方,这称为TCP重传;TCP并不总是在接收到数据后立即对其进行确认,它允许主机在接收数据的同时发送自己的确认信息给对方;TCP是可靠传输的协议,它提供校验和计算来实现数据在传输过程中的完整性。
2
步骤4 点击Capture from… 对话框中Stop按钮结束捕获 步骤5 分析TCP协议 第一次握手:
TCP连接释放:发送方主机和目的主机建立TCP连接并完成数据传输后,会发送一个将结束标记置1的数据包,然后经过四次握手释放本次连接
3
图2.2 第一次握手捕获记录图
序号: 0 确认号: 0 数据偏移: 32 URG: 0 ACK: 0 PSH: 0 RST: 0 SYN: 1 FIN: 0 窗口: 32767
若只抓取第一次握手的数据包,则显示过滤器的规则为 tcp.flags.syn == 1 and tcp.flags.ack == 0 显示包含TCP SYN并且不包含ACK标志的封包。
第二次握手:
4
图2.3 第二次握手
序号: 0 确认号: 0 数据偏移: 32 URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 0 FIN: 0 窗口: 65535
若只抓取第二次握手的数据包,则显示过滤器的规则为:tcp.flags.fin == 1 and tcp.flags.ack == 1 显示包含TCP FIN和ACK标志的封包。 第三次握手:
5
图2.4三次握手
序号: 1 确认号: 1 数据偏移: 20 URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 0 FIN: 0 窗口: 32767
三次握手之后,客户端要请求服务器传送数据。请求数据如下。
第一次请求数据:
6
图2.5 第四次握手
序号: 0 确认号: 1 数据偏移: 20 URG: 0 ACK: 0 PSH: 1 RST: 0 SYN: 0 FIN: 0 窗口: 32767
请求数据后,进行恢复数据,结果如下。 第一次回复数据:
7
图2.6 第一次回复
第一次断开:
URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 0 FIN: 0
第二次断开:
URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 1 FIN: 0
8
图2.7捕获记录表框
协议框显示所选分组的各层协议细节,物理层帧,以太网帧及其首部,IP协议数据报及其首部,UDP数据报及其首部,HTTP等协议细节。
图2.8 协议框
原始框显示了分组中包含的数据的每个字节。从中可以观察最原始的传输数据。方框左边是十六进制的数据,右边是ASCII码。
9
图2.9 原始框
步骤6 利用Analyze菜单分析记录。
利用Summary观察跟踪记录的统计概要,包括通信的总字节数,通信的频率,分组的大小等统计数据。并且,利用Protocol Hierarchy Statistics(协议层次统计)观察各个协议的统计。 Tcp
显示过滤规则: tcp.flags 显示包含TCP标志的封包。 tcp.flags.syn == 1
显示包含TCP SYN标志的封包。
tcp.flags.syn == 1 and tcp.flags.ack == 0 显示包含TCP SYN并且不包含ACK标志的封包。
tcp.flags.fin == 1 and tcp.flags.ack == 1 显示包含TCP FIN和ACK标志的封包。
tcp.window_size == 0 && tcp.flags.reset != 1
10
3.分析一次Ping过程中的ARP分组
步骤1 查看并清空本地ARP高速缓存
图3.1 ARP高速缓存
执行Ping 192.168.169.102,并捕获分组如上图所示。
3.2获取分组
11
分析ARP分组
图3.3ARP分组
TCP连接建立:TCP的连接建立过程又称为TCP三次握手。首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;接收方主机在收到这个请求后向送方主机回复一个同步/确认(SYN/ACK)应答;发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立;
TCP数据传送:TCP是一种可靠传输的协议,它在传输的过程中使用序列号和确认号来跟踪数据的接收情况;在传输过程中,如果在重传超时时间内没有收到接收方主机对某数据包的确认回复,发送方主机就认为此数据包丢失,并再次发送这个数据包给接收方,这称为TCP重传;TCP并不总是在接收到数据后立即对其
12
进行确认,它允许主机在接收数据的同时发送自己的确认信息给对方;TCP是可靠传输的协议,它提供校验和计算来实现数据在传输过程中的完整性。
13