简述TCP四次挥手

简述TCP四次挥手四次握手主要用到了两个标志位(ACK&FIN):ACK示意参考:TCP三次握手FIN:终止数据传输标志位—->当FIN为1的时候代表此数据为终止断开连接的请求四次挥手流程:由于TCP连接是双向传输的对等的模式即双工wiki百科定义:全双工(full-duplex)的系统允许二台设备间同时进行双向资料传输。全双工的系统可以用复线铁路类比。两个方向的车辆因使用不同的轨道,因此不会互相影响。一般的电话、手机就是全双工的系统,因为在讲话时同时也可以听到对方的声音意思是说

大家好,又见面了,我是你们的朋友全栈君。

四次挥手主要用到了两个标志位(ACK&FIN):

  • ACK 示意参考:TCP三次握手
  • FIN: 终止数据传输标志位—->当FIN为1的时候代表此数据为终止断开连接的请求

四次挥手流程:

在这里插入图片描述

由于TCP连接是双向传输的对等的模式即双工 wiki百科定义:

全双工(full-duplex)的系统允许二台设备间同时进行双向资料传输。全双工的系统可以用复线铁路类比。两个方向的车辆因使用不同的轨道,因此不会互相影响。
一般的电话、手机就是全双工的系统,因为在讲话时同时也可以听到对方的声音

意思是说双方都可以同时向对方发送或接收数据。当客户端要关闭连接时,会发送请求告知服务器我要关闭连接了。这时服务器会回一个确认数据,这时客户端到服务器的连接关闭。但是服务器到客户端的连接并没断开仍然可继续传输数据,等到服务器发送完了所有的数据后,会发送一个FIN段来关闭此方向上的连接。客户端发送ACK确认关闭连接 此时双方的连接都关闭了即挥手成功

第一次挥手:

客户端向服务器请求断开连接

  • seq:我(client)这条数据的序列号是300
  • FIN:我(client)已经没有数据给你发送了 我要断开连接

当服务器收到客户端终止连接请求的时候需要做出响应即第二次挥手

第二次挥手:

服务器表示已经收到了客户端断开连接的请求

  • ack: 我(server)已经收到你(client)序列号为300的数据了
  • ACK:服务器表示你(client)断开连接的请求我(server)这边已经正确收到了

至此客户端到服务器的连接关闭,但服务器还存在部分数据没有发送给客户端的情况 当服务器发送完成数据会向客户端发送断开连接的请求即第三次挥手

第三次挥手:

服务器收到客户端断开连接且已经没有数据需要发送给客户端的时候向客户端请求断开连接

  • seq:我(server)这条数据的序列号400
  • FIN:我(server)已经没有数据给你发送了 我要断开连接

当客户端收到服务器终止连接请求的时候需要做出响应即第四次挥手

第四次挥手:

服务器表示已经收到了客户端断开连接的请求

  • ack: 我(client)已经收到你(server)序列号为400的数据了
  • ACK:客户端表示你(server)断开连接的请求我(client)这边已经正确收到了

至此服务器到客户端的连接关闭 客户端到服务器的连接也关闭了 四次挥手保证了双端正确的断开连接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139535.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最炫python表白代码_有趣的python代码表白

    最炫python表白代码_有趣的python代码表白文章目录前言演示网站制作部署网站二维码制作总结前言跟着我做,不要跳着看,否则你会失败。第一步是制作二维码;第二步是制作网站。演示具体成果地址:https://yanghanwen.xyz/ai/网站制作首先你需要下载我的这个完整项目:链接:https://pan.baidu.com/s/1EmRehx_gRnT5hLjJvKuAIg提取码:pz1y–来自百度网盘超级会员V2的分享下载好后文件目录如下:然后你需要注意的是我把img里面的图片删了,涉及隐私,大家自己替换自己追

    2022年8月30日
    6
  • sass和less的区别使用_连山易的原理及用法

    sass和less的区别使用_连山易的原理及用法1.原理          1.1Less定义:是一种动态的样式语言,使CSS变成一种动态的语言特性,如变量、继承、运算、函数。Less既

    2025年6月25日
    2
  • 鸿蒙(HarmonyOS)支持低代码开发,无需HTML知识,就可以设计复杂界面

    鸿蒙(HarmonyOS)支持低代码开发,无需HTML知识,就可以设计复杂界面鸿蒙的最新IDE支持可视化开发。几乎不需要编写一行代码,就可以设计非常复杂的界面。当然,如果要实现业务逻辑,还是需要编写代码的。所以我们把这些功能称为低代码开发,也就是说,可以让我们少编写一些代码。

    2022年7月12日
    36
  • ldap 统一认证 java_如何在你的系统里集成LDAP统一认证「建议收藏」

    一、为什么需要统一认证日常办公经常会有多套系统,如果各个系统各自维护一套用户认证,用户需要记住多个用户名密码。系统各自管理用户认证的方式,不但会有重复建设的问题,用户体验也会差,经常会有用户忘记密码的情况。二、LDAP统一认证是什么LDAP是LightweightDirectoryAccessProtocol(轻量级目录访问协议)的缩写,它是基于X.500标准的轻量组播目录访问协议。目录…

    2022年4月17日
    73
  • 对java面向对象的三大特征的理解_Java面向对象的三大特征是什么?

    对java面向对象的三大特征的理解_Java面向对象的三大特征是什么?面向对象的三大核心特性简介面向对象开发模式更有利于人们开拓思维,在具体的开发过程中便于程序的划分,方便程序员分工合作,提高开发效率。该开发模式之所以使程序设计更加完善和强大,主要是因为面向对象具有继承、封装和多态3个核心特性。1、继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类…

    2022年7月15日
    18
  • java接口和抽象类区别面试题_接口是一个特殊抽象类

    java接口和抽象类区别面试题_接口是一个特殊抽象类原文:http://blog.csdn.net/sunboard/article/details/38318231.概述一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可

    2025年6月11日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号