一、网络模型
二、常见接口协议
RPC协议
- RPC(remote procedure call)
- 以本地代码调用的方式实现远程执行
- 主要用于公司内部的服务调用
优点
- 传输效率高,性能损耗低、自带负载均衡、更好的服务治理能力
常见的RPC协议
- Dubbo:Java基础上的高性能RPC协议
- gRPC:高性能通用RPC框架,基于protocol buffers(一个语言中立,平台中立的数据序列化框架)
- Thrift:与gRPC类似的多语言RPC框架
三、HTTP 协议详解
3.1、HTTP协议
- 请求
- 请求行:method、URL、protocol
- 请求方法:get、post、put、delete、head
- 请求头:Cookie、user-agent
- 请求参数:query
- 请求体:Json、xml、form
- 响应
- 响应状态行
- 响应头
- 响应体
3.2、URI和URL
-
URI:统一资源标识符,用来唯一标识一个资源
-
URL:统一资源定位符,它是一种具体的URI
-
URL结构:
https://www.baidu.com/s?wd=霍格沃兹&rsv_spt=1
- 协议:
http
- 域名:
www.baidu.com
- 端口:跟在域名后面,域名和端口之间使用“:”作为分隔符,非必须,如果省略端口部分将采用默认端口
- 路径:
/s
- 请求参数:
wd=霍格沃兹&rsv_spt=**1
- 协议:
3.3、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;
>
3.4、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
3.5、HTTP 响应状态码
- 1xx 临时响应,表示通知信息,请求收到了或正在进行处理
- 2xx 表示成功,接受或知道了
- 200 成功
- 3xx 表示重定向,要完成请求还必须才去进一步的行动
- 301 永久移动
- 302 临时移动
- 4xx 表示客户端请求错误
- 403 未授权
- 404 未找到
- 5xx 表示服务端错误
- 500 服务器内部错误
- 503 服务不可用
四、Restful 架构
- Restful:Representational State Transfer
- 借助于 HTTP 协议的基本请求方法代表资源的状态切换
- GET:获取资源
- POST:新增或者更新
- PUT:更新资源
- DELETE:删除资源