Java网络编程之TCP协议核心机制(三)

题外话

最近学习内容很多嗷

正题

延时应答机制

当客户端发送数据到服务器时,服务器不会立即返回ACK,而是等待一会再返回ACK

这段等待时间应用程序可能会消化掉接收缓冲区中的数据,当服务器返回ACK时,就会携带此时接收缓冲区大小的信息

当客户端下次再发送数据的时候就可以发送的大一些

延时时间的两种策略

1.按照一定的时间指定延时

2.根据收到的数据量延时

上述两个延时策略是结合使用的

捎带应答机制

建立在延时应答机制的基础上,提升效率的方式

具体如下图

粘包问题

在字节流读写数据的场景中,会涉及到一个非常关键的问题,粘包问题

如上图

当客户端向服务器发送给多个数据到内存缓冲区,我们无法知道哪个数据到哪里截止,这就是粘包问题

粘包问题解决方法

1.使用分隔符

定义任意字符都可以,只要字符在请求数据中是不存在的

2.约定包的长度

当我们发送数据的时候,可以将数据长度放在数据前,这样就可以正确读取数据

关于异常情况及处理方法

1.传输过程中,其中一个进程崩溃(结束)了

操作系统可以回收释放对应的PCB(进程控制块),相当于调用close

2.某个主机关机

操作系统会强制结束所有用户进程再进入关机,进程结束后会进行四次挥手断开连接的

3.某个主机电源断电或者网线断开

服务器断电或者网线带哪里,客户端接收不到ACK数据包,就会触发超时重传,重传几次会发送复位报文(RST)

没有响应之后客户端会单方面删除服务器信息

客户端断电或者网线断开,服务器一段时间接收不到客户端发送的数据,就会触发心跳包,服务器会周期性给客户端发送心跳包

正常情况下客户端会给服务器返回ack,但是客户端断电了,就不会返回任何数据

小结

至此,所有的TCP核心机制已经结束了

1.确认应答机制

2.超时重传机制

3.连接管理机制{三次握手,四次挥手}

4.滑动窗口机制

5.流量控制机制

6.拥塞控制机制

7.延时应答机制

8.捎带应答机制

9.战报问题

10异常情况及处理方法

现在加入粉丝团以后就是老粉了,麻烦家人们给个三连(点赞关注收藏!!!)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL 语言:数据操作

文章目录 SELECT 基本结构简单查询连接查询子查询聚集函数和更名操作分组查询字符串操作集合操作UNION 运算INTERSECT 运算EXCEPT 运算 视图查询和更新WITH 子句其他语句总结 SQL 的数据操作包括 SELECT(查询)、INSERT(插入)、DELETE(删除)和 UPDATE(修改)四条语句。 SELECT 基…

深度学习——自适应图片大小选择线宽和字体大小

不知道大家在可视化检测结果时是否会有设置的线宽太小在图片上画出来的框看不清楚,写的字符串看不清楚的烦恼。我发现不论是什么大小的图片,使用yolov5可视化线宽和字符串都能很清晰的显示出来,我根据yolov5上面的可视化代码,改写…

钡铼PLC集成BL121PO协议网关优化电子制造产线的生产效率

PLC转OPC UA协议转换网关BL121PO在电子制造产线中的优化应用,可以显著提高生产效率,促进生产线的智能化和信息化发展。本文将从以下几个方面进行阐述: 提高设备间通信效率:PLC转OPC UA协议转换网关BL121PO通过高效的协议转换&…

Flutter 中的 PositionedTransition 小部件:全面指南

Flutter 中的 PositionedTransition 小部件:全面指南 在 Flutter 中,PositionedTransition 是一个动画 widget,它允许你创建一个动画,使得一个子 widget 从屏幕的一个位置平滑过渡到另一个位置。这在实现各种动态布局变化时非常有…

SpringBoot基础篇

1:parent 目的:减少依赖配置 开发SpringBoot程序要继承spring-boot-starter-parentspring-boot-starter-parent中定义了若干个依赖管理继承parent模块可以避免多个依赖使用相同技术出现依赖版本冲突继承parent的形式也可以采用引入依赖的i形式实现效果…

就说说开一家公司的流程和成本

本人在进互联网公司和外企前,也和一位老板合作做,在一家小微公司里做过技术负责人,所以也了解开办一家公司的流程以及公司运作的成本。 通过本文大家其实能看到创业的难度。具体来讲,开办并维持着一家公司,其实需要操…

使用python写一个程序,持续监控某个windows进程的活动信息,例如占用cpu比例、占用内存等

使用python写一个程序,持续监控某个windows进程的活动信息,例如占用cpu比例、占用内存等 要持续监控某个Windows进程的活动信息,如CPU和内存占用,你可以使用psutil库。如果你还没有安装这个库,你可以使用pip进行安装&…

Python开发 —— 变量、全局变量函数的参数传递

1. Python变量 1.1 变量的定义和使用 在Python中,变量不需要显式声明。通过赋值语句,变量会自动创建。例如: x 10 y "Hello, World!"在这段代码中,x 被赋值为整数10,而 y 被赋值为字符串 "Hello, W…

SpringCloudOpenFeign的详解

1. SpringCloud OpenFeign的特性 1. 概念 Feign是一个声明式web Rest服务客户端。它使编写web服务客户端更容易要使用Feign,请创建一个接口并对其使用注解进行标注它具有可插入注释支持,包括Feign注释和JAX-RS注释Feign还支持可插拔编码器和解码器Spri…

Day25

Day25 网络编程概念 计算机网络 网络编程:TCP协议的三次握手四次挥手 IP地址,端口号:取值范围:065535,保留端口号:01024。 网络协议:TCP协议(类比于打电话,双方需要连接…

项目构建工具maven

一、概述 1、maven是apache的一个开源项目,是一个优秀的项目构建/管理工具 2、apache(软件基金会、非盈利组织、管理维护一些开源项目) 二、功能 1、管理项目中jar包和jar包与jar包之间的依赖 2、完成项目编译、测试、打包 三、核心文件 pom.xml:在里面配置相…

信息学奥赛初赛天天练-14-阅读程序-字符数组、唯一分解定理应用

更多资源请关注纽扣编程微信公众号 1 2019 CSP-J 阅读程序1 (程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填;除特殊说明外,判断题1.5分,选择题3分,共计40分) 1 输入的字符串只能由小写字母或大写字母组…

Redis的非关系型数据库

第七天课堂笔记 今日目标 非关系型数据库(nosql【not only SQL】数据库) Redis的非关系型数据库 Redis的安装和配置 Redis常见数据类型 Redis特性 nosql数据库 not only sql数据库,非关系型数据库,往往采用类似于json来存储数…

【大宗】第一期:大航海时代下的[集运欧线]

一、大航海时代 - 集运欧线前世今生 01 航运合约指数的诞生 ‍‍‍‍ 2023年8月18日,上海期货交易所的伙伴们搞了个大新闻——他们推出了一种新的期货品种,叫做“欧线集运”。这可不是什么普通的期货,它是基于一个叫做SCFIS的指数&#xf…

上海汇正财经官网怎么样?客户好评如潮,口碑赞誉之声不绝于耳

在财经服务领域,客户评价是衡量一家企业信誉和服务质量的重要标准。上海汇正财经作为业内知名的财经服务平台,以其优质的服务赢得了广大客户的认可和好评。大量正面用户评价和成功服务的案例,充分证明了上海汇正财经是一个值得信赖的正规企业…

每日两题 / 131. 分割回文串 42. 接雨水(LeetCode热题100)

131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 数据量较小&#xff0c;考虑直接暴力&#xff0c;每次dfs&#xff1a;以bg作为左区间&#xff0c;往右遍历&#xff0c;找到一段回文串区间后&#xff0c;将回文串插入vector<string>&#xff0c;并以下一个下标…

段位在于面对人性之恶,一笑而过

这个小哥哥不知道是哪里不对劲了&#xff0c;突然给我留言说我在骗流量&#xff0c;骗关注。公众号是我的&#xff0c;文章是我写的&#xff0c;主要分享的就是我创业的一些接单案例&#xff0c;因为之前收到很多无效的留言&#xff0c;寻求合作就几个字我不想接收无效信息&…

Day18学习Java

File - 文件类 File&#xff0c;是文件和目录路径名的抽象表示。 File只关注文件本身的信息&#xff0c;而不能操作文件里面的内容。 File类 – 表示文件或文件夹&#xff0c;不能对文件里的数据进行操作。 对文件里的数据进行操作的是&#xff1a;IO流。 需求1&#xff1a;通…

Unity 权限 之 Android 【权限 动态申请】功能的简单封装

Unity 权限 之 Android 【权限 动态申请】功能的简单封装 目录 Unity 权限 之 Android 【权限 动态申请】功能的简单封装 一、简单介绍 二、Android 权限 动态申请 三、实现原理 四、注意事项 五、案例实现简单步骤 附录&#xff1a; 一、进一步优化 二、多个权限申请…

第三方软件检测机构要具备哪些资质要求?专业测试报告如何申请?

第三方软件检测机构是独立于软件开发商和用户之外的公正机构&#xff0c;负责对软件进行全面的检测和评估。其独立性保证了评测结果的客观性和公正性&#xff0c;有效避免了软件开发商对自身产品的主观偏见和误导。 要成为一家合格的第三方软件检测机构&#xff0c;需要具备一…