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

news/2024/5/17 15:30:30 标签: 网络协议, java-ee, 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


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

相关文章

解决ROS含动态参数的Config文件无法正确识别的错误

问题描述 功能包名为paddle_detection 在工作空间下, 通过catkin_make可以正常通过编译且执行无异常, 可以通过bloom-generate rosdebian生成依赖 但是在将其打包成deb包的过程中fakeroot debian/rules binary报错 fatal error: paddle_detection/paddle_detectionConfig.…

开源大语言模型简记

文章目录 开源大模型LlamaChinese-LLaMA-AlpacaLlama2-ChineseLinlyYaYiChatGLMtransformersGPT-3(未完全开源)BERTT5QwenBELLEMossBaichuan其他

Unreal Engine游戏引擎的优势

在现在这个繁荣的游戏开发行业中&#xff0c;选择合适的游戏引擎是非常重要的。其中&#xff0c;Unreal Engine作为一款功能强大的游戏引擎&#xff0c;在业界广受赞誉。那Unreal Engine游戏引擎究竟有哪些优势&#xff0c;带大家简单的了解一下。 图形渲染技术 Unreal Engin…

mac下jd-gui提示没有找到合适的jdk版本

mac下jd-gui提示jdk有问题 背景解决看一下是不是真有问题了方法一&#xff1a;修改启动脚本方法二&#xff1a;设置launchd环境变量 扩展动态切jdk脚本(.bash_profile) 背景 配置了动态jdk后&#xff0c;再次使用JD-GUI提示没有找到合适的jdk版本。 解决 看一下是不是真有问题…

NodeJs 第四章 net、http、https 模块

net、http、https 模块 netnet 模块是什么net 模块能干些什么net 模块如何创建服务器net 模块如何创建客户端 http如何发送一个http请求如何创建 http 服务 https如何获取 SSL 证书如何创建一个 https 服务 net net 模块是什么 net 模块异步网络 API&#xff0c;用于创建基于…

Mybatis-Plus基础之Mapper的映射规则

文章目录 映射规则1. 列名和属性名不一致2. PO 属性比数据库字段要多3. 关键字冲突4. ID 生成规则 映射规则 1. 列名和属性名不一致 有时你会遇到 PO 类和数据库表字段不一致的情况&#xff0c;并且又没办法将它俩调整成一致。这种情况下&#xff0c;你就要显示地在你的 PO 类…

服务器通常不使用图形化界面的原因

目录 资源利用效率 稳定性和安全性 远程管理和自动化 例外情况 资源利用效率 图形化界面需要大量的系统资源&#xff0c;包括内存和处理器。服务器的主要任务是处理请求、提供服务和保证稳定性。因此&#xff0c;优化资源使用是关键&#xff0c;避免图形化界面对系统性能的…

计算机网络(6):应用层

每个应用层协议都是为了解决某一类应用问题&#xff0c;而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。 应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。即使是对等通信方式&#x…