0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP四次挥手过程分析

马哥Linux运维 来源:马哥Linux运维 2023-12-10 15:40 次阅读

TCP 四次挥手是为了关闭链接,TCP 连接是全双工的,因此每个方向都必须单独关闭,双方都可以主动关闭链接,首先发起关闭的一方执行主动关闭,而另一方执行被动关闭,关闭之后主机的资源将被释放。

四次挥手的过程如下:

b252de2e-9685-11ee-8b88-92fbcf53809c.jpg

第一次挥手:客户端发送一个 FIN=1,sep=u 的报文告诉服务器它打算关闭连接,不再发送数据,但可以接收数据,报文发出之后客户端将连接的状态变为 FIN_WAIT_1第二次挥手:服务端接收到客户端的 FIN 报文之后,返回一个 ACK=1,sep=v,ACKnum=u+1 的应答报文,接着服务端进入 CLOSE_WAIT 状态。客户端接收到服务端的 ACK 应答报文后进入 FIN_WAIT_2 状态第三次挥手:服务器处理完数据之后,向客户端发送 FIN 报文,表明它不再发送数据,接着服务端进入 LAST_ACK 状态。第四次挥手:客户端接收到 FIN 报文后,向服务端发送 ACK 应答报文,接着客户端进入 TIME_WAIT 状态,等待 2MSL 一段时间后客户端自动进入 CLOSED 状态,服务器收到 ACK 应答报文后进入 CLOSED 状态。

为什么挥手需要四次?

TCP 连接是全双工的,双方可以同时发送和接收数据。第一次客户端发送 FIN 报文后只表示它不再发送数据,但还是能接受数据。服务端接收到 FIN 报文,回一个 ACK 应答报文,这次服务端可以还有数据需要处理和发送,等它处理完成,发送一个 FIN 报文表示不再发送数据,客户端再回一个 ACK 应答报文。由于服务端处理数据需要时间,因此服务端的 ACK 和 FIN 报文是发送的,所以需要四次挥手。

TCP 四次挥手可以变成三次挥手吗?

如果被动关闭方没有数据需要发送,并且开启了TCP 延迟确认机制,那么第二次和第三次挥手就会合并传输,四次挥手变成三次挥手。

为什么主动关闭方需要等待 2MSL 后才关闭连接

MSL 是报文的最大生存时间,它是任何报文在网络上存在的最大时间,超过这个时间报文将丢失。如果第四次挥手的 ACK 报文丢失,被动关闭方将重发 FIN 报文,主动关闭方的 TIME_WAIT 时间为 2MSL 表示允许第四次挥手的 ACK 报文丢失一次

为什么主动关闭方需要 TIME_WAIT 状态

防止历史连接中的数据被后续相同四元组连接错误的接收:TIME_WAIT 设置成 2MSL 可以保证两个方向上发送的数据都能被丢失。

确保被动关闭方能正常关闭。

四元组指的是:目的地址、目的端口、源地址和源端口。通过四元组可以唯一确定一个连接。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8127

    浏览量

    82557
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1272

    浏览量

    78306
  • 端口
    +关注

    关注

    4

    文章

    820

    浏览量

    31597

原文标题:TCP 四次挥手过程分析

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    通信必备知识!TCP与UDP协议介绍及使用

    TCP与UDP是两个最常用的通讯协议。TCP是面向连接的协议,需要在收发数据前与对方建立可靠的连接,建立连接的过程为3次握手,断开连接的过程为4次
    的头像 发表于 03-15 08:19 1024次阅读
    通信必备知识!<b class='flag-5'>TCP</b>与UDP协议介绍及使用

    说说TCP三次握手的过程?为什么是三次而不是两次、四次

    说说TCP三次握手的过程?为什么是三次而不是两次、四次TCP三次握手是建立TCP连接的过程
    的头像 发表于 02-04 11:03 228次阅读

    tcp协议四次挥手过程及原因

    TCP协议致力于可靠的数据传输,即使在连接关闭时也不例外。在关闭连接之前,双方需要确保对方已经接收到了所有的数据,以避免数据丢失或不完整。
    的头像 发表于 02-03 16:51 1333次阅读
    <b class='flag-5'>tcp</b>协议<b class='flag-5'>四次</b><b class='flag-5'>挥手</b><b class='flag-5'>过程</b>及原因

    浅谈TCP三次握手和四次挥手

    在计算机网络的基本概念中,分层次的体系结构是最基本的。计算机网络体系结构的抽象概念较多,在学习时要多思考。这些概念对后面的学习很有帮助。
    的头像 发表于 01-03 13:40 481次阅读
    浅谈<b class='flag-5'>TCP</b>三次握手和<b class='flag-5'>四次</b><b class='flag-5'>挥手</b>

    关于TCP协议总结的硬核干货

    本文给出TCP报文格式的详细说明,介绍网络数据包传递中如何进行地址解析、建立TCP连接的三次握手过程以及断开TCP连接的四次
    发表于 11-17 09:26 237次阅读
    关于<b class='flag-5'>TCP</b>协议总结的硬核干货

    TCP的长连接和短连接

    是通过四次挥手。所以说,每个TCP连接的建立和释放都是需要消耗资源和时间成本的。 二 TCP短连接 模拟一种TCP短连接的情况: clien
    的头像 发表于 11-13 10:46 526次阅读

    TCP通信过程详解

    握手的,而释放则需要4次挥手,所以说每个连接的建立都是需要资源消耗和时间消耗的 经典的三次握手示意图: 经典的四次挥手图: tcp的十种状态图: 注意: 当一端收到一个FIN,内核让r
    的头像 发表于 11-09 14:39 413次阅读
    <b class='flag-5'>TCP</b>通信<b class='flag-5'>过程</b>详解

    TCP协议详细解析

    TCPTCP/IP协议族中一个最核心的协议,它向下使用网络层IP协议,向上为应用层HTTP、FTP、SMTP、POP3、SSH、Telnet等协议提供支持。本文给出TCP报文格式的详细说明,介绍网络数据包传递中如何进行地址解析
    的头像 发表于 11-03 09:14 1783次阅读
    <b class='flag-5'>TCP</b>协议详细解析

    TCP连接的建立与中止

    常重要的 。 TCP 连接的建立可以简单地称为三次握手,而连接的中止则可以称为四次挥手。 建立连接 TCP/IP 协议中, TCP 协议提供
    的头像 发表于 10-08 16:52 466次阅读

    TCP协议如何优化

    TCP/IP协议经常在面试中会被问到,基础的会问三次握手和四次挥手,更深一点可能会问TCP如何优化等问题,下面我们来再详细了解一下这些问题。 1. 前言
    的头像 发表于 10-08 15:15 832次阅读
    <b class='flag-5'>TCP</b>协议如何优化

    TCP和UDP分别是什么 tcp三次握手和4次挥手过程

    等应用场景。 UDP,即用户数据报协议(User Datagram Protocol),面向无连接、不可靠传输的协议,没有 TCP 那么严格的连接建立和释放过程,因此传输效率较高,直接将数据报文发送给对方主机,但无法保证数据传输的可靠性、有序性和完整性,常用于实时音视频
    的头像 发表于 09-29 15:51 560次阅读

    TCP/IP三次握手与四次挥手讲解

    第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
    发表于 08-22 09:42 216次阅读
    <b class='flag-5'>TCP</b>/IP三次握手与<b class='flag-5'>四次</b><b class='flag-5'>挥手</b>讲解

    TCP和UDP分别是什么 TCP和UDP协议各有什么特点

    TCP 四次挥手的最后一步,客户端进入 TIME_WAIT 状态,需要等待一段时间再进入 CLOSED 状态。等待时间通常是两个最大报文段生命周期,即 2MSL,这是为了确保服务器端能够收到客户端发送的最后一个 ACK 报文
    的头像 发表于 08-09 12:34 2868次阅读

    TCP通信过程中的长连接与短连接是什么?

    当面试官问你:TCP 通信过程中的长连接与短连接是什么?
    的头像 发表于 08-08 11:30 543次阅读
    <b class='flag-5'>TCP</b>通信<b class='flag-5'>过程</b>中的长连接与短连接是什么?

    TCP四次挥手过程与状态

    这样他们两个之间就没有什么关系。这样一个过程同样像极了TCP要断开连接的过程
    的头像 发表于 07-10 16:25 511次阅读
    <b class='flag-5'>TCP</b><b class='flag-5'>四次</b><b class='flag-5'>挥手</b>的<b class='flag-5'>过程</b>与状态