【发布时间】:2012-03-22 17:49:39
【问题描述】:
以下上下文中的“消息边界”是什么?
TCP 和 UDP 之间的一个区别是 UDP 保留消息 边界。
我了解 TCP 和 UDP 之间的区别,但不确定“消息边界” 的定义。由于 UDP 在每个单独的数据包中都包含了目的地和端口信息,难道是这个给消息一个“边界”?
【问题讨论】:
标签: sockets networking tcp udp
以下上下文中的“消息边界”是什么?
TCP 和 UDP 之间的一个区别是 UDP 保留消息 边界。
我了解 TCP 和 UDP 之间的区别,但不确定“消息边界” 的定义。由于 UDP 在每个单独的数据包中都包含了目的地和端口信息,难道是这个给消息一个“边界”?
【问题讨论】:
标签: sockets networking tcp udp
不,消息边界与目的地或端口无关。 “消息边界”是通过协议发送的两条消息之间的分隔。 UDP 保留消息边界。如果通过 UDP 发送“FOO”然后“BAR”,另一端将收到两个数据报,一个包含“FOO”,另一个包含“BAR”。
如果您通过 TCP 发送“FOO”然后“BAR”,则不会保留消息边界。另一端可能会得到“FOO”,然后是“BAR”。或者它可能会得到“FOOBAR”。或者它可能会得到“F”,然后是“OOB”,然后是“AR”。 TCP 不会尝试保留应用程序消息边界——它只是每个方向的字节流。
【讨论】:
此上下文中的消息边界只是消息/数据包的开始和结束。使用 TCP 连接,所有消息/数据包都组合成连续的数据流,而使用 UDP,消息以其原始形式提供给您。它们将具有精确的字节大小。
【讨论】: