Wireshark数据抓包分析之传输层协议(TCP协议)


实验简介

实验所属系列:Wireshark数据抓包分析

实验对象: 本科/专科信息安全专业、网络工程

相关课程及专业:TCP协议分析、网络编程实例教程、计算机网络

实验时数(学分):4学时

实验类别:实践实验类

预备知识

 

1.TCP协议的由来

 

上一次的课程详细介绍了UDP协议,可以知道该协议实验非常简单,并且容易实现。但是其可靠性较差,一旦将数据包发出,将无法知道对方是否收到。为了解决这个问题,TCP协议就诞生了。使用TCP协议,可以提供网络的安全性。因为使用TCP协议传输数据时,每发送一个数据包都要求确认。如果有一个数据包丢失,就收不到确认包,发送方就知道应该重发这个数据包。这样,TCP协议就保证了数据的安全性。

 

2.TCP端口

 

TCP端口就是为TCP协议通信提供服务的窗口。所有TCP通信都会使用源端口和目的端口,而这些可以在每个TCP头中找到。端口就像是老式电话机上的接口,一个总计操作员会监视着一个面板上的指示灯和插头。当指示灯亮起的时候,它就会链接这个呼叫者,问它想要和谁通话,然后插一根电缆线将它和它的目的地址链接起来。每次呼叫都需要有一个源端口(呼叫者)和目的端口(接收者)。TCP端口大概就是这样工作的。

 

为了能够将数据传输到远程服务器或者设备的特定应用中去,TCP数据包必须知道远程服务所监听的端口。如果想试着链接一个不同于所设置的端口,那么这个通信就会失败。这个序列中的源端口并不十分重要,所以可以随机选择。远程服务器也可以很简单的从发送过来的原始数据中得到这个端口。如下图所示,在图中列举两种服务使用的TCP端口。

 

 实验步骤一

 

根据实验环境,本实验的步骤如下:

 

1.在测试环境使用发包工具和Wireshark抓取TCP三次握手和四次断开的数据包。

 

2.详细分析TCP协议的三次握手以及四次断开。

 

任务描述:安装发包工具,并配置TCP客户端,服务端,与Wireshark配合使用 此工具与分析UDP协议时相同,实验室环境中已经安装

我们使用" TCP&UDP测试工具"来制作和发送TCP数据包。双击测试者机器桌面的" TCP&UDP测试工具",会出现下图显示页面:

 

 

 

1.配置服务器端

选择10.1.1.33的机器,双击桌面的" TCP&UDP测试工具",右键点击服务器模式,在下拉列表中,选择创建服务器

 

 

选择"创建服务器"之后,会弹出服务器端口设置,本次使用默认工具给的6000端口即可,点击"确定"按钮。

 

 

 

点击"确定"按钮之后,在左侧的服务器模式列表中,会出现创建的列表,选择我们创建的服务器,右键点击,选择"启动服务器",即完成了服务器端的配置

 

 

 

 

 

2.配置客户端

选择10.1.1.142的机器,双击桌面的" TCP&UDP测试工具",右键点击客户端模式,在下拉列表中,选择"创建连接"

在弹出的窗口中,选择TCP协议,服务器IP为10.1.1.33.端口6000,本机随意IP

 

 

 点击创建后

 

 

 

3.获取TCP数据包

获取的TCP协议的数据包。分为两部分,即TCP三次握手,四次断开的数据。但在实际的操作中,可能遇到的情况较多,比如源IP和目的IP比较多,协议的帧号乱序等各种问题。在此,我们教大家简单的过滤功能,着色功能方便过滤和查看。    启动Wireshark,在Filter中输入tcp,点击Apply会看到很多的数据包,这是因为测试环境中,有很多的应用程序,与其服务器连接,使用TCP协议。

 

 

 我们可以看到,有很多的数据,不方便查看。在这里,我们已知两台机器的IP情况下,可以在filter中输入"ip.addr == 10.1.1.142 and ip.addr == 10.1.1.33"来过滤出我们想要的数据,点击工具中的"连接"按钮。

 

 

 在发送区域输入"hetinlabtcp"点击发送,会持续的更新TCP数据。

 

 

 在点击"断开连接"后,会出现TCP的四次断开。全部的过程截图

 

 

 如果还是觉得不方便分析协议的话,Wireshark还为我们提供了着色和指定的帧信息保存功能。左键点击某一帧,右键选择"Colorize Conversation",横向选择"TCP",横向再选择自己喜欢的颜色

 

 

 

 

 

 从上面可以很容易的看出,6226,6229.6230帧是tcp的三次握手,7531,7532,7533,7534帧是四次断开的数据。如果你还想把三次握手和四次断开的数据包分别保存,Wireshark也提供了这样的功能,并且支持帧序号乱序的情况。下面,我们先来保存三次握手的数据包,因三次握手的帧是乱序,我们先右键点击6226帧,选择"Mark Packet(toggle)',在依次选择6229帧,6230帧,

 

 

 在Wireshark的菜单栏中,依次选择FIle->Export Specified Packets 命令

 

 

 选择Marked packets,并选择保存名字和路径,即可。下面来保存四次断开的数据,因7531-7534为连续的序号,所以在Wireshark的菜单栏中,依次选择FIle->Export Specified Packets 命令,

 

 

 实验步骤二

2.分析TCP的三次握手

TCP三次握手是理解TCP协议最重要的部分,下面我们就以tcp-handshake.pcapng捕获文件为例,来分析TCP的三次握手

2.1.第一次握手

TCP第一次握手,捕获的数据包信息如下所示

 

 

 从Wireshark的Packet List面板中的Info列可以看到显示的TCP标志位是SYN。所以该数据包是客户端向服务器发送的第一次握手连接。在Packet Details面板中,显示了该包的详细信息

 

 

 以上信息,表示这是第1个数据帧的相信信息,并且该包的大小为66个字节。

以上内容是以太网帧头部信息,其实源MAC地址为16:3e:78:2d:79,目标MAC地址为fa:16:3e:27:52:90。

 

 

 以上内容是IPv4首部的详细信息。其中源IP是10.1.1.33,目的IP为10.1.1.142。

 

 

 根据以上信息的描述,可以看出该包是客户端发送给服务器建立连接请求的一个数据包。建立连接的源端口号为56678,目标端口号为6000,确认编号为0。而且在标志位FLAGS(0x0002)中,只设置了SYN,也就是位同步标志,表示请求建立连接。选项是8个字节,里面的内容有最大段(MSS),大小为1414字节。

   2.2.第二次握手

TCP第二次握手捕获数据包相信信息

 

 

 以上描述的详细信息是服务器收到请求后,发给客户端的确认包(SYN+ACK)。根据以上描述,可以看到在该帧数据包中包含这个主机初始的序列号0,以及一个确认号1。

这个确认号比之前那个数据包(1帧数据包)序列号大1,是因为该域是用来表示主机所期望得到的下一个序列号的值。

 

 

 

2.3.第三次握手

TCP第三次握手捕获数据包相信信息

 

 

 以上信息就是客户端向服务器发送的确认包。在以上信息中,序列号和确认号都是1。标志位中只设置了ACK,表示该数据包是一个确认包。这样就完成了TCP链接的建立阶段。

 

 

 

 实验步骤三

1.第一次断开

TCP第一次断开连接的数据包,如下:

 

通过以上信息的描述,可以看到客户端向服务器发送FIN和ACK标志的数据包开始断开连接,其中FIN和ACK标志位都为1.

2.第二次断开

TCP第二次断开连接的数据包,如下

 

 通过以上信息的描述,可以看出该包是服务器向客户端发送的ACK包。其中ACK标志位为1.

 

 

3.第三次断开

TCP第三次断开连接的数据包,如下

 

 通过以上信息的描述,可以看出该包是服务器向客户端发送的FIN和ACK包。其中FIN和ACK标志位为1.

4.第四次断开

TCP第四次断开连接的数据包,如下

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM