ACE通信设计空间指导

news/2024/7/24 10:02:18 标签: c++

ACE通信设计空间

通信是网络应用程序设计的基础。本章就通信设计空间做了领域分析,介绍了网络应用程序之间互相作用的规则、形式和抽象层次。

本章我们将讨论一下设计空间:

一、无连接协议和面向连接协议

所谓协议,就是一组规则,用来指定“控制信息”和“数据信息”如何在通信实体(譬如,在网络计算环境内部相互作用的应用程序进程)之间交换。协议一般分为无连接(connectionsless)和面向连接两种。

在这一设计空间,需要权衡的地方: 延迟、可伸缩性和可靠性。

1.1、无连接协议

无连接协议提供的是“面向消息”的服务。其中,每一条消息都可以独立寻址和发送。无连接协议一般采用“尽力”发送语义。这些语义不保证某组消息会以特定次序到达目的地,甚至根本不会到达目的地!

例如:UDP、 IP、这些协议可以直接被多媒体应用使用。这些应用允许一定程度的数据丢失。UDP/IP还支持多播和广播功能。

1.2、面向连接协议

面向连接协议提供的是可靠、有序、不重复的发送服务。对那些不允许数据丢失的应用程序来说,这种协议十分有用。

为了提高性能并保证可靠性,“面向连接”协议在发送端和接收端交换并维护状态信息。

例如:TCP协议,它被使用到很多“面向会话”的Internet应用中。如Web服务和电子邮件中。

使用面向连接协议时,应用程序和中间件开发者还必须作出以下设计选择:

1.2.1、数据成帧策略(想问问,是防止粘包吗?)

"面向连接"协议提供了不同种类的数据成帧策略。例如, “面向消息”发送策略为某些“面向连接”协议所支持,如TP4和XTP。相反,TCP是一种字节流协议,不保护应用程序消息的边界。因此,在TCP上,如果某一应用程序通过4个send()调用传输4条不同的消息,会有一个或多个TCP数据段被传输给接收端。所以,如果某一应用程序需要"面向消息"发送,发送端和接收端就必须执行额外的处理,以将4条仔TCP上交换的消息分割成帧。如果消息的长度总相同,并且永远没有网络错误发生,成帧相对来说简单:否则,这会成为一个不小的问题。譬如:粘包的处理。

1.2.2、连接多路复用


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

相关文章

Java泛型机制

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

具有文件操作和滤波功能的Open3D软件界面(附python pyqt 代码)

安装依赖 pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install pyopengl -i https://pypi.tuna.tsinghua.edu.cn/simple/对代码的解释: 定义open3d_software类: 这个类继承自QtWidgets.QMainWindow和Ui_MainWindow类,用于创建Open3D软件的主窗…

解决未授予用户在此计算机上的请求登录类型

步骤一:在被访问的计算机中操作 1、点击开始菜单,在计算机上单击右键,选择管理。 2、依次展开系统工具—本地用户和组—用户。 未授予用户在此计算机上的请求登录类型 3、双击Guest,将账户已禁用前面的勾去掉,点击应…

重要通知,亚马逊正式取消轻小商品计划!

美亚轻小商品计划今日正式关闭 轻小商品计划允许卖家以更低的配送费用提供更小、更轻、更便宜的产品。正常的亚马逊FBA费用通常会使销售低价商品无利可图,但轻小商品计划降低了满足某些标准(包括重量、尺寸和价格)的商品的配送成本。 不过&a…

百度百科词条怎么更新?怎么能顺利更新百科词条?

企业和个人百度百科词条的更新对于他们来说都具有重要的意义,具体如下: 对企业来说: 塑造品牌形象:百度百科是一个常被用户信任并参考的知识平台,通过更新企业词条可以提供准确、全面的企业信息,帮助企业塑…

UDP通信、本地套接字

#include <sys/types.h> #include <sys/socket > ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);- 参数&#xff1a;- sockfd : 通信的fd- buf : 要发送的数据- len : 发送数据的长度…

【Python数据分析】数据分析之numpy基础

实验环境&#xff1a;建立在Python3的基础之上 numpy提供了一种数据类型&#xff0c;提供了数据分析的运算基础&#xff0c;安装方式 pip install numpy导入numpy到python项目 import numpy as np本文以案例的方式展示numpy的基本语法&#xff0c;没有介绍语法的细枝末节&am…

Spring Boot 中 Nacos 配置中心使用实战

官方参考文档 https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 本人实践 1、新建一个spring boot项目 我的spirngboot版本为2.5.6 2、添加一下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…