Wireshark抓包分析TCP连接、发送数据与断开过程

准备工具:

1. 两台连接到同个局域网的电脑,或者虚拟机;

2. 在其中一台电脑安装Wireshark;

3. 在两台电脑上面都有TCP&UDP测试工具软件


TCP连接建立过程(三次握手):


抓包分析TCP连接过程:

1.两台主机都分别打开TCP&UDP测试工具

这里设置主机A的IP地址为10.1.13.2, 主机B为10.1.13.3。

主机A作为客户端,主机B作为服务器端。

--------------------------------------------------------------------

主机A(10.1.13.2) 设置如下:

点击右上角的创建连接,弹出对话框。

类型选择TCP

目标IP选择10.1.13.3,端口号选择80

本机端口号选择指定为4001,当然也能随机端口,这里为了更好说明,选择固定的端口号。

如下图所示:

点击创建,如下图所示:

--------------------------------------------------------------------

主机B(10.1.13.3) 设置如下:

打开TCP&DUP测试工具,点击左上角创建服务器。

指定IP设置为10.1.13.3,本机端口:80。

点击确定之后如下图所示:

点击启动服务器。

--------------------------------------------------------------------

2. 打开Wireshark,选择目前在用的网卡,我这里是“以太网”,点击进入,开始抓包。

3.在主机A(10.1.13.2)中,点击TCP&UDP测试工具中的【连接】按钮。

此时,主机A如下:

主机B如下:

4.Wireshark软件点击左上角红色方框,停止抓包。

可以把抓到的包保存起来,点击文件->保存即可。

在应用显示过滤器搜索栏中输入ip.addr == 10.1.13.2 and ip.addr == 10.1.13.3 and tcp

这样就抓到了TCP连接三次握手过程的包。

5.分析TCP连接过程:

从每一条的初略信息可以看出,第一条是10.1.13.2客户端发给10.1.13.3服务器端的,发送的是一个seq=0, ctl = SYN的包;

第二条是服务器端10.1.13.3发给客户端10.1.13.2, seq = 0, ack = 0, ctl = SYN, ACK;

第三条是客户端发给服务器端 seq = 1, ack = 1, ctl = ACK。

跟我们平时看见的TCP连接三次握手过程一致。

----------------------------------------------------

进一步分析,点击第一条信息,弹出如下详细信息:

这里我们可以看见几个层的详细信息,和原始数据。

其中有一个Transmission Control Protocol, Src Port:4001, Dst Port:80, Seq:0,Len:0.

这个就是一个TCP的包。打开如下:

这里完整给我们展示了第一次握手时TCP包的详细过程。

根据TCP报文格式定义:

对比上面的信息,可以知道每一个数据代表的意思。这里不进行展开说明。

这里发的序列号码是seq=0;

SYN标志在控制位的倒数第二位,如上上图的红线部分;

以上两点说明了这个TCP第一次握手的通信过程。

其他两次握手过程不再展开讨论。


抓包分析TCP发送数据过程:

1. 在TCP&UDP测试工具中,假设这是客户端和服务器TCP是处于连接状态,我们在客户端发送一个hello到服务器,如下图。并按照上面介绍的方法抓包。

抓到的包如下:

第一个包为10.1.13.2发给10.1.13.3的一个TCP包,第二个为10.1.13.3发给10.1.13.2的一个回应。

由上面可以看出,TCP在发送数据的时候,seq=1, ack = 1,当然,这里的seq和ack会随着发送数据的次数而增加,不一定都是1。

控制位 ack, push被置为1;

最后我们还看见了发送的数据,共5个字节,为68 65 6c 6c 6f 翻译为字符串即为hello。

-------------------------------------------------

10.1.13.3回复10.1.13.2,它收到了一个TCP包,如下,seq = 1, 控制位ack置为1。


抓包分析TCP断开过程:

最后点击10.1.13.2客户端主机的TCP&UDP测试工具的"断开连接",再用wireshark抓包,得到如下:

TCP断开是4次握手,如下图:

对比抓包和这个示意图,可以更清晰展现TCP断开的过程。

10.1.13.2客户端发送FIN,ACK控制命令给10.1.13.3服务器,告诉服务器,你可以结束(final)连接了,请给我确认(ack)一下;

服务器收到之后,会先给客户端发送一个ACK,确认收到了客户端的请求;

然后服务器准备好断开之后,再给客户端发送FIN,ACK,告诉客户端,我服务器已经把准备好你断开结束(final)了,收到请给我确认(ack)一下。

客户端收到之后,再给服务器发送一个ACK,说明它收到了。然后进入一个称为TIME_WAIT的等待时间,这个时间要求是2个MSL,

MSL是一个IP包能在互联网上生存的最长时间。这样做是为了防止服务器收不到最后一个ACK,导致服务器资源的浪费。

服务器收到ACK之后就断开了。通信结束。


通过抓包可以更深入学习TCP连接的一些特性,有助于理解网络编程出现的一些问题。

 

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TCP三次握手和四次挥手TCP协议建立和关闭连接时所采用的步骤。 三次握手是在客户端和服务器之间建立TCP连接时的过程。首先,客户端向服务器发送一个请求连接的数据包,该数据包包含一个随机生成的序列号(SYN),表示客户端希望建立连接。服务器接收到该请求后,向客户端回复一个确认连接的数据包,该数据包包含其自己生成的一个随机序列号(SYN-ACK),表示服务器同意建立连接。最后,客户端再次向服务器发送一个确认连接的数据包,该数据包中包含服务器的序列号加一(ACK),表示客户端接受服务器的连接请求。这样,TCP连接就建立起来了。 四次挥手是在客户端和服务器关闭TCP连接时的过程。首先,客户端发送一个关闭连接的请求数据包(FIN),表示客户端想要关闭连接。服务器收到该请求后,向客户端回复一个确认关闭连接的数据包(ACK),但自己的数据可能没有发送完毕。服务器等到自己的数据发送完毕后,发送一个自己的关闭连接请求数据包(FIN),表示服务器也希望关闭连接。客户端收到服务器的请求后,回复一个确认关闭连接的数据包(ACK),然后等待一段时间,确保服务器收到了该数据包。最后,客户端和服务器都关闭连接四次挥手过程完成。 通过Wireshark抓包分析TCP三次握手和四次挥手可以观察到每个数据包的源地址、目标地址、序列号、确认号等信息。可以通过Wireshark的过滤功能筛选出TCP协议相关的数据包进行分析。通过分析数据包的交互过程,可以确认连接建立和关闭的状态是否符合预期,并可以进一步分析网络延迟、丢包等问题。 综上所述,Wireshark抓包分析TCP三次握手和四次挥手可以帮助我们深入理解TCP连接的建立和关闭过程,以及发现网络故障的根源。 ### 回答2: TCP是一种常用的传输层协议,它通过进行三次握手来建立连接,并进行四次挥手来终止连接。 三次握手的过程如下: 1. 客户端发送一个SYN标志位的TCP报文段给服务器,表示请求建立连接; 2. 服务器收到请求后,回复一个带有SYN和ACK标志位的TCP报文段给客户端,表示同意建立连接; 3. 客户端收到服务器的回复后,再次发送一个带有ACK标志位的TCP报文段给服务器,表示连接建立成功。 四次挥手过程如下: 1. 客户端发送一个FIN标志位的TCP报文段给服务器,表示希望断开连接; 2. 服务器收到请求后,回复一个带有ACK标志位的TCP报文段给客户端,表示确认收到断开请求; 3. 服务器完成数据的发送后,发送一个带有FIN标志位的TCP报文段给客户端,表示自己也要断开连接; 4. 客户端收到服务器的断开请求后,发送一个带有ACK标志位的TCP报文段给服务器,表示确认断开,并进入TIME_WAIT状态。 在三次握手的过程中,第一次握手是客户端发起的,第二次握手是服务器回复同意建立连接,第三次握手是客户端回复确认连接。这个过程是为了确保双方都同意建立连接,以保证数据传输的可靠性。 在四次挥手过程中,首先客户端发送断开请求,服务器回复确认,然后服务器发送断开请求,客户端回复确认。这个过程是为了保证双方都断开连接,并确保数据完整性。 Wireshark是一款网络抓包分析工具。使用Wireshark可以捕获网络数据包,并对数据包进行解析和分析。通过Wireshark,我们可以看到每个TCP报文段的具体内容,并对三次握手和四次挥手过程进行详细分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值