TCP关闭连接时的一些思考

TCP协议是TCP/IP栈中最复杂的协议,它最大的优点是传输的可靠性,这通过面向连接、按序传输、超时重传、流量控制等机制保证其传输的可靠性。但这并不是我们今天要讨论的重点!

TCP通信的过程分别是三个阶段:建立连接、传输数据、关闭连接。建立连接是通过三次握手完成,而关闭连接是通过四次挥手实现。这也不是我们要讨论的重点!

四次挥手的流程如下:

TCP四次挥手

当其中一方在发送完自己的数据后,再没有数据需要通过TCP发送,可以发起关闭连接的请求,对方收到该请求后,首先回复ACK确认,待自己的数据发送完毕后,也会发起自己的关闭连接请求,进而完全断开TCP连接。

TCP建立和关闭连接的请求通常由客户端发起,服务器属于被动方,这是常见的TCP四次挥手的过程。但这不是我们今天要讨论的重点!

我们刚刚说了,这是常见的流程,但不是固定的流程。所有的协议在设计时有三种触发方式:调用接口主动触发、接收报文被动触发、定时器触发。这些触发方式合在为的是能保证协议在工作时的逻辑自洽。简单了说,就是要考虑到任何的可能,在任何一种可能的情况下都不能让协议崩溃。

而上面的TCP四次挥手的过程没有考虑到,如果TCP通信双方同时发起断开连接的请求怎么办?

很明显,作为设计最复杂的协议,TCP不可能不考虑到这一点:

TCP同时发起断开连接的请求

但这还不是我们今天要讨论的重点!虽然TCP考虑到了这种情况,但我们从实际使用中思考,这种情况真的只是为了防止TCP通信双方同时发起断开连接的请求而设计的吗?

有没有可能是A应用层由于某些未知的错误,它需要把这个错误告诉对方B,同时发起断开连接的请求。对方B首先收到的是这个错误通知,这个错误通知触发了B发起断开连接的请求,然后才收到A的关闭连接的请求。

这种情况符合CLOSING的情况,但你能说是双方同时发起的吗?很明显是A发起,在请求没有到达B之前,触发B发起关闭连接的请求。这才是我们今天要讨论的重点!

那么大家在车载以太网中有遇到过这种情况吗?欢迎留言讨论!


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware ESXi虚拟机备份的方法和步骤

关于虚拟机备份 VMware ESXi 是 VMware vSphere 企业虚拟化套件的核心组件。在版本4.1之前,它一直被称为ESX。ESXi是一种裸机管理程序,直接安装在物理服务器上,它提供对底层资源的直接访问和控制,允许您在单个物理主机上创建和运…

私有化部署 Llama3 大模型, 支持 API 访问

私有化部署 Llama3 大模型, 支持 API 访问 视频 https://www.bilibili.com/video/BV1wD421n75p/ 前言 原文 https://ducafecat.com/blog/llama3-model-api-local 通过 ollama 本地运行 Llama3 大模型其实对我们开发来说很有意义,你可以私有化放服务上了。 然后通…

练习题(2024/4/26)

1所有可能的路径 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序) graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph…

科普童话新课堂杂志社科普童话新课堂编辑部2024年第16期目录

作品选 封2,封3-封4 探索新知《科普童话》投稿:cn7kantougao163.com 泱泱国之风 悠悠诗之情 沈灿宇1-3 试论"文化意识"视角下的高中英语阅读教学 董娜4-6 立足小组合作探究优化写作能力培养 时同祥7-9 以"导"促学:全面提升学生的文学核心素养 吴…

[网络安全] apt攻击是什么?

什么是APT攻击:APT攻击的主要特征包括:APT攻击的防御措施:零基础入门学习路线视频配套资料&国内外网安书籍、文档网络安全面试题 什么是APT攻击: APT(Advanced Persistent Threat,高级持续性威胁&…

软件过程与项目管理期末复习

文章目录 1. 课程导论1) 什么是项目?具有什么特征?2) 项目管理的4阶段5过程的具体内容是什么?3) 项目管理的10大知识域是哪些?其中4个是核心知识域?4个核心知识域之间是什么关系?4) 什么是质量管理三角形&a…

汇舟问卷:做国外问卷调查需要准备些什么

大家好,我是汇舟问卷。海外问卷调查在这两年一直是个热门的项目,做这个项目所需要投入的成本是多少?如果我们要做这个项目需要准备什么以及要花多少钱?今天我来为大家讲解一下: 首先准备一台电脑 (内存建议16G,处理器…

C语言进阶:进阶指针(下)

一、 函数指针数组 我们都知道 数组是一个存放相同类型数据的存储空间 那我们已经学习了指针数组 那么函数有没有对应的指针数组呢? 如果有那应该怎么定义呢? 1. 函数指针数组的定义 我们说 函数指针数组的定义 应该遵循以下格式 int (*p[10])(); 首…

UniAD:以规划为导向的端到端自动驾驶

文章链接 这个文章是CVPR2023 Best Paper https://arxiv.org/pdf/2212.10156 提出背景 以往的自动驾驶多数是为不同的任务场景设计部署单独的模型,这样子组成的系统会很复杂如图a。 图b这是多任务共享一个主干,但还是要分离训练,而且不是…

03_Scala变量和数据类型

文章目录 [toc] **变量和数据类型****1.注释****2.变量和常量****3. 标识符的命名规范****4.scala的字符串****5.键盘输入****5.1 StdIn.readLine()****5.2 从文件中读取数据****5.3 Scala向外写数据** 变量和数据类型 1.注释 和Java完全一样 ** ** 2.变量和常量 var name…

外包干了4个月,技术退步明显

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

攻防世界 easyphp

本题主要利用的知识点是php绕过 一、PHP代码分析 首先先看一下代码 我们需要利用get方式上传3个参数a,b,c,这3个分别需要满足不同的条件: a:设置a值;值大于6000000;长度不超过3; b:设置b值;MD…

《QT实用小工具·三十五》基于PathView,Qt/QML做的一个可以无限滚动的日历控件

1、概述 源码放在文章末尾 改项目实现了基于PathView,Qt/QML做的一个可以无限滚动的日历控件,下面是demo演示: 项目部分代码如下所示: import QtQuick 2.7 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4Bu…

基于Spring Boot的口腔管理平台设计与实现

基于Spring Boot的口腔管理平台设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 管理员登录界面图,管理员登录进入口腔管理平…

Spring Cloud OpenFeign使用

OpenFeign源于Netflix的Feign,是http通信的客户端。屏蔽了网络通信的细节,直接面向接口的方式开发,让开发者感知不到网络通信细节。 所有远程调用,都像调用本地方法一样完成。 Spring Cloud OpenFeign 是 Spring Cloud 对 Feign …

Unity AssetsBundle打包

为什么要使用AssetsBundle包 减少安装包的大小 默认情况下,unity编译打包是对项目下的Assets文件夹全部内容进行压缩打包 那么按照这个原理,你的Assets文件夹的大小将会影响到你最终打包出的安装包的大小,假如你现在正在制作一个游戏项目&…

Aigtek:功率信号源是什么东西

功率信号源是一种电子设备,它可以提供可控的、稳定的高功率输出信号。通常用于测试和校准功率放大器、天线等设备,以及进行无线通信、雷达和卫星导航等应用中。下面将详细介绍功率信号源的概念、功能和特点。 功率信号源的概念 功率信号源是指能够产生可…

SCSS的基本使用(一)

目录 一、使用&符号来引用父选择器 二、scss的语法 三、变量(Variables) 四、嵌套(Nesting) 五、mixin 和 include 六、extend 继承 七、import 与 Partials 八、if简单判断 九、if复杂判断 一、使用&符号来引用父…

鸿蒙云函数调试坑点

如果你要本地调试请使用 const {payload, action} event.body/** 本地调试不需要序列化远程需要序列化 */ // const {payload, action} JSON.parse(event.body) const {payload, action} event.body 注意: 只要修改云函数,必须上传云函数 如果使用 const {pay…

【服务器部署篇】Jenkins配置后端工程自动化部署

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…