按照python来说,网络上传送的都是bytes类型的数据,其他数据是无法传输的。
1、你说的str类型,是必须编码解码的。常用的方式是采用utf8来传输str类型数据。
所以在传输之前需要约定编码格式和可用的数据类型。
用python来表达就是:
'some 数据'.encode('utf8')
2、数字型数据传输,是需要指定长度和字节序的。当然,一般是使用32位长度和网络字节序。用Python来表达就是: int.to_bytes(length, byteorder, *, signed=False) -> bytes
(3456).to_bytes(4, 'big')
3、一般来说,这是一个序列化和反序列化的过程。
常见的格式包括固定长度协议、固定分隔符协议、长度+报文格式协议、iso8583协议、xml格式协议、json格式协议、http格式协议等等。
http因为不是一个应用层协议,所以用来传输非html内容的时候还需要包装一层。
以上速度最快的就是固定长度格式协议,缺点是指定了key;
这玩意就是一个C语言里面struct,能直接写入和读取,所以当然快了。
对于key不固定的报文,目前最好的是msgpack方式。速度和大小都是最好的。
google和fb等几个公司自己也都造了一些格式出来,但是测试发现都不如msgpack好。
最差劲的是xml格式,速度和大小都是最次的。当然,这也是java最喜欢用的方式
最后,其实网络协议和数据库格式这些东西都一样,都是数据的封装方式罢了。
了解了这个东西,自己随便设计数据库也非常简单了