-
网络模型
-
常见接口协议
-
RPC 协议
RPC(Remote Procedure Call)
以本地代码调用的方式实现远程执行
主要用于公司内部的服务调用
优点:传输效率更高、性能损耗更低、自带负载均衡策略、更好的服务治理能力
常见的RPC协议
Dubbo: Java基础之上的高性能RPC协议
gRPC:高性能通用RPC框架,基于Protocol Buffers. PB是一个语言中立、平台中立的数据序列化框架
Thrift: 与gRPC类似的多语言RPC框架 -
HTTP 协议详解
-
请求:
- 请求
- 请求行:method url protocol
- 请求方法:GET、POST、PUT、DELETE、HEAD
- 请求头: Host Cookie User-Agent
- 请求参数 query
- 请求体:JSON XML FORM
-
响应:
- 响应状态行
- 响应头
- 响应体
-
URI 和 URL
- URI,统一资源标识符,用来唯一的标识一个资源。
-
URL,统一资源定位符,它是一种具体的 URI
-
URL 结构:
https://www.baidu.com/s?wd=霍格沃兹&rsv_spt=1
- 协议:
http
- 域名:
www.baidu.com
- 端口:跟在域名后面,域名和端口之间使用“:”作为分隔符,非必须,如果省略端口部分将采用默认端口
- 路径:
/s
- 请求参数:
wd=霍格沃兹&rsv_spt=**1
- 协议:
-
HTTP 请求报文
GET /uploads/user/avatar/31438/8216a3.jpg HTTP/1.1
Host: ceshiren.com
Accept-Encoding: deflate, gzip
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0
(Macintosh; Intel Mac OS X 10_15_0)
AppleWebKit/537.36
(KHTML, like Gecko)
Chrome/80.0.3987.116 Safari/537.36
Accept: image/webp,image/apng,image/,/*;q=0.8
Referer: https://ceshiren.com/
Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
Cookie: user_id=xx;
_homeland_session=xx;
- HTTP 响应报文
HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Thu, 12 Mar 2020 09:13:44 GMT
< Content-Type: image/png
< Content-Length: 11390
< Connection: keep-alive
-
HTTP 响应状态码
-
1xx 临时响应,表示通知信息,请求收到了或正在进行处理
-
2xx 表示成功,接受或知道了
- 200 成功
-
3xx 表示重定向,要完成请求还必须才去进一步的行动
- 301 永久移动
- 302 临时移动
-
4xx 表示客户端请求错误
- 403 未授权
- 404 未找到
-
5xx 表示服务端错误
- 500 服务器内部错误
- 503 服务不可用
-
RESTful 架构
-
Restful:Representational State Transfer
-
借助于 HTTP 协议的基本请求方法代表资源的状态切换
- GET:获取资源
- POST:新增或者更新
- PUT:更新资源
- DELETE:删除资源