他们如何区分比特流中的不同部分
How do they tell apart different parts on a stream of bits
当数据通过网络传输时,显然是二进制形式。
所以它可能是一个数字
1011001
然后是其他一些数据,也许
1110100111001
那个是一起发的
当他们到达时,我们如何区分他们。是否有一些特殊标志指示每个数据的结尾?
如果是,我们如何确保它是唯一的并且我们不会混淆?
例如以太网帧以8字节前导码和帧定界符开始,每个字节为10101010
(我不太确定)
每个数据通常按字节(8 位)读取,Frame 具有定义的结构:
https://en.wikipedia.org/wiki/Ethernet_frame
每帧包含一个数据包:
https://en.wikipedia.org/wiki/Network_packet
试着用谷歌搜索一些关于这个的东西,但我的回答是有定义的结构,如何发送数据
您可以将特殊的位串模式定义为流的开头或结尾,一些协议会这样做,但您必须使其足够长(例如 256 位),这样它就不太可能出现在正常的数据流中。
如果结束模式出现在正常数据中,则更可靠的方法是对其进行转义。您可能知道它是如何工作的,因为每个人都曾在某个时间点接触过在字符串中使用 \
。它们必须转义为 \
.
如果您事先知道流的长度,则可以使用第三种方法,因此您可以在实际发送数据之前发送一个长度。
实际细节定义为协议,双方必须遵循协议的结构,无论其定义如何。
当数据通过网络传输时,显然是二进制形式。
所以它可能是一个数字
1011001
然后是其他一些数据,也许
1110100111001
那个是一起发的
当他们到达时,我们如何区分他们。是否有一些特殊标志指示每个数据的结尾?
如果是,我们如何确保它是唯一的并且我们不会混淆?
例如以太网帧以8字节前导码和帧定界符开始,每个字节为10101010
(我不太确定)
每个数据通常按字节(8 位)读取,Frame 具有定义的结构:
https://en.wikipedia.org/wiki/Ethernet_frame
每帧包含一个数据包:
https://en.wikipedia.org/wiki/Network_packet
试着用谷歌搜索一些关于这个的东西,但我的回答是有定义的结构,如何发送数据
您可以将特殊的位串模式定义为流的开头或结尾,一些协议会这样做,但您必须使其足够长(例如 256 位),这样它就不太可能出现在正常的数据流中。
如果结束模式出现在正常数据中,则更可靠的方法是对其进行转义。您可能知道它是如何工作的,因为每个人都曾在某个时间点接触过在字符串中使用 \
。它们必须转义为 \
.
如果您事先知道流的长度,则可以使用第三种方法,因此您可以在实际发送数据之前发送一个长度。
实际细节定义为协议,双方必须遵循协议的结构,无论其定义如何。