实验简介
实验所属系列: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第四次断开连接的数据包,如下