【网络原理】TCP连接管理机制(三次握手四次挥手)

这篇具有很好参考价值的文章主要介绍了【网络原理】TCP连接管理机制(三次握手四次挥手)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。

🤼专栏收录于:计算机网络原理


在使用TCP协议进行网络交互时,TCP会进行三次握手即建立连接,TCP四次挥手即断开连接。三次握手与四次挥手后就完成了网络交互,这样的操作也叫TCP的连接管理机制,本篇博文将详细介绍TCP通信过程和三次握手、四次挥手过程。

【网络原理】TCP连接管理机制(三次握手四次挥手)

目录

1、TCP通信过程

1.1 TCP首部报头

1.2 TCP通信过程

2、三次握手

2.1 三次握手流程

2.2 为什么要三次握手

3、四次挥手

3.2 为什么要四次挥手


1、TCP通信过程

【网络原理】TCP连接管理机制(三次握手四次挥手)


1.1 TCP首部报头

TCP首部(TCP Header)是TCP协议中的报头部分,它跟随在IP报头后面。TCP报头通常由20个字节组成,其中包括了一些标志位、序列号、确认号、端口号等信息,用于在TCP通信中控制和传递数据。

【网络原理】TCP连接管理机制(三次握手四次挥手)

源端口号/目的端口号:表示数据的发送方与数据的接受方端口号

32位序号/32位确认序号:TCP将每个字节的数据都进行了编号即为序列号。

6位标志位:TCP的6位标志位默认为0,当返回相应的报文时,会把该报文位设置位1。

URG(Urgent):表示是否包含紧急数据。

ACK(Acknowledgment):表示确认号是否有效。

PSH(Push):表示是否立即推送。

RST(Reset):表示连接是否复位。携带RST标识的称为复位报文段。

SYN(Synchronize):表示同步请求/应答。携带SYN标识的称为同步报文段

FIN(Finish):表示传输结束。携带FIN标识的为结束报文段。

当TCP客户端和服务器建立连接时,它们会共同存储一些连接状态信息,以便在数据传输和连接释放的过程中使用。这些状态信息包括:

  1. 序列号(Sequence Number):用于对TCP数据段进行排序和重组。

  2. 确认号(Acknowledgment Number):用于确认在连接过程中收到的数据段的数量。

  3. 窗口大小(Window Size):用于指定接收端能够接收的数据量大小。

  4. 状态标志(Flags):用于指定TCP连接的状态、数据段类型和连接状态的变化等信息。

  5. 超时时间(Timeout):用于指定数据段传输时间的最大限制,超过该限制则认为连接出现了问题。


1.2 TCP通信过程

TCP通信过程模拟

【网络原理】TCP连接管理机制(三次握手四次挥手)

我们观察到 主机A  向 主机B 传输数据时,提供了以 1000 为单位的编号。这些编号称为 序列号

我们可认为 主机A 向 主机B 发送数据为一个请求 即 SYN。TCP给这个请求随机分配一个序列号即SEQ

并且 主机B 在收到 主机A 的数据后会作出回应,这个回应称之为 即 ACK。只有接收方返回 ACK 后,这样的通信才算完成。

确认序列号 的是序列号的下一个字节数。当 SYN 请求序列号为 1000,则 ACK 确认序列号为 1001,对照上图、下图进行理解。

【网络原理】TCP连接管理机制(三次握手四次挥手)

注意,以上的 SYN 和 ACK 是怎样进行传输的呢,我们知道6位标志位默认为0,第1位到第6位分别为:URG、ACK、PSH、RST、SYN、FIN 。当要进行 SYN 请求时,则传输000010。当要进行 ACK 确认序列号时则传输 010000。


2、三次握手

握手(handshake)指通信双方进行网络交互,TCP 建立连接时客户端与服务器之间需要进行三次交互来完成连接。

建立连接一定是客户端向服务器发起的,在 TCP 协议下客户端首先向服务器发送建立连接请求即 SYN 报文段,服务器在接受到请求后会返回 ACK 确认序号。

服务器为了确保与客户端建立连接会向客户端也发送 SYN 报文段,客户端再返回 ACK 确认序号。这样客户端与服务器就完成了连接。

举例说明

张三想与如花确定男女朋友关系,首先张三向如花发送求爱请求:“你可以做我的唯一吗?”(SYN)。

如花答应张三并返回确认信息:“我愿意”(ACK),但如花想张三也是她的唯一也向扎张三发送信息:“你也愿意做我的唯一吗?”(SYN)。

张三回复:“我愿意”(ACK)。

以上过程看似是四次交互,但实际中间两次交互可合并为一条交互,因此上述过程为三次握手。

【网络原理】TCP连接管理机制(三次握手四次挥手)

只有双方都确定了彼此之间的信息这样才能完成建立连接。TCP中可通过序列号、确认号来保存彼此之间信息,在本文上方TCP通信过程中有详细讲解。


2.1 三次握手流程

1)当客户端向服务器发送请求时,会发送 SYN 报文段给服务器。

【网络原理】TCP连接管理机制(三次握手四次挥手)

2)服务器在收到客户端的请求后,会回复 ACK 确认序列号。

【网络原理】TCP连接管理机制(三次握手四次挥手)

3)服务器为了保证连接也会向客户端发送给 SYN 报文段。

【网络原理】TCP连接管理机制(三次握手四次挥手)

4)客户端收到服务器的请求回复 ACK 确认序列号。

【网络原理】TCP连接管理机制(三次握手四次挥手)

在上方 TCP 通信过程中,我们知道了 TCP 的报头有6位标志位,标志位默认为0。当需要相关操作时就会把某位标志位置为1,为了避免浪费资源,可把这两个操作合并在一起。

服务器向客服端发送 ACK 和 SYN 操作时就可以合并在一起,也就是 ACK 位和 SYN 位都置为1。看似是四次握手实际上只用了三次交互,因此我们称为三次握手,对照下图进行理解。

【网络原理】TCP连接管理机制(三次握手四次挥手)


2.2 为什么要三次握手

  1. 防止已失效的连接请求报文段突然又传送到了服务端,从而导致服务端开启多个连接。

  2. 连接请求报文段正好在网络中滞留比较久,以至于延误到相应的确认没有足够的时候到达服务端,使得服务端误判连接id。

  3. 网络中出现了延迟的重传,因此服务端在已经建立了连接的情况下又收到了连接建立请求,如果没有三次握手情况下,会认为这是一个新的连接请求,从而重复建立新的连接。


3、四次挥手

四次挥手是TCP协议关闭连接时的一种基本过程,它的主要目的是确保双方的数据传输和处理都已经完成。具体来说,四次挥手主要包括以下步骤:

  1. 发起关闭请求的一方(假设是客户端)发送一个FIN (finish)请求,表示“我已经没有数据要发给你了”。
  2. 接收到FIN请求的另一方(假设是服务器)发送一个ACK确认报文,表示“我已经收到了你发来的关闭请求”。
  3. 接收到ACK确认报文的发起关闭请求的一方(即客户端)等待自己发送数据的过程完成并准备好关闭连接后,再次发送一个FIN请求,表示“我的数据发完了,我准备关闭连接”。
  4. 接收到最后一个FIN请求的另一方(即服务器)再次发送一个ACK报文,表示“我已经收到了你的关闭请求,确认关闭连接”。

这样,四次挥手就完成了。需要注意的是,关闭连接的两端都需要发送FIN请求和ACK确认请求,因为TCP协议是一种双向通信协议。在四次挥手过程中,客户端和服务器都需要确认对方的关闭请求,并相互发送ACK报文确认,以确保连接正常关闭。通过四次挥手,双方都能够顺利地关闭连接并释放资源。

四次挥手过程

【网络原理】TCP连接管理机制(三次握手四次挥手)

此处的四次握手的 ACK 和 FIN 为啥不能合并为一次,根据上述四次挥手过程进行解析:

连接的第一次关闭是客户端发送FIN请求,服务器返回ACK确认请求。这个请求的作用是告诉服务器,客户端已经没有数据要发送了,希望关闭连接。在这个阶段中,服务器只是确认收到了客户端发来的FIN请求,还可以继续发送数据给客户端。

连接的第二次关闭是服务器发送FIN请求,客户端回复ACK确认请求。这个请求的意义是告诉客户端,服务器也没有数据要发送了,希望关闭连接。在这个阶段中,客户端收到了服务器的FIN请求,可能还会发送一些最后的数据到服务器,然后再发送ACK确认请求。如果将第一次和第二次的请求合并在一起,服务器就无法获知客户端是否真正结束了数据的发送,可能会误认为客户端还在发送数据。


3.2 为什么要四次挥手

TCP是一种双向通信协议,双方都需要发送和接收数据。在四次挥手过程中,需要确保双方没有尚未处理完的数据或者请求。因此,四次挥手能够在正确关闭连接之前,保证数据双向传输和处理的完成。

不同于三次握手,在关闭连接时,可能存在未及时发送的数据。如果 TCP 四次挥手过程中全部包含在一个 TCP 报文中,则使用 TCP 的延迟 ACK,未及时发送其中的 ACK 报文,导致连接终止存在延迟。采用四次挥手可避免这种情况。

网络编程中避免出现类似TCP Head of Line Blocking(HOLB)的问题。如果在两端都尚未关闭连接之前,数据流还在传输中,一端出现故障,就会引起等待连接关闭的一方进入死等状态,造成连接阻塞。

因此,通过四次挥手过程,双方都能够正确地处理数据、确认请求,并最终彻底地关闭连接,从而保证 TCP 传输的安全、稳定并且可靠。


三次握手四次挥手是为了保证数据的可靠性传输,在TCP传输中还有其他保证数据的可靠性传输的机制如确认应答机制、超时重传机制,大家可在文章开头专栏中搜索。

【网络原理】TCP连接管理机制(三次握手四次挥手)

本期博文到这里就结束了,感谢点赞、评论、收藏、关注~文章来源地址https://www.toymoban.com/news/detail-490587.html

到了这里,关于【网络原理】TCP连接管理机制(三次握手四次挥手)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【TCP 协议】连接管理之 “三次握手,四次挥手”

    哈喽,大家好~我是你们的老朋友: 保护小周ღ    本期为大家带来的是网络编程中的 TCP 传输控制协议保证数据可靠性传输的机制 之一的—— 连接管理 ,通信双方采用 “三次握手” 来建立连接,采用 “四次挥手” 会断开连接,如何进行 ”握手” 和 “挥手” 操作,本文

    2024年02月07日
    浏览(30)
  • 【网络】TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

     前言:建议看着图片,根据文字描述走一遍TCP通讯过程,加深理解。 目录 TCP通信时序: 1)建立连接(三次握手)的过程: 2)数据传输的过程: 3)关闭连接(四次挥手)的过程: 滑动窗口 (TCP流量控制): TCP状态转换: 半关闭: 2MSL: 程序设计中的问题: 端口复用:

    2024年02月07日
    浏览(37)
  • 【网络|TCP】三次握手、四次握手

    TCP是一种面向连接的可靠的传输协议,建立和断开TCP连接时需要进行握手的过程。其中,TCP的连接建立需要进行三次握手,而连接断开则需要进行四次握手。 三次握手 第一次握手:客户端发送一个SYN(同步)报文给服务器,表示客户端请求建立连接。这个报文中包含一个初

    2024年02月14日
    浏览(24)
  • TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

     前言:建议看着图片,根据文字描述走一遍TCP通讯过程,加深理解。 目录 TCP通信时序: 1)建立连接(三次握手)的过程: 2)数据传输的过程: 3)关闭连接(四次挥手)的过程: 滑动窗口 (TCP流量控制): TCP状态转换: 半关闭: 2MSL: 程序设计中的问题: 端口复用:

    2024年02月03日
    浏览(70)
  • TCP的连接和建立(三次握手和四次挥手)

    ​ 1.TCP连接的建立 ​ 连接的建立,通常称为三次握手。 ​ ​ 建立连接前服务器处在收听状态。 ​ 第一步:客户机的TCP向服务器的TCP发送连接请求报文段。同步位 = 1。这时客户进程进入同步已发送状态。 ​ 第二步:服务器TCP收到连接请求报文段后,如同意建立连接,向客

    2024年02月16日
    浏览(27)
  • 传输层—TCP核心机制(确认应答、超时重传、三次握手&四次挥手、滑动串口等……)

    ​ 简单给大家介绍一下 TCP 的核心特性,以及报头结构。 TCP 特点: 可靠传输 ,有连接,面向字节流,全双工。(后三个特性,我们在网络编程代码中完全可以感知到) 对于可靠传输来说,是内核实现的,写代码的时候,是感知不到的。(感知成本低,其使用成本也就降低

    2024年02月04日
    浏览(23)
  • 一文彻底搞懂 TCP三次握手、四次挥手过程及原理

    TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。 无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过 三次握手 进行初始

    2024年02月04日
    浏览(24)
  • (学习笔记-TCP连接建立)TCP 为什么是三次握手?不是两次、四次?

    常规回答:“因为三次握手才能保证双方具有接收和发送的能力” 三次握手的 首要原因是为了防止旧的重复连接初始化造成混乱 。 假设:客户端先发送了SYN(seq=90)报文,然后客户端宕机了,而且这个SYN报文还被网络阻塞了,服务端并没有收到,接着客户端重启后,又重新向

    2024年02月17日
    浏览(34)
  • TCP实现原理和为什么需要三次握手?两次握手不可以?四次握手不可以?

    TCP实现原理和为什么需要三次握手?两次握手不可以?四次握手不可以? 1. 什么是TCP协议? TCP:Transmission Control Protocol翻译过来就是传输控制协议,TCP协议是一个面向连接的、可靠的、基于字节流的传输层协议 RFC 793对TCP连接的定义 Connections: The reliability and flow control mechanisms descri

    2024年02月16日
    浏览(34)
  • 【Linux网络】TCP/IP三次握手、四次挥手流程

    目录 一、三次握手,建立连接 二、四次挥手,断开连接 三、主要字段  1、标志位(Flags)  2、序号(sequence number)  3、确认号(acknowledgement number) 四、三次握手的报文变化 五、四次挥手的报文变化 六、面试题 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手,

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包