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

预备知识

1.TCP协议的由来

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

2.TCP端口

TCP端口就是为TCP协议通信提供服务的窗口。所有TCP通信都会使用源端口和目的端口,而这些可以在每个TCP头中找到。端口就像是老式电话机上的接口,一个总计操作员会监视着一个面板上的指示灯和插头。当指示灯亮起的时候,它就会链接这个呼叫者,问它想要和谁通话,然后插一根电缆线将它和它的目的地址链接起来。每次呼叫都需要有一个源端口(呼叫者)和目的端口(接收者)。TCP端口大概就是这样工作的。
为了能够将数据传输到远程服务器或者设备的特定应用中去,TCP数据包必须知道远程服务所监听的端口。如果想试着链接一个不同于所设置的端口,那么这个通信就会失败。这个序列中的源端口并不十分重要,所以可以随机选择。远程服务器也可以很简单的从发送过来的原始数据中得到这个端口。如下图所示,在图中列举两种服务使用的TCP端口。
在这里插入图片描述
图中表示客户端与Web服务器和邮件服务器的一个通信。从该图中,可以看到客户端与不同服务器建立连接时,使用的源端口和目标端口都不同。
在使用TCP进行通信的时候,有65535个端口可供使用,并通常将这些端口分成两个部分,如下所示:
1~1023:是标准端口组(忽略掉被预留的0),特定服务会用到这些通常位于标准端口分组中的标准端口。
1024~65535:是临时端口组(尽管一些操作对此有着不同的定义),当一个服务想在任意时间使用端口进行通信的时候,操作系统都会随机选择这个源端口,让这个通信使用唯一的源端口。这些源端口通常就位于临时端口组。

3.TCP三次握手

在TCP/IP协议中,TCP协议提供可靠的链接服务,通过使用三次握手建立一个链接。所有基于TCP协议的通信都需要以两台主机的握手开始。下面将介绍TCP的三次握手。TCP的三次握手如下图所示:
在这里插入图片描述
上图描述了TCP的三次握手,为了帮助学习者更清晰的理解TCP协议,下面我们详细介绍这三次握手。在图中,Seq表示请求序列号,Ack表示确认序列号,SYN和ACK为控制位。

3.1 第一次握手

第一次握手建立连接时,客户端向服务器端发送SYN报文(Seq=x,SYN=1),并进入SYN_SEND状态,等待服务器确认。如下图:
在这里插入图片描述

3.2 第二次握手

第二次握手实际上是分两部分完成的。即SYN+ACK(请求和确认)报文。
(1)服务器收到了客户端的请求,向客户端回复一个确认信息(Ack=x+1)。
(2)服务器再向客户端发送一个SYN包(Seq=y)建立连接的请求,此时服务器进入SYN_RECV状态,如下图所示:
在这里插入图片描述

3.3 第三次握手

第三次握手,客户端收到服务器的回复(SYN+ACK报文)。此时,客户端也要向服务器发送确认包(ACK)。此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,如下图所示:
在这里插入图片描述
这样就完成了三次握手,此时,客户端就可以与服务器开始传送数据了。

4.TCP四次断开

在TCP协议中,每次握手后都会终止。就和人与人之间相互问候一样,最终都会有一句再见。TCP终止用来在两台设备完成通信后正常的结束链接。该过程包含4个数据包,并且用一个FIN标志来标明链接的终结。
TCP四次断开连接如下图:
在这里插入图片描述
如上图所示的四个过程,通过发送了4个数据包断开了与服务器的链接,整个过程的一个详细概述如下:
(1)客户端通过发送一个设置了FIN和ACK标志的TCP数据包,告诉服务器通信已经完成。
(2)服务器收到客户端发送的数据包后,发送一个ACK数据包来响应客户端。
(3)服务器再向客户端传送一个自己的FIN/ACK数据包。
(4)客户端收到服务器的FIN/ACK包时,响应服务器一个ACK数据包。然后结束通信过程。

5.TCP重置

在理想情况中,每一个连接都会以TCP四次断开来正常的结束会话。但是在现实中,连接经常会突然中断。例如,这可能由于一个潜在的攻击者正在进行断开扫描,或者仅仅是主机配置的错误。在这些情况下,就需要使用设置了RST标志的TCP数据包。RST标志用来指出连接异常中止或拒绝连接请求的包。

实验目的

1.熟悉并掌握Wireshark的基本操作。
2.加深对常用网络协议的理解,提高就业机会。
3.培养学生理论联系实践的研究兴趣。

实验环境

在这里插入图片描述
服务器:windows系统,IP地址:10.1.1.33
测试者:windows系统,IP地址:10.1.1.142
在实验环境中,我们通过模拟局域网的两台机器之间的数据传输,来抓取和分析TCP协议数据。

实验步骤一

根据实验环境,本实验的步骤如下:
1.在测试环境使用发包工具和Wireshark抓取TCP三次握手和四次断开的数据包。
2.详细分析TCP协议的三次握手以及四次断开。
任务描述:安装发包工具,并配置TCP客户端,服务端,与Wireshark配合使用。
此工具与分析UDP协议时相同,实验室环境中已经安装,在此再重复一遍,我们使用“TCP&UDP测试工具”来制作和发送TCP数据包。双击测试者机器桌面的“TCP&UDP测试工具”,会出现下图显示页面:
在这里插入图片描述
下面我们需要配置TCP的服务端以及客户端。

1.配置服务器端

选择10.1.1.33的机器,双击桌面的“TCP&UDP测试工具”,右键点击服务器模式,在下拉列表中,选择创建服务器,如下图:
在这里插入图片描述
选择“创建服务器”之后,会弹出服务器端口设置,本次使用默认工具给的6000端口即可,点击“确定”按钮。
在这里插入图片描述
点击“确定”按钮之后,在左侧的服务器模式列表中,会出现创建的列表,选择我们创建的服务器,右键点击,选择“启动服务器”,即完成了服务器端的配置:
在这里插入图片描述

2.配置客户端

选择10.1.1.142的机器,双击桌面的“TCP&UDP测试工具”,右键点击客户端模式,在下拉列表中,选择“创建连接”,如下图:
在这里插入图片描述
在弹出的窗口中,选择TCP协议,服务器IP为10.1.1.33。端口6000,本机随意IP,如下图:

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值