因为TCP协议是以字节流的方式传输,对于纯TCP连接来说,发送的数据在底层是01的字节流会出现接收端分不清发送端发送的数据,到底是夏洛+特烦恼还是夏洛特+烦恼,并没有边界的区分
没有边界之分就需要向消息体前加上消息头,消息头里面就是添加的规则,而这些规则就是协议。
所以基于TCP,衍生出了非常多的协议,比如HTTP和RPC,这些协议都会定义一套属于自己的协议解析规则。
RPC,远程过程调用,本身并不是一个具体的协议,而是一种调用方式
RPC可以像调用本地方法那样调用远端方法
HTTP和RPC的区别?
- 服务发现
- HTTP是通过DNS解析来获取对应的IP地址
- RPC是由专门的中间服务去保存服务器和IP信息
- 底层连接方式
- HTTP是会复用长连接
- RPC协议还会再建一个连接池,在连接数大时候,建立多条连接池放在池内,要发数据时就从池内取一条连接即可,用完放回去,下次还能复用
- 传输的内容
- HTTP一般是通过json来序列化数据
- RPC是采用体积更小的protobuf或其他序列化协议去保存结构体数据,不用向HTTP那样考虑浏览器行为,比如一些状态码