实验环境:

  1. 一台物理机(win10系统)与一台虚拟机(CentOS7系统)
  2. Wireshark抓包软件
  3. SecureCRT

实验场景:
物理机(win10系统)IP地址:192.168.192.1/24
虚拟机(CentOS7系统)ip地址:192.168.192.5/24
虚拟机绑定了物理机的vmnet1网卡,设置为仅主机模式

实验步骤:
开启wireshark软件,首先进行基本设置,筛选出TCP协议,如下图所示:
在这里插入图片描述
在这里插入图片描述

打开SecureCRT,连接到虚拟机(192.168.192.5)
在这里插入图片描述
在这里插入图片描述

三次握手:
因为建立了连接,所以wireshark抓到数据包了
在这里插入图片描述
在这里插入图片描述① 当客户端向服务器发送请求连接的报文时:
Seq序列号=x(这时客户端的序列号为0)
SYN=1(表示发送连接请求)

在这里插入图片描述② 服务器端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文:
Seq序列号=y(这时服务器也会产生一个序列号y)
Ack确认号=1(Seq序列号x+1,表示确认收到了客户端的请求)
ACK=1(表示这是条确认请求)
SYN=1(同时也发送一个建立连接的请求)

在这里插入图片描述③ 客户端进程收到服务端进程的确认后,还要向服务端给出确认,然后连接成功建立:
Seq序列号=x+1(这时客户端的序号为1)
Ack确认号=y+1(表示确认收到了服务器的连接请求)
ACK=1(表示这是确认报文)

四次挥手:(这时我们将服务器也就是虚拟机关机,使得服务器主动要求断开连接,这时服务器和客户端身份对调)
在这里插入图片描述
在这里插入图片描述① 客户端进程发出连接释放报文,并停止发送数据:
Seq序列号=x(客户端序列号)
Ack确认号=673(产生一个初始确认号)
ACK=1(表示发出确认报文)
FIN=1(表示请求断开连接)

在这里插入图片描述② 服务器收到连接释放报文,发出确认报文:
Seq序列号=y(这时服务器的序列号)
Ack确认号=x+1(这时确认号为x+1=674,确认收到客户端的请求)
ACK=1(表示这是确认请求)

在这里插入图片描述③ 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文:
Seq序列号=z(服务器更新序列号为673)
Ack确认号=674(这时还是x+1=674)
ACK=1(表示这是确认请求)
FIN=1(表示请求断开连接)

在这里插入图片描述④ 客户端收到服务器的连接释放报文后,必须发出确认才能成功断开连接:
Seq序列号=x+1(这时客户端序列号需要+1=674)
Ack确认号=z+1(服务器的序列号+1=674,确认收到服务器的请求)
ACK=1(表示这是确认请求)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐