二进制协议和文本协议
文本协议
文本协议是一种使用可读的文本格式编码数据的通信协议
- 可读性:由于使用文本字符表示数据,文本协议具有良好的可读性,便于人类理解和调试
- 跨平台兼容性:文本协议不依赖于特定的二进制编码方式,可以在不同的平台和操作系统上进行通信和解析
- 易于开发和调试:相对于二进制协议,文本协议的开发和调试通常更加简单,因为数据可以直接以可见的文本形式进行查看和编辑
常见的文本协议包括:http
smtp
ftp
文本协议传输用户名和明码
bash
# formData 31bytes
account=sqrtcat&password=123456
# json 41bytes
{"account":"sqrtcat","password":"123456"}
# formData 31bytes
account=sqrtcat&password=123456
# json 41bytes
{"account":"sqrtcat","password":"123456"}
http
二进制协议
二进制协议是一种在通信中使用二进制格式编码数据的协议
需要事先定义了数据中的n~m个字节位固定作为某参数的数据段,就可以免去 参数名 所带来的额外开销
- 更小的数据包大小:二进制编码可以使用更少的字节来表示相同的数据,从而减小数据包的大小,节省带宽和传输时间
- 更高的传输效率:由于数据包较小,传输速度更快,可以更快地完成数据的传输。
- 更丰富的数据表示能力:二进制协议可以定义更复杂的数据结构和数据类型,可以灵活地表示各种数据,包括数字、布尔值、日期、图像、音频、视频等。根据协议约定,省去参数名所占用的字节,缩减了大小
- 更高的解析效率:由于二进制数据格式是固定的,解析过程更加简单和高效。数据可以直接映射到内存结构,无需解析器逐字符解析
常见的二进制协议包括:Protocol Buffers(ProtoBuf)、MessagePack、BSON
二进制协议传输用户名和密码
比如 0 ~ 10 字节为 account,11 ~ 24 字节为 passowrd
bash
# binary 25bytes
|-- 11 bytes account --|-- 14 bytes password --|
# binary 25bytes
|-- 11 bytes account --|-- 14 bytes password --|