什么是消息边界?

KMC*_*KMC 18 c# sockets udp tcp

什么是"消息bonudaries"在以下背景下?

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

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

Dav*_*rtz 24

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

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

  • @KMC:[维基百科 TCP](http://en.wikipedia.org/wiki/Transmission_Control_Protocol):TCP 提供可靠、**有序**的字节流传输 [..] (2认同)
  • @KMC它可能会或可能不会在线路上按顺序传输(实际上会,但没有法律要求如此),但是,它将按顺序呈现给接收应用程序。 (2认同)