标签:包含 数值 上进 red 通过 区分 协议栈 字节 图像
RPC 需要在一条 TCP 链接上进行多次消息传递。
基于 TCP 链接之上的单条消息如果过大,就会被网络协议栈拆分为多个数据包进行传送。如果消息过小,网络协议栈可能会将多个消息组合成一个数据包进行发送。对于接收端来说它看到的只是一串串的字节数组,如果没有明确的消息边界规则,接收端是无从知道这一串字节数组究竟是包含多条消息还是只是某条消息的一部分。
(1)用特殊符号区分:“\r\n”--------------->HTTP 和 Redis 协议就大量使用了\r\n
分割符
(2)消息发送端在每条消息的开头增加一个 4 字节长度的整数值,标记消息体的长度.
注:(HTTP 协议是一种基于特殊分割符和长度前缀法的混合型协议。比如 HTTP 的消息头采用的是纯文本外加\r\n
分割符,而消息体则是通过消息头中的 Content-Type 的值来决定长度。HTTP 协议虽然被称之为文本传输协议,但是也可以在消息体中传输二进制数据数据的,例如音视频图像,所以 HTTP 协议被称之为「超文本」传输协议。)
标签:包含 数值 上进 red 通过 区分 协议栈 字节 图像
原文地址:https://www.cnblogs.com/KL2016/p/14506775.html