HTTP协议

HTTP协议的概述

1.客户端和服务器端

2.资源

html/文本、word、avi电影、其他资源

3.媒体类型

MIME类型。  text/html、 image/jpeg

4.URI和URL

URI:web服务器资源的名字。  index.html

http://www.buaahy.com:80/java/index.html[?query-string] #location

schema: http/https/ftp.

host: web服务器的ip地址或者域名

port: 服务端端口, http默认访问的端口是80

path: 资源访问路径

query-string: 查询参数

5.方法

GET/PUT/DELETE/POST/HEAD

报文

request参数、 response响应参数

request消息结构包含三部分: (起始行、首部字段、主体)

 

METHOD /path / http/version-number

Header-Name:value

空行

主体 optional request body

 

 

response

http/version-number   status code message
header-name:value

空行

body

 

状态码

http/1.1版本的协议里面定义了五种类型的状态码

1XX    提示信息

2XX    成功

3XX    重定向

4XX    客户端错误

5XX    服务器端的错误

 

HTTP协议的特点

1.无状态

cookie+session

2.多次请求

3.基于TCP协议

HTTPS

https由两部分组成,即:HTTP+SSL/TLS

数字证书里面包含的内容:公司信息、网站信息、数字证书的算法、公钥

 

连接过程

总结:

1.客户端发起一个https请求,请求里面包含一个随机数

a.客户端生成一个随机数(第一个随机数)

2.服务端收到请求后,拿到随机数,传输证书和自己生成一个随机数返回

a.证书(颁发机构(CA)、证书内容本身的数字签名(使用第三方机构的私钥加密)、证书持有者的公钥、证书签名用到的hash算法)

b.生成一个随机数,返回给客户端(第二个随机数)

3.客户端拿到证书以后和本地的证书做验证

a.根据颁发机构找到本地的根证书

b.根据CA得到根证书的公钥,通过公钥对数字签名解密,得到证书的内容摘要 A

c.用证书提供的算法对证书内容进行摘要,得到摘要 B

d.通过A和B的对比,也就是验证数字签名

4.验证通过以后,生成一个随机数(第三个随机数),通过证书内的公钥对这个随机数加密,发送给服务器端

5.(随机数1+2+3)通过对称加密得到一个密钥。(会话密钥)

6.以后通过会话密钥对内容进行对称加密传输

RESTful

REST  表述性状态转移

使用WEB标准来做一些准则和约束。

 

RESTful的基本概念

  1. 在REST中,一切的内容都被认为是一种资源
  2. 每个资源都由URI唯一标识
  3. 使用统一的接口处理资源请求(POST/GET/PUT/DELETE/HEAD)
  4. 无状态

 

资源和URI

  1. [/]表示资源的层级关系
  2. ?过滤资源
  3. 使用_或者-让URI的可读性更好

 

统一接口

GET  获取某个资源。 幂等

POST 创建一个新的资源

PUT 替换某个已有的资源(更新操作) , 幂等

DELETE 删除某个资源

PATCH/HEAD

 

资源表述

 

MIME 类型()

accept: text/xml   html文件

Content-Type告诉客户端资源的表述形式

 

RESTful的最佳设计

 

1.域名

http://api.buaahy.com

 

2.版本

http://api.buaahy.com/v1/user/1

header里面维护版本

3.路径

http://api.buaahy.com/v1/goods-list           //商品列表

 

4.过滤信息

https://api.github.com/user/repos?page=2&per_page=100

https://developer.github.com/v3/#rate-limiting

5.状态码

业务状态码

http状态码

发表评论

邮箱地址不会被公开。 必填项已用*标注