HTTP与HTTPS协议
今天整理了HTTP及HTTPS协议原理及流程,
主要体现在: 言简意赅,一言中的,最主要的可以 看图识字;
1、HTTP协议
1.1 协议
定义
一种分布式、协作式,面向应用层的超媒体信息系统
特点
一种通用的、无状态(stateless) 的协议
表现形式
可输入的和可协商性的,允许系统能被建立而独立于数据传输
应用场景
应用于 超文本传输,名称服务器和分布对象管理系统等
1.2 原理
1.2.1 客户端
主要职能
- 一个向服务器发送请求;
- 接收服务器返回的报文并解析成友善的信息提供给我们阅读;
应用类型
- 浏览器
- 桌面应用,app应用
1.2.2 服务器端
处理接收客户端发来的请求过程
①建立链接
如果客户端已经打开一条到服务器的持久链接,则可以直接使用,否则客户端需要在服务器打开一条新的链接;
②接收请求报文
链接上有数据时,Web服务器会从网络链接中读取数据,并将请求报文的内容解析出来;
③处理请求
当请求被接收和表示后,服务器可根据请求报文进行处理;
④访问资源
请求处理完成后,就开始访问这些存储在服务器上的物理文件;
⑤构建响应
服务器识别资源后,构造响应报文
⑥发送响应
服务器将响应发送给客户端
⑦记录日志
请求结束,Web服务器会生成一条记录
1.3 请求报文
1.3.1 报文格式
Request报文结构,3部分组成
- 请求行(request line)
- 请求头部(header)
- 主体(body)
1.3.2 请求报文方法
常用请求报文方法:
- GET:获取资源
- POST:传输实体主体
- PUT:传输文件/更新资源
- DELETE:删除资源
- HEAD:获取报文首部(同GET,只是不返回主体)
- OPTIONS:咨询支持的方法(查询针对URL指定资源)
- TRACE:追踪路径(让Web服务将之前请求通信环回给客户端方法)
- CONNECT:要求用隧道协议链接代理(与代理间建立隧道,实现用隧道协议进行TCP通信)
更多请求方法,可参照小鱼的《HTTP常用方法》这篇博文。
1.4 响应报文
1.4.1 报文格式
Request报文结构,3部分组成
- 响应状态(response code)
- 响应头(response header)
- 响应主体(response body)
1.4.2 响应报文状态码
响应报文状态码,分5类:
- 1xx:信息状态码
- 2xx:成功状态码
- 3xx:重定向状态码
- 4xx:客户端错误状态码
- 5xx:服务器错误状态码
详细的状态码信息,可参照小鱼的《HTTP状态码总结》这篇博文。
2、HTTPS协议
2.1 加密算法
对称加密
采用单一钥匙加密方法,即同一个钥匙既可以加密也可以解密。
非对称加密
需要公钥和私钥同时出现,即如果公钥是加密,私钥就是解密。
2.2 数字签名
数字签名
①是只有信息的发送者才能产生的别人无法伪造的一段数字串,
②这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明
2.3 传输过程
共分7步,如下:
-
步骤一、客户发起HTTPS请求;
—>浏览器里输入https://xxxxxx -
步骤二、服务器端初步响应;
—>采用HTTPS协议的服务必须有一套数字证书(就是公钥和私钥); -
步骤三、客户端解析证书;
—>验证证书是否有效,是否合法,包含网站地址与正在访问地址一致等 -
步骤四、客户端发送加密信息
—>客户端发送的是用证书加密后的公钥 -
步骤五、服务器解密信息
—>服务器用公钥解密后,得到客户端传来的公钥,然后把内容通过该值进行对称加密 -
步骤六、服务器发送加密后的信息
—>服务器发送用公钥进行对称加密的信息 -
步骤七、客户端解密信息
—>客户端用之前生成的私钥解密服务器端传过来的信息,客户端就获取的解密后的内容