sockets - 什么是消息边界?

标签 sockets networking tcp udp

以下上下文中的“消息边界”是什么?

One difference between TCP and UDP is that UDP preserves message boundaries.

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

最佳答案

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

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

关于sockets - 什么是消息边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9563563/

相关文章:

ios - 无法连接托管在 Socket.IO 上的 WebSocket API

linux - 在 C 中关闭监听的 TCP 套接字

networking - 在握手过程的第三步用 RST 代替 ACK

Java Publisher Server 聊天程序

networking - TCP 在 GHCi 中工作,在使用 Leksah 编译的程序中缓冲直到程序退出

networking - 使用 ISO8583 消息的 Message Queue 与 TCP

c# - 作为 TcpClient 接收消息

C# 套接字多线程 Lambda

sockets - 保留 TCP 连接的开销

java - 套接字-在没有端口转发的情况下连接同一网络上的两台计算机?