Redis的数据包为序列化后的文本协议RESP (REdis Serialization Protocol) ,human-readable(明文可读),由0d0a切分内容,相比postgresql、mysql、mongodb解析起来要简单快速的多,当然安全性也欠缺,嗅探成本低
RESP的通信实例
a.客户端到服务端发送的数据


由上面两幅图,可知全是明文传输,其中RESP中的数据类型由特殊的前缀标识符来区分
__RESP_DATA_TYPE = {
'+': 'Simple Strings', #例如+OK
'-': 'Errors', #例如 -ERR invalid password
':': 'Integers',#整型
'$': 'Bulk Strings', #字符串
'*': 'Arrays'#数组
}
redis认证过程
客户端->服务端发送 auth [password]命令
例如
auth apple对应的数据为
*2
$4
auth
$5
apple
auth dragon对应的数据为
*2
$4
auth
$6
dragon
服务端->客户端回应 认证结果
例如
认证失败对应的数据为
-ERR invalid password
认证成功对应的数据为
+OK
参考:
预告:七、TCP/IP协议分析-FTP认证协议