计网第五章(运输层)(八)(TCP的连接释放)

目录

一、基本概述

二、具体实现

三、经典问题之为什么客户进程不直接进入关闭状态?

四、保活计时器


一、基本概述

上篇博客(  计网第五章(运输层)(七)(TCP的连接建立))总结了TCP连接建立。

既然有连接建立就肯定有连接释放。

TCP连接释放采用“四次挥手”的方式,即客户和服务器之间需要交换四个报文段。

二、具体实现

(1)初始状态(连接已建立状态):如图,客户端和服务器端处于连接已建立状态。双方可以进行数据传输。

 (2)客户端发送TCP连接释放报文段:如图,使用TCP客户进程的用户进程通知其主动关闭TCP连接。TCP客户进程会发送TCP连接释放报文段。并进入终止等待1状态(FIN-WAIT-1)。很明显,这是主动关闭。

该报文段首部中的终止位FIN和确认位ACK的值都被设置为1,表示这是一个TCP连接释放报文段。同时也对之前收到的报文段进行确认。序号字段seq的值为u,该值为TCP客户进程之前已传送过的数据的最后一个字节的序号加1。确认号字段ack的值为v,该值为TCP客户进程之前已收到的数据的最后一个字节的序号加1。

注意:终止位FIN为1的报文段即使不携带数据,也要消耗掉一个序号。

(3)服务器端发送TCP确认并进入半关闭状态:服务器端收到TCP连接释放报文段后,会发送一个普通的确认报文段,并进入关闭等待状态(CLOSE-WAIT)。

报文段的序号字段seq的值为v,表示TCP服务进程之前已经发送过的数据的最后一个字节的序号加1。(该值也就是之前TCP客户进程收到的数据的最后一个字节的值,即TCP连接释放报文段里面的确认号的字段的值v)确认号字段ack的值为u+1,这是对TCP连接释放报文段的确认。

TCP服务进程这时候会通知高层应用进程:TCP客户进程要与自己断开连接了。此时,TCP客户进程到TCP服务进程这个方向的连接就释放了。这时的TCP连接属于半关闭状态,也就是TCP客户进程已经没有数据要发送了。

但是TCP服务进程到TCP客户进程这个方向的连接还没有断开,所以这时候如果TCP服务进程有数据要发送,TCP客户进程仍需要接收。

注意: 半关闭状态下,TCP客户进程只是不能再主动地发送报文段,但是如果TCP服务进程向其发送报文段,它接收后仍然会向TCP服务进程返回一个针对该报文段的确认报文段。

如果是关闭状态,那么既不会发送也不会接收。

(4)服务端发送TCP连接释放报文段:TCP客户客户进程收到确认报文段后,进入终止等待2状态(FIN-WAIT-2)。

如果TCP服务器进程的应用进程没有数据要发送了,就会通知TCP服务进程释放连接。由于TCP连接释放是由TCP客户进程主动发起的,所以TCP服务进程对TCP连接释放属于被动关闭。

TCP服务进程发送TCP连接释放报文段并进入最终确认阶段(LAST-ACK)。

报文段中序号字段seq的值为w,这是因为前面说过TCP服务进程还能向客户进程发送数据,所以TCP服务进程发送的最后一个报文段不一定就是上面对TCP客户进程发送的TCP连接释放报文段的确认报文。  但是因为TCP客户进程向TCP服务进程的连接已经关闭了,所以TCP服务进程收到的最后一个报文段一定就是TCP客户进程发送的TCP连接释放报文段,所以确认号字段ack的值仍然为u+1,也就是对TCP释放连接报文段的重复确认。

 (5)客户端发送确认报文段:TCP客户进程收到来自TCP服务进程的TCP连接释放报文段之后,必须针对该报文段返回一个普通确认报文段。

报文段的序号字段seq的值为u+1,因为TCP连接释放报文段虽然不消耗数据,但要消耗掉一个序号,所以该报文段的起始序号应该为u+1。确认号字段ack的值为w+1,表示这是对TCP连接释放报文段的确认报文段。

 (6)进入关闭状态:TCP服务进程收到确认报文段之后进入关闭状态,但是TCP客户进程要等待2MSL才能进入关闭状态。MSL指的是最长报文段的寿命。TCP允许不同实现可根据具体情况使用更小的MSL值。

三、经典问题之为什么客户进程不直接进入关闭状态?

 假设TCP客户进程发送完最后一个确认段后直接进入关闭状态。那么应该就是下图:

现在设想一种情况,如果该确认报文段丢失了呢?

 那么TCP服务进程肯定会进行超时重传,而TCP客户进程已经关闭了,所以不会理睬该报文段,而TCP服务进程则一直重复进行超时重传的操作。

所以设置一个时间等待状态可以保证TCP服务进程可以收到最后一个TCP确认并进入关闭状态。并且2ML的时间可以保证TCP客户进程本次TCP连接所发送的报文段在网络中全部消失,这样下次进行TCP连接,网络中就不会有旧连接的报文段。

四、保活计时器

如果TCP双方已经建立了连接,过程中TCP客户进程所在的主机出现了故障,所以通过保活计时器防止这种情况出现后TCP服务进程一直等待客户进程传输数据。

每次TCP服务进程收到TCP客户进程的数据之后,就重新设置并启动保活计时器。如果一直到超时都没收到来自客户进程的数据,那么TCP服务进程就会向TCP客户进程发送一个探测报文段,以后每隔75秒发送一次,若连发10个探测报文段都没有TP客户进程的响应,TCP服务进程就认为TCP客户进程出现了问题,随之关闭该连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/139709.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Wiki.js - 下一代的开源Wiki软件

简介:在众多开源的Wiki软件中,Wiki.js无疑是一个独特且现代的选择。基于Node.js构建,使用了最新的Web技术,Wiki.js为用户提供了一个美观且功能丰富的界面,同时还保留了强大的扩展性和自定义性。无论你是为个人、团队或…

硬件故障诊断:快速定位问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Java IO流实现文件复制

目录 前言 文件复制底层逻辑 代码实现 ​编辑 重点!!! 完整代码 改善思考 前言 Windows文件复制时我们是使用Ctrl C复制Ctrl V粘贴,上一篇文章Java基础入门对存储文件的相关操作 我们学习了Java IO流对文件的读写操作&…

uploadifive上传工具php版使用

uploadifive自带的DEMO文件。 下载地址&#xff1a; http://www.uploadify.com/download/ <!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>UploadiFive Test&…

MQ - 24 Pulsar集群架构设计与实现

文章目录 导图概述集群构建主节点弱 ZooKeeper 实现数据可靠性安全控制传输加密端到端加密身份认证资源鉴权可观测性总结导图 概述 从设计定位上来看,Pulsar 是作为 Kafka 的升级替代品出现的,它主要解决了 Kafka 在集群层面的弹性和规模限制问题。那么现在我们就从集群的角…

STM32实现PMBus从机程序

最近在野火的STM32F103VET6开发板上实现PMBus从机程序&#xff0c;这个程序参考了以下这篇博客的关于使用中断法实现I2C从机程序&#xff1a;STM32设置为I2C从机模式_iic从机_柒壹漆的博客-CSDN博客 &#xff0c;实测这个程序是可以正常运行的&#xff0c;感谢博主的分享&#…

3.wifi开发,网络编程

网络协议栈LwIP WiFi UDP Clinet编程 WiFi UDP Server编程 WiFi TCP Client编程 WiFi TCP Server编程 一。LWIP原理介绍&#xff0c;API介绍&#xff0c;文件结构 1.Lwip支持的协议 2.API 3.文件结构 1.api目录&#xff1a;应用程序接口文件。 2.arch目录&#xff1a;与硬件和…

k8s master 是如何进行pod的调度的

Master 节点将 Pod 调度到指定的 Node 节点的原理 该工作由 kube-scheduler 来完成&#xff0c;整个调度过程通过执行一些列复杂的算法最终为每个 Pod 计算出一个最佳的目标 Node&#xff0c;该过程由 kube-scheduler 进程自动完成。常见的有轮询调度&#xff08;RR&#xff09…

Chrome浏览器删除网站cookies的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

[论文笔记]P-tuning v2

引言 今天带来第五篇大模型微调论文笔记P-tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Across Scales and Tasks。 作者首先指出了prompt tuning的一些不足,比如在中等规模的模型上NLU任务表现不好,还不能处理困难的序列标记任务,缺乏统一应用的能力。 然…

安卓系统--翻译手机rom语言 添加多国语言 编译apk 反编译ODEX 工具步骤解析

很多小品牌机型不具备多语言设置。国内大都是中文。要想换为其他语言除非固件支持。例如国际版固件等等。大厂基本都有中文或者英文或者其他语言配置。而小品牌机型只能通过修改rom来达到多语言调用. 工具步骤演示 今天给友友介绍一款工具&#xff0c;可以用来翻译手机rom语言…

LinkedList相较于Arravlist的特点/优化

Arravlist底层是内存空间连续的数组&#xff0c;可以根据下标进行随机访问&#xff0c;效率比较高&#xff0c;因为在根据下标访问某一个元素时&#xff0c;并不是一个一个去查&#xff0c;而是算出来这个下标的地址&#xff0c;直接根据这个地址的指向去获取的&#xff0c;因为…

Android Key/Trust Store研究+ssl证书密钥

前言&#xff1a;软件搞环境涉及到了中间件thal trustzone certificate key&#xff0c;翻译过来是thal信任区域证书密钥 &#xff0c;不明白这是什么&#xff0c;学习一下 ssl证书密钥 SSL密钥是SSL加密通信中的重要组成部分。SSL证书通过加密算法生成&#xff0c;用于保护网…

思科路由器:NAT的基础配置

一直以来&#xff0c;对于华为、H3C、锐捷交换机的命令配置&#xff0c;不断的有朋友留言&#xff0c;三家交换机的配置命令容易弄混&#xff0c;经常在实际项目配置中出错&#xff0c;因此&#xff0c;找几个基础的示例来练练。 R1配置 Router>en Router>enable Rout…

Apifox接口测试工具详细解析

最近发现一款接口测试工具--apifox&#xff0c;我我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的公式&#xff0c;更能说明apifox可以做什么。 Apifox Postman Swagger Mock JMeter Apifox的特点&#xff1a; 接口文档定义&#xff1a; Api…

2023华为杯D题——基于Kaya模型的碳排放达峰实证研究

一、前言 化石能源是推动现代经济增长的重要生产要素&#xff0c;经济生产活动与碳排放活动密切相关。充分认识经济增长与碳排放之间的关系对转变生产方式&#xff0c;确定碳达峰、碳中和路径极为必要。本研究在对经济增长与碳排放关系现有研究梳理的基础上&#xff0c;系统地分…

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 问题分析、数学模型及代码实现

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 1 题目 1.1 背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血&#xff0c;占全部脑卒中发病率的10-15%。其病因复杂&#xff0c;通常因脑动脉瘤破裂、脑动脉异常等因素&#xff0c;导致…

iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!

iPhone 15 系列机型已于今日正式发售&#xff0c;为解决iPhone15这些机型出现的数据迁移问题&#xff0c;苹果紧急发布了 iOS 17.0.2 更新&#xff0c;内部版本号为 21A350。 需要注意的是&#xff0c; iOS 17.0.2 更新仅适用于 iPhone 15、iPhone 15 Plus、iPhone 15 Pro 和 …

中兴R5300 G4服务器iSAC管理员zteroot密码遗失的重置方法及IPV6地址启用设置

本文讲解中兴R5300 G4服务器BMC带外iSAC管理员zteroot密码遗失&#xff0c;无法登录时如何对其进行密码重置&#xff0c;以及iSAC启用IPV6地址的方法。 一、重置中兴R5300 G4服务器iSAC管理员zteroot密码 1、通过SSH登录到iSAC&#xff0c;默认用户名&#xff1a;sysadmin&am…

科普之加密、签名和SSL握手

一 背景知识 感悟&#xff1a; 不能高不成低不就备注&#xff1a; 以下内容没有逻辑排版,仅做记录 ① 加密方式 说明&#xff1a; 单向和双向认证遗留&#xff1a; 如何用openssl从私钥中提取公钥? ② 互联网数据安全可靠条件 说明&#xff1a; 二者相互印证 二 互联…