<JavaEE> TCP 的通信机制(六) -- 异常情况处理 和 总结

news/2024/5/17 16:57:06 标签: tcp, 网络协议, java-ee

目录

十、异常情况处理

1)进程崩溃终止

2)主机正常关机

3)机器掉电/网络断开

1> 接收端掉线

2> 发送端掉线

TCP 通信机制 总结


阅读指针 -> 《 TCP 的通信机制 -- 延时应答、捎带应答、面向字节流 》<JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流-CSDN博客文章浏览阅读12次。介绍了TCP 的通信机制 -- 延时应答、捎带应答、面向字节流https://blog.csdn.net/zzy734437202/article/details/135258888


十、异常情况处理

1)进程崩溃终止

进程崩溃终止,文件描述符表就会释放,这与代码调用socket.close()等效,会触发FIN报文发送。
TCP的连接,是独立于进程存在的,进程终止,连接还在。
在对端接收到FIN后,就开始进行“四次挥手”,连接正常关闭。

2)主机正常关机

主机正常关机时,会先强制终止进程,此时会触发进程的FIN报文发送。
在对端接收到FIN后,就开始进行“四次挥手”。
但是在“四次挥手”期间,主机可能就已经关闭了,即主机无法对对端的FIN,反馈ACK
对端没有收到ACK报文,就会重发FIN。但多次重发后仍无反馈,就会放弃连接,连接也就关闭了。

3)机器掉电/网络断开

1> 接收端掉线

发送端发送数据后等待ACK,但接收端已经掉线无法发送。
多次触发发送端的超时重传后,就会触发TCP连接重置功能 -- 复位报文段RST 。
复位报文段RST会请求与对端重新建立连接,如果对端还是没有反馈,就会放弃连接。

2> 发送端掉线

接收端仍会继续保持等待,连接不会断开。
但是,TCP中提供了“心跳包”机制。接收端会周期性的给发送端,发送一个没有业务数据的数据包,并期待对方有所应答。
因此,如果发送端多次没有应答,则视为发送端已经掉线,就会关闭连接。

TCP 通信机制 总结

TCP的通信机制最核心的特性是可靠传输。而在保证可靠传输的同时,又希望尽可能提高性能。
以下是TCP保证可靠传输的部分机制:
校验和、序列号、确认应答、超时重发、连接管理、流量控制、拥塞控制等。
以下是TCP提高性能的部分机制:
滑动窗口、快速重传、延迟应答、捎带应答等。
TCP还提供了其他功能以辅助上述机制:
如,定时器(超时重传定时器、保活定时器、TIME_WAIT定时器)等。

阅读指针 -> 《 网络层协议 -- IP协议 》

链接生成中........


http://www.niftyadmin.cn/n/5292442.html

相关文章

文件下载输出zip文件

文件下载输出成zip文件&#xff1a; 1、前端整个按钮&#xff0c;调js方法&#xff1a;&#xff08;参数&#xff1a;param,需要下载的id&#xff0c;用逗号拼接&#xff09; var param "?dto.id";//需要自己拼接param window.location.href "<%basePat…

Ubuntu安装K8S(1.28版本,基于containrd)

原文网址&#xff1a;Ubuntu安装K8S(1.28版本&#xff0c;基于containrd&#xff09;-CSDN博客 简介 本文介绍Ubuntu安装K8S的方法。 官网文档&#xff1a;这里 1.安装K8S 1.让apt支持SSL传输 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certi…

企业级依赖管理: 深入解读 Maven BOM

一、背景 当开发者在一个大型项目中使用 Maven 进行依赖管理时&#xff0c;项目往往会包含多个模块或子项目&#xff0c;并且这些模块会共享相同的依赖项。但是&#xff0c;不同模块可能会独立地指定各自的依赖版本&#xff0c;这可能导致以下问题&#xff1a; 依赖版本不一致…

EasyExcel判断导入时是否符合给定模板

问题描述 在做系统的导入导出模块时需要在导入时判断用户导入的表格是否符合给定的模板&#xff0c;该系统导入导出使用的是EasyExcel&#xff0c;因此在实现该功能时是基于EasyExcel的 解决方案 创建Spring Boot项目&#xff0c;并添加如下依赖 <dependency><group…

redis容灾的方案设计

背景 今年各个大厂的机房事故频繁&#xff0c;其中关键组件Redis是重灾区&#xff0c;本文就来看下怎么做Redis的多机房容灾 Redis多机房容灾方案 1.首先最最直观的是直接利用Redis内部的主从数据同步来进行灾备&#xff0c;但是由于Redis内部的主从实现对机房间的网络延迟等…

BDD - Python Behave 配置文件 behave.ini

BDD - Python Behave 配置文件 behave.ini 引言behave.ini配置参数的类型配置项 behave.ini 应用feature 文件step 文件创建 behave.ini执行 Behave查看配置默认值 behave -v 引言 前面文章 《BDD - Python Behave Runner Script》就是为了每次执行 Behave 时不用手动敲一长串…

WEB 3D技术 three.js 设置环境贴图 高光贴图 场景设置 光照贴图

上文WEB 3D技术 three.js 基础网格材质演示几何体贴图 ao贴图效果我们简单构建了一个贴图和ao贴图的几何体材质 我们接下来 来看一下透明度贴图 我们还是官网搜索 MeshBasicMaterial 然后 是我们的 alphaMap 属性 这里 黑色为完全透明 白色 完全不透明 黑白之间还有灰色 这个灰…

Docker之镜像上传和下载

目录 1.镜像上传 1) 先上百度搜索阿里云 点击以下图片网站 2) 进行登录/注册 3) 使用支付宝...登录 4) 登录后会跳转到首页->点击控制台 5) 点击左上角的三横杠 6) 搜索容器镜像关键词->点击箭头所指 ​ 编辑 7) 进入之后点击实例列表 8) 点击个人实例进入我们的一个…