面向消息的协议与面向流的协议之间的区别[关闭]

问题描述 投票:0回答:4

我试图理解

message-oriented
stream-oriented
协议之间的区别。我四处搜寻,没有发现两者之间的明确解释或区别。有人可以解释一下我或提供一个页面链接来解释是否存在差异吗?

谢谢你

tcp udp network-protocols sctp mom
4个回答
80
投票

面向消息的协议以不同的块或组发送数据。数据接收者可以确定一条消息在哪里结束,另一条消息从哪里开始。流协议发送连续的数据流。

这是一个手机示例。文本消息将是面向消息的协议,因为每个文本消息都与其他消息不同。电话呼叫是面向流的,因为整个呼叫过程中有连续的音频流。

互联网上常用的协议是UDP(面向消息)和TCP(面向流)。维基百科这些术语以获取更多信息。

希望这有帮助


32
投票

流协议逐字节发送数据。您可以将其视为管道,其中一侧进入的所有内容都会转移到另一侧。另一方的任务是确定何时拥有足够的数据来理解它。

TCP 就是一个典型的例子。一旦您通过管道发送“Hello World”,就无法保证它会以这种方式发送。它可以是每个字母本身、两个单词或一个整体。您唯一知道的是字母的顺序相同。

消息协议通常是在流上构建的,但中间有一层负责将每个逻辑部分与另一个逻辑部分分开。它为您解析输入流,并仅在整个数据集到达而不是中间的所有状态到达时才为您提供结果。在前面的示例中,您只会期望完整的“Hello World”消息或什么也没有。

这是相当简化的视图,但我认为它解释了最大的区别。


4
投票

有点复杂。

一般来说,有两种不同类型的低级(OSI:物理)类型:

  • 以包裹为导向的运输
  • 渠道导向的运输

两种传输类型都可以通过调频、调幅、调相...来发送

这些频率/幅度/...(也称为模拟调制)可以通过数字化来增强。或用于数字信号。这称为数字调制。

参见:https://en.wikipedia.org/wiki/Modulation

面向包裹的运输使用一条线路运送多个包裹。 面向通道的传输针对不同的包裹使用不同的线路。面向信道的传输(如无线电中使用的)的优点是信号无需立即发送。缺点是该通道很少被使用。因此,总带宽较低。因此,我们在互联网上使用面向包的传输。但是,这种传输可以基于面向通道的频率调制(如电缆调制解调器)或基于单线封装的幅度调制(如电话线)。

最终,UDP 和 TCP 在 OSI 第 5 级(传输)中是面向包的。因此,关于流式传输和面向消息的 TCP 之间有什么区别的问题是一个很好的问题。

来自shoutcast.com的使用TCP的流也被分成包。 (流数据包/消息分为 TCP 数据包。)一个 TCP 数据包有可能丢失。只是,因为 TCP 是面向地址的并且枚举其包,所以可以再次请求该包。这使得 TCP 变得可靠。

TCP 之上现在是流。他们利用根据包号对 TCP 包进行排序的可能性。关键是,它们发送数据,而数据更有可能每时每刻都切换到流中。

也许,这澄清了问题。

问候


3
投票

消息流和字节流的主要区别在于消息边界。此外,消息流将跟踪消息边界,但字节流不会。

考虑在网络中,1024 字节的数据被传输到主机,然后一分钟后又有 1024 字节传输到同一主机,那么接收器将总共收到 2048 字节的数据。

在此传输中,消息流将发送两个不同的 1024 字节消息,而在字节流中,会将完整的 2048 字节作为单个单元传输到接收器。

例如。消息流是页面序列。 前任。下载歌曲或电影的字节流。

© www.soinside.com 2019 - 2024. All rights reserved.