什么是消息边界?

时间:2012-03-05 08:23:40

标签: c# sockets tcp udp

以下情境中“消息分类”是什么?

  

TCP和UDP之间的一个区别是UDP保留了消息   边界。

我理解 TCP UDP 之间的区别,但不确定“消息边界”的定义。由于UDP包含每个数据包中的目的地和端口信息,是否可以为消息提供“边界”

2 个答案:

答案 0 :(得分:21)

不,消息边界与目标或端口无关。 “消息边界”是通过协议发送的两个消息之间的分离。 UDP保留消息边界。如果您通过UDP发送“FOO”然后“BAR”,另一端将收到两个数据报,一个包含“FOO”,另一个包含“BAR”。

如果通过TCP发送“FOO”然后发送“BAR”,则不会保留任何消息边界。另一端可能会“FOO”然后“BAR”。或者它可能会得到“FOOBAR”。或者它可能会得到“F”然后是“OOB”然后是“AR”。 TCP不会尝试保留应用程序消息边界 - 它只是每个方向的字节流。

答案 1 :(得分:2)

此上下文中的消息边界仅仅是开始和放大。消息/数据包的结尾。使用TCP连接时,所有消息/数据包将组合成连续的数据流,而使用UDP时,消息将以原始形式提供给您。它们将具有精确的字节大小。