前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >弄它!!使用Wireshark抓包软件抓取两台PC通信与断开的数据包,观察TCP的三次握手,四次挥手

弄它!!使用Wireshark抓包软件抓取两台PC通信与断开的数据包,观察TCP的三次握手,四次挥手

作者头像
不吃小白菜
发布2020-09-03 09:46:34
1.7K0
发布2020-09-03 09:46:34
举报

一、传输层tcp介绍

TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。

无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。 同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接

二、tcp与udp的区别

TCP 与 UDP 的区别相当大。它充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。 此外,TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。 根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)

三、TCP头部

TCP的规范定义,它定义了TCP协议如何读取和解析数据

在这里插入图片描述
在这里插入图片描述

TCP首部承载这TCP协议需要的各项信息,下面我们来分析一下:

1、TCP端口号

TCP的连接是需要四个要素确定唯一一个连接: (源IP,源端口号)+ (目地IP,目的端口号) 所以TCP首部预留了两个16位作为端口号的存储,而IP地址由上一层IP协议负责传递 源端口号和目地端口各占16位两个字节,也就是端口的范围是2^16=65535 另外1024以下是系统保留的,从1024-65535是用户使用的端口范围

2、TCP的序号和确认号:

32位序号 seq:Sequence number 缩写seq ,TCP通信过程中某一个传输方向上的字节流的每个字节的序号,通过这个来确认发送的数据有序,比如现在序列号为1000,发送了1000,下一个序列号就是2000。 32位确认号 ack:Acknowledge number 缩写ack,TCP对上一次seq序号做出的确认号,用来响应TCP报文段,给收到的TCP报文段的序号seq加1。

3、TCP的标志位

每个TCP段都有一个目的,这是借助于TCP标志位选项来确定的,允许发送方或接收方指定哪些标志应该被使用,以便段被另一端正确处理。 用的最广泛的标志是 SYN,ACK 和 FIN,用于建立连接,确认成功的段传输,最后终止连接。

SYN:简写为S,同步标志位,用于建立会话连接,同步序列号; ACK: 简写为.,确认标志位,对已接收的数据包进行确认; FIN: 简写为F,完成标志位,表示我已经没有数据要发送了,即将关闭连接; PSH:简写为P,推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队; RST:简写为R,重置标志位,用于连接复位、拒绝错误和非法的数据包; URG:简写为U,紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理;

四、TCP的三次握手

流程图如下

在这里插入图片描述
在这里插入图片描述

第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。 第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。 第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。

五、TCP的四次挥手

四次挥手

中断连接端可以是客户端,也可以是服务器端。 **第一次挥手:**客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。

第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。

第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。

第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

在这里插入图片描述
在这里插入图片描述

六、实验抓包进行查看其过程

1、实验环境

通过seCure-CRT软件远程连接虚拟机linux主机(绑定VM1网卡);用wireshark抓包软件进行抓包并查看主机与虚拟机TCP的三次握手和四次挥手

2、需求描述

将上述过程通过实验再现出来。 查看数据包的三次握手和四次挥手

3、推荐步骤

1、VM15.5在虚拟机下安装一台centos7.6系统,使用vm1网卡,手动配置网络,并能ping通主机(尽量不要用VM8,数据包太多,不容易观察) 2、准备远程终端软件secure-CRT软件,手动连接虚拟机 3、打开wireshark抓取刚开始连接的数据包,查看其数据包里的三次握手 4、断开连接抓取数据包查看数据包里的四次挥手 这就是整个三次握手和四次挥手的示意图,观察其中参数的改变,从而了解三次握手四次挥手的具体情况

在这里插入图片描述
在这里插入图片描述

4、具体如下:

TCP的三次握手

这里发表一下我个人的总结,一般来说三次握手都在最上面,而且是SYN开头的

在这里插入图片描述
在这里插入图片描述

TCP的第一次握手

1、打开第一次握手的数据包,打开传输层数据包,观察SYN同步序号位,就是一堆0的那个,ACK是确认序号位,观察: 源ip 192.168.10.1 目标ip 192.168.50.1 源端口号:55426 目标端口号:22 Syn=1 ack=0

在这里插入图片描述
在这里插入图片描述

TCP的第二次握手

2、依次打开第二次握手,观察其变化

源ip 192.168.50.1 目标ip 192.168.10.1 源端口号:22 目标端口号:55426 Syn=1 ack=1

在这里插入图片描述
在这里插入图片描述

TCP的第三次握手

3、源ip 192.168.10.1 目标ip 192.168.50.1 源端口号:55426 目标端口号:22 Syn=0 ack=1

在这里插入图片描述
在这里插入图片描述

TCP的第一次挥手

二、下面开始抓取4次挥手的数据包 ,观察其中的参数变化,这里挥手的参数与握手的有所不同 一般挥都是在最下面,FIN开头的就是第一次挥手 具体如下:

1、第一次挥手确认号FIN=1 源ip 192.168.50.1 目标ip 192.168.10.1 源端口号:55426 目标端口号:22 fin=1 ack=1

在这里插入图片描述
在这里插入图片描述

TCP的第二次挥手

2、以此类推,观察四次挥手各个参数的变化 源ip 192.168.10.1 目标ip 192.168.50.1 源端口号:22 目标端口号:55426 fin=0 ack=1

在这里插入图片描述
在这里插入图片描述

TCP的第三次挥手

3.源ip 192.168.10.1 目标ip 192.168.50.1 源端口号:22 目标端口号:55426 fin=1 ack=1

在这里插入图片描述
在这里插入图片描述

TCP的第四次挥手

4、源ip 192.168.50.1 目标ip 192.168.10.1 源端口号:55426 目标端口号:22 fin=0 ack=1

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、传输层tcp介绍
  • 二、tcp与udp的区别
  • 三、TCP头部
    • 1、TCP端口号
      • 2、TCP的序号和确认号:
        • 3、TCP的标志位
        • 四、TCP的三次握手
        • 五、TCP的四次挥手
        • 六、实验抓包进行查看其过程
          • 1、实验环境
            • 2、需求描述
              • 3、推荐步骤
                • 4、具体如下:
                  • TCP的三次握手
                  • TCP的第一次握手
                  • TCP的第二次握手
                  • TCP的第三次握手
                  • TCP的第一次挥手
                  • TCP的第二次挥手
                  • TCP的第三次挥手
                  • TCP的第四次挥手
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档