当前位置: 首页 > news >正文

<JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流

目录

TCP的通信机制的核心特性

七、延时应答

1)什么是延时应答?

2)延时应答的作用

八、捎带应答

1)什么是捎带应答?

2)捎带应答的作用

九、面向字节流

1)沾包问题

2)“沾包问题”如何处理?

3)UDP协议会不会出现“沾包问题”?


TCP的通信机制的核心特性

TCP的通信机制最核心的特性是可靠传输。
TCP至少通过以下机制来保证传输的可靠性,在保证可靠性的同时也采取一些机制来提升传输效率
<1> 确认应答<6> 阻塞控制
<2> 超时重传<7> 延时应答
<3> 连接管理<8> 捎带应答
<4> 滑动窗口<9> 面向字节流
<5> 流量控制<10> 异常情况处理

阅读指针 -> 《 TCP 的通信机制 -- 流量控制 和 拥塞控制 》<JavaEE> TCP 的通信机制(四) -- 流量控制 和 拥塞控制-CSDN博客文章浏览阅读203次,点赞8次,收藏7次。介绍了 TCP 的通信机制 -- 流量控制 和 拥塞控制https://blog.csdn.net/zzy734437202/article/details/135257678


七、延时应答

1)什么是延时应答?

当接收端接受了大量数据后,如果立刻返回ACK,此时ACK中“窗口大小”属性的值,就会比较小。
发送端在收到这条ACK后,就会降低数据的发送速率,以适应这个“窗口大小”。
延时应答就是,接收端在收到大量数据后,不立刻返回ACK,而是等待读取接收缓冲区的数据之后,再行返回ACK。此时ACK中“窗口大小”属性的值,就会比较大。

2)延时应答的作用

窗口越大,网络吞吐量就越大,传输效率就越高。
延时应答就是为了在保证网络不拥塞的情况下,尽量提高传输效率。

八、捎带应答

1)什么是捎带应答?

捎带应答的意思就是字面意思,服务器端返回响应时,捎带了其他的报文段。将原本的两条数据报合并为一条数据报,进行返回。

2)捎带应答的作用

原本需要传输两条数据报,就封装分用两次。通过捎带应答,将这两条数据报合并为一条,也就只需要封装分用一次了。这在延时应答的基础上,进一步提升了传输效率。

九、面向字节流

1)沾包问题

TCP以字节流传输数据,接收端从接收缓存区中读取字节数据。
以应用层角度看,收到的数据都是一个个的字节,无法区分应用层数据包从哪个字节开始到哪个字节结束。就类似数据包都粘到一起了,因此称为“沾包问题”。

2)“沾包问题”如何处理?

“沾包问题”的本质是应用层无法知道数据包开始和结束,也就是数据包的边界。
因此,要处理“沾包问题”,就要明确数据包的边界在哪里。
大体上可以通过以下两种方式处理沾包问题:
<1> 明确分隔符:在两个数据包之间使用分隔符,这个分隔符就属于应用层协议的内容,由程序员自定义。应用程序读取到这个分隔符,则认为得到了一个完成的数据包。
<2> 明确数据包长度:在数据包的包头写入该数据包的长度,应用程序按照这个长度读取数据,就得到一个完整的数据包。

3)UDP协议会不会出现“沾包问题”?

UDP协议不会出现“沾包问题”。因为“沾包问题”的本质是数据包边界不明确。
而UDP协议是面向数据报的,一个数据报就是一个包。因此数据包边界明确。

阅读指针 -> 《 TCP 的通信机制(六) -- 异常情况处理 和 总结 》

<JavaEE> TCP 的通信机制(六) -- 异常情况处理 和 总结-CSDN博客介绍了TCP通信机制中异常情况的处理方法。对TCP通信机制进行了总结。https://blog.csdn.net/zzy734437202/article/details/135259471

相关文章:

<JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流

目录 TCP的通信机制的核心特性 七、延时应答 1&#xff09;什么是延时应答&#xff1f; 2&#xff09;延时应答的作用 八、捎带应答 1&#xff09;什么是捎带应答&#xff1f; 2&#xff09;捎带应答的作用 九、面向字节流 1&#xff09;沾包问题 2&#xff09;“沾包…...

电脑怎么设置代理IP上网?如何隐藏自己电脑的真实IP?

在现代互联网中&#xff0c;代理IP已成为许多用户保护隐私和上网安全的重要手段。通过设置代理IP&#xff0c;用户可以隐藏自己的真实IP地址&#xff0c;提高上网的安全性&#xff0c;同时保护个人信息不被泄露。本文将详细介绍如何设置代理IP上网以及如何隐藏电脑的真实IP地址…...

Django信号机制源码分析(观察者模式)

Django信号的实现原理本质是设计模式中的观察者模式&#xff0c;浅谈Python设计模式 -- 观察者模式&#xff0c;也可以叫做发布-订阅模式&#xff0c;信号对象维护一个订阅者列表&#xff0c;当信号被触发时&#xff0c;它会遍历订阅者&#xff0c;依次通知它们。 先来回顾一下…...

MyBatis-config.xml配置文件

1、基本介绍&#xff1a; mybatis的核心配置文件(mybatis-config.xml)&#xff0c;比如配置jdbc连接信息&#xff0c;注册mapper等等&#xff0c;我们需要对这个配置文件有详细的了解。 官网地址有详细介绍 mybatis – MyBatis 3 | 配置 2、properties属性 在通常的情况下&am…...

【Spring实战】17 REST服务介绍

文章目录 1. 为什么出现2. 拥有哪些优势3. Spring中的应用4. spring-boot-starter-data-rest总结 REST&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;通常用于设计网络应用程序的服务接口。RESTful 服务是基于 REST 原则构建的网络服…...

java struts2教务管理系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java struts2 教务管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助 struts2 框架开发&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库…...

跟着cherno手搓游戏引擎【3】事件系统和预编译头文件

不多说了直接上代码&#xff0c;课程中的架构讲的比较宽泛&#xff0c;而且有些方法写完之后并未测试。所以先把代码写完。理解其原理&#xff0c;未来使用时候会再此完善此博客。 文件架构&#xff1a; Event.h:核心基类 #pragma once #include"../Core.h" #inclu…...

排序算法之快速排序

快速排序是一种高效的排序算法&#xff0c;它的基本思想是采用分治策略&#xff0c;将一个无序数组分割成两个子数组&#xff0c;分别对子数组进行排序&#xff0c;然后将两个排序好的子数组合并成一个有序数组。快速排序的性能优于归并排序&#xff0c;尤其在处理大规模数据时…...

Docker 从入门到实践:Docker介绍

前言 在当今的软件开发和部署领域&#xff0c;Docker已经成为了一个不可或缺的工具。Docker以其轻量级、可移植性和标准化等特点&#xff0c;使得应用程序的部署和管理变得前所未有的简单。无论您是一名开发者、系统管理员&#xff0c;还是IT架构师&#xff0c;理解并掌握Dock…...

用IDEA创建/同步到gitee(码云)远程仓库(保姆级详细)

前言&#xff1a; 笔者最近在学习java&#xff0c;最开始在用很笨的方法&#xff1a;先克隆远程仓库到本地&#xff0c;再把自己练习的代码从本地仓库上传到远程仓库&#xff0c;很是繁琐。后发现可以IDEA只需要做些操作可以直接把代码上传到远程仓库&#xff0c;也在网上搜了些…...

【Linux】进程控制深度了解

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握Linux下的进程控制 > 毒鸡汤&#xff…...

kbdnso.dll文件缺失,软件或游戏报错的快速修复方法

很多小伙伴遇到电脑报错&#xff0c;提示“kbdnso.dll文件缺失&#xff0c;程序无法启动执行”时&#xff0c;不知道应该怎样处理&#xff0c;还以为是程序出现了问题&#xff0c;想卸载重装。 首先&#xff0c;先要了解“kbdnso.dll文件”是什么&#xff1f; kbdnso.dll是Win…...

Spring技术内幕笔记之IOC的实现

IOC容器的实现 依赖反转&#xff1a; 依赖对象的获得被反转了&#xff0c;于是依赖反转更名为&#xff1a;依赖注入。许多应用都是由两个或者多个类通过彼此的合作来实现业务逻辑的&#xff0c;这使得每个对象都需要与其合作的对象的引用&#xff0c;如果这个获取过程需要自身…...

kotlin foreach 循环

java中的foreach循环也使用于kotlin &#xff0c;先回顾下java里面的foreach循环 java foreach循环格式 for(元素类型t 元素变量x : 遍历对象obj){引用了x的语句;} 例如&#xff1a; int[] intary {1,2,3,4};for (int a: intary) {Log.d("intary", String.value…...

分享相关知识

直接使用海龟图进行创作移动动态的游戏 这段代码是一个简单的turtle模块实现的小游戏&#xff0c;主要功能包括&#xff1a; 窗口和无人机初始化&#xff1a; 创建了一个turtle窗口&#xff0c;设置了窗口的背景颜色和标题。创建了一个表示无人机的turtle&#xff0c;形状为正…...

RabbitMQ(七)ACK 消息确认机制

目录 一、简介1.1 背景1.2 定义1.3 如何查看确认/未确认的消息数&#xff1f; 二、消息确认机制的分类2.1 消息发送确认1&#xff09;ConfirmCallback方法2&#xff09;ReturnCallback方法3&#xff09;代码实现方式一&#xff1a;统一配置a.配置类a.生产者c.消费者d.测试结果 …...

ubuntu 编译内核报错

Ubuntu 编译 Linux 内核经常会遇到如下错误&#xff1a; 如果报错 canonical-certs.pem&#xff1a; 如下&#xff1a; make[1]: *** No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’. Stop. make: *** [Makefile:1868: …...

Python之自然语言处理库snowNLP

一、介绍 SnowNLP是一个python写的类库&#xff0c;可以方便的处理中文文本内容&#xff0c;是受到了TextBlob的启发而写的&#xff0c;由于现在大部分的自然语言处理库基本都是针对英文的&#xff0c;于是写了一个方便处理中文的类库&#xff0c;并且和TextBlob不同的是&…...

C# 语法进阶 委托

1.委托 委托是一个引用类型&#xff0c;其实他是一个类&#xff0c;保存方法的指针 &#xff08;指针&#xff1a;保存一个变量的地址&#xff09;他指向一个方法&#xff0c;当我们调用委托的时候这个方法就立即被执行 关键字&#xff1a;delegate 运行结果&#xff1a; 思…...

开源可观测性平台Signoz(四)【链路监控及数据库中间件监控篇】

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 前文链接&#xff1a; ​​开源可观测性平台Signoz系列&#xff08;一&#xff09;【开篇】​​ ​​开源可观测性平台Signoz&…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...