分布式通信协议之http
http协议的概述
客户端和服务器端
1.资源
html/文本、word、avi电影、其他资源
2.媒体类型
MIME类型、text/html、image/png
3.uri和url
uri:web服务器资源的名字,index.html
url:http://180.123.156.237:80/java/index.html
schema:http/https/ftp
host:web服务器域名或者ip地址
port:服务器的端口,http默认的端口是80
path:资源访问路径
query-string:查询参数
4.方法
get/post/delete/put/head
5.报文
request请求参数 ,response响应请求
request的消息结构包括三部分(起始行 、首部字段、主体)
method/path/http/version-number
head-name:value
空行
主体 optional request body
response
http/version-number status code message
head-name:value
body
6.状态码
http/1.1版本的协议里面定义了五种类型的状态码
1xx 提示信息
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务器的错误
缓存
http协议的特点
1.无状态
cookie+session
2.多次请求
3.基于tcp协议
https
ssl/tls
ssl3.0
isoc 在ssl的基础上发布了升级版本tls1.2
https的工作原理
第一步加密
第二步 密钥是公开了所有的客户端都可以拿到
第三步针对不同的客户端使用不同的密钥
第四步 使用非对称加密
非对称:公钥和私钥的概念
问题 客户端如何拿到公钥
1.服务器端把公钥发给每一个客户端
2.服务器端把公钥放到远程服务器,客户端可以请求到
3.让浏览器保存所有公钥匙(不现实)
第五步:公钥被调包的问题永远存在
第六步使用第三方机构来解决
通过第三方机构,使用第三方机构的私钥对我们(需要传输的公钥匙进行)解密
第七步
数字证书里面包含的内容:
公司信息,网站信息,数字证书的算法
连接过程
restful、rest之间的区别
Rest 表述性状态转移
使用web标准来做一些准则和约束
### Restful的基本概念
1.在Rest中,一切的内容都认为是一种资源
2.每个资源都有uri的唯一标志
3.使用统一的接口请求资源(post/get/head/put/delete)
4.无状态
资源和uri
1.[/]表示资源的层级关系
2.?过滤资源
3.使用_或者-让uri的可读性更好
统一接口
GET 获取某个资源,幂等
post 创建一个新的资源
put 替换某个已有的资源(更新操作),幂等
delete 删除资源
pacth/head
###资源表述
mime类型()
accept:text/html html文件
Content-type 告诉客户端的表述形式
资源连接
超媒体及应用状态引擎
状态转移
服务器端不应保存客户端状态(应用状态/资源状态)
应用状态:>服务器端不保存应用状态
1 登录
2.查询订单
访问订单 根据接查询
访问商品 查询
资源状态:
restful的最佳设计
1.域名
http://api.xxx.com
2.版本
http://api.xxx.com/v1/get
header里面维护版本
3.路径
http://api.xxx.com/v1/users_list//获取用户列表
4.过滤信息
5.业务状态码
http状态码