简述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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Javadoc 使用详解

    Javadoc 使用详解一:简介Javadoc用于描述类或者方法的作用。Javadoc可以写在类上面和方法上面。https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html二:写在类上面的Javadoc写在类上的文档标注一般分为三段:第一段:概要描述,通常用一句或者一段话简要描述该类的作用,以英文句号作为结束第…

    2025年12月8日
    3
  • c#爬取Silverlight网页[通俗易懂]

    c#爬取Silverlight网页[通俗易懂]前言:爬取普通的文本网页非常容易,但爬取Silverlight的网页代码时,有时候可能会加密。这样就会很麻烦了。下面就爬取网站http://zx.bjmemc.com.cn/(北京空气质量网)进行说明。任务:网站http://zx.bjmemc.com.cn/显示的内容如下图所示。我们的任务就是将空气质量数据抓取下来。工具:1、fiddler,http://www.

    2022年10月19日
    2
  • 网络游戏开发基础篇

    本篇的内容,会介绍几个内容:单例,dll动态加载以及一些跨平台的处理。       1、单例:单例模式是一种使用广泛而又比较简单的设计模式,他的定义我就不多介绍了,大家上网一查就知道了,基本都能理解。在游戏开发中,会有很多单件,所以封装一个单例类供后面的开发使用。       本单例使用模板实现,代码如下:[cpp] viewplaincopyprint?//

    2022年4月5日
    41
  • Maven(一):安装与环境配置、使用Maven搭建web项目

    Maven(一):安装与环境配置、使用Maven搭建web项目

    2021年9月26日
    50
  • python表白代码大全简单-python告白代码,只属于程序员的浪漫

    python表白代码大全简单-python告白代码,只属于程序员的浪漫不知何时,不知何因,程序员这个行业成为大家茶余饭后取乐的无辜群体。只要说到程序员,脑海中就浮现出刻板印象,标配穿搭:格子衫,牛仔裤,黑框眼镜。当然秃顶也是必须的,更狠的吐槽还有邋里邋遢,不懂浪漫,不知人情世故!开始可能只是幽默玩笑,后面慢慢就越传越多,大家便信以为真!可是程序员真的是这样吗?随着现在编程这个行业的普遍高薪收入,程序员又成为大家关注的焦点,深入的了解后,发现程序员其实是很可爱的一个群…

    2022年6月2日
    39
  • MATLAB对Googlenet模型进行迁移学习

    MATLAB对Googlenet模型进行迁移学习调用MATLAB中的Googlenet工具箱进行迁移学习。%%加载数据clc;closeall;clear;Location=”;%这里输入自己的数据集unzip(‘MerchData.zip’);imds=imageDatastore(‘MerchData’,…%若使用自己的数据集则改为Location(不加单引号)…

    2022年8月14日
    5

发表回复

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

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