简述TCP协议与三次握手和四次挥手

文章目录

  • 一、TCP协议
    • 1.1 TCP协议简介
    • 1.2 TCP报文格式
      • 1.2.1 TCP报文段
  • 二、三次握手
    • 2.1 TCP握手建立连接的过程
    • 2.2 使用WireShark抓包验证四次握手
  • 三、四次挥手
    • 3.1 四次挥手的过程
    • 3.2 使用WireShark抓包验证四次挥手
  • 五、疑问与思考
    • 5.1 WireShark抓包四次挥手发现的问题

一、TCP协议

1.1 TCP协议简介

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • TCP是面向连接的、可靠的进程到进程通信的协议
  • TCP提供全双工服务,即数据可在同一时间双向传输。

1.2 TCP报文格式

1.2.1 TCP报文段

  • TCP将若干个字节构成一个分组,叫做报文段(Segment)
  • TCP报文段封装在IP数据报中

tG0LWj.png
简述TCP协议与三次握手和四次挥手_第1张图片

  • SYN(Synchronize Sequence Numbers):同步序列号,是TCP建立连接时候的握手信号,TCP需要建立连接时将该值设为1。
  • ACK (Acknowledge character):确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误,当该位为1时,用于确认发送方的数据。
  • RST(Reset the connection):复位标志,用于复位TCP连接。
  • FIN(Finish):结束标志,用来结束TCP回话,当TCP断开连接时将该位置为1。

二、三次握手

2.1 TCP握手建立连接的过程

简述TCP协议与三次握手和四次挥手_第2张图片

  • 第一次:客户机(Client)发送连接请求即SYN=1,并发送随机Seq数据包,Seq=x;

  • 第二次:服务端(Server)收到请求同意建立连接,发送自己的同步序列号SYN=1,并随机生成一个Seq数据包即Seq=y,并要回应Client的请求,ACK=1,Ack=x+1;

  • 第三次:Client收到服务端同意建立连接请求的回复,发送ACK=1,Seq=x+1,Ack=y+1

    完成以上三步后,TCP连接建立。

2.2 使用WireShark抓包验证四次握手

这里使用的是VM虚拟机模拟一台Linux远程服务器,我们使用X Shell工具进行远程连接时候进行抓包并分析内容。
简述TCP协议与三次握手和四次挥手_第3张图片

从图上可以看出,客户机与服务端是经过三次握手之后再开始传输数据的,前三个抓到的报文就代表了三次握手,我们来展开分析下:

第一握手:
简述TCP协议与三次握手和四次挥手_第4张图片

第二次握手:
简述TCP协议与三次握手和四次挥手_第5张图片

第三次握手:
简述TCP协议与三次握手和四次挥手_第6张图片

三、四次挥手

3.1 四次挥手的过程

简述TCP协议与三次握手和四次挥手_第7张图片

  • 第一次:首先客户机想要断开连接,发送FIN=1,ACK=1报文来关闭数据发送

  • 第二次:服务端收到FIN报文,回复报文ACK=1

  • 第三次:服务端再次发送FIN=1,并发送ACK=1报文给服务端

  • 第四次:客户端收到报文,回复ACK=1确认关闭连接

3.2 使用WireShark抓包验证四次挥手

这里使用的是VM虚拟机模拟一台Linux远程服务器,我们使用X Shell工具进行远程连接时候进行抓包并分析内容。
简述TCP协议与三次握手和四次挥手_第8张图片

第一次:
简述TCP协议与三次握手和四次挥手_第9张图片

第二次:
简述TCP协议与三次握手和四次挥手_第10张图片

第三次:
简述TCP协议与三次握手和四次挥手_第11张图片

第四次:
简述TCP协议与三次握手和四次挥手_第12张图片

五、疑问与思考

5.1 WireShark抓包四次挥手发现的问题

在使用X Shell工具进行对四次挥手进行抓包时一切正常,我后来又更换了一款SecureCRT 8.0软件进行连接抓包,只抓到如下三个报文,第一次是客户端发送的挥手报文,第二次是客户端发送的[RST,ACK]报文,第三次是服务端回复的ACK报文。
简述TCP协议与三次握手和四次挥手_第13张图片

经过一番查询后找到了答案:

TCP连接关闭的正常方法是四次握手。但四次握手不是关闭TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST (Reset)包将被发送

你可能感兴趣的:(简述TCP协议与三次握手和四次挥手)