HTTP和HTTPS协议
1. HTTP协议的全程
超文本传输协议,英文名为:HyperText Transfer Protocol。
2. HTTP协议的特点
支持C/S模式,支持基本认证和安全认证。
永远都是由客户端发起请求,服务器回送响应。
无状态的协议:就是一个客户端访问一次以后,当它再次访问的时候,即使很短的时间,它还是要重新发送请求。服务器端不会为客户端保留任何信息。
HTTP1.1使用的是持续连接(有一定的保持时间keep-alive),HTTP1.0使用的是不持续连接,即每次连接只处理一个请求.
3. HTTP协议版本
http1.0:短连接,一个TCP连接处理一个http请求和响应,就关闭。
http1.1:长连接,一个TCP连接可以处理多个http请求和响应。
4. HTTP协议的组成
1. HTTP请求信息格式
请求行 GET / HTTP/1.1\r\n 请求报头 空行 请求正文(可选)
1. 请求行
2. 请求方法
OPTIONS - 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 HEAD- 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。
只请求响应报文中的HTTP首部。 GET - 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。请求体没有内容。 POST - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。请求体有内容,将客户端的数据提交到服务器 PUT - 向指定资源位置上传其最新内容。 DELETE - 请求服务器删除Request-URI所标识的资源。 TRACE- 回显服务器收到的请求,主要用于测试或诊断。 CONNECT - HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 PATCH - 用来将局部修改应用于某一资源,添加于规范RFC5789。
3. 请求报头
常见的请求头: HOST: (发送请求时,该头域是必需的)主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。 Connection:两个值(keep-alive和close) Accept: 浏览器端可接受的MIME类型 User-Agent:告诉HTTP服务器,客户端使用的操作系统和浏览器的名称和版本。 Accept-Encoding:浏览器可以接受的编码方法,可以使用gzip和deflate两种压缩方法。如果请求报头没有设置这个域,服务器假定客户端各种内容编码都可以接受。 Accept-Language:浏览器可以接受的语言,如果请求报头没有这个域,服务器假定客户端对各种语言都可以接受。
4. 空行
5. 例子

2. HTTP响应信息格式
状态行 响应报头 空行 响应正文
1. 状态行
协议号 状态码
2. 响应报头
HTTP常见的响应报头: Date: Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集。 Content-Length:实体正文的长度,以字节为单位。 Content-Encoding:WEB服务器表明自己使用了什么压缩方法。 Server:指明HTTP服务器用来处理请求的软件信息。
3. 空行
4. 响应体
5. 例子

6. http状态码
200 成功
301 永久重定向
302 临时重定向
304 缓存
403 Forbidden禁止访问
404 Not Found页面找不到
500 Internal Server Error内部服务器错误
502 Bad Gateway一般是代理服务器请求后端服务器,后端服务不可用或没有响应
503 Service Unavailble服务不可用,服务当前不可用,可能服务器超载或停机维护,或者是反向代理ufuwqi后没有可以提供服务的节点
5. HTTP工作原理
1. 客户端在浏览器中输入www.baidu.com,通过DNS把这个地址解析IP地址。
2. 客户端通过路由网络端口找到这台服务器,然后进行三次握手建立TCP连接。
3. 建立TCP连接以后,开始建立http连接,浏览器向服务器发送http请求。
4. 服务器收到以后,会给客户端http响应。
5. 客户端浏览器解析响应内容。
6. 传送完以后,断开TCP连接。
6. HTTPS协议
1. 介绍
全称HyperText Transfer Protocol over Secure Socket Layer,基于SSL的HTTP协议
2. HTTPS的工作过程
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。
7. HTTP资源
1. 媒体类型MIME
text/html
text/css
text/xml
image/gif
image/jpeg
application/javascript
text/plain
application/json
video/quicktime
video/mp4
video/x-flv
video/x-ms-wmv
video/x-msvideo
2. URL介绍
统一资源定位符,只是针对http协议
3. URI介绍
统一资源标识符
URL是URI的子集,还可以针对其他协议。
8. SSL协议
1. SSL的分层结构

SSL握手协议:是SSL协议非常重要的组成部分,用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在服务器和客户端之间安全地交换密钥、实现服务器和客户端的身份验证。
SSL密码变化协议:客户端和服务器端通过密码变化协议通知对端,随后的报文都将使用新协商的加密套件和密钥进行保护和传输。
SSL警告协议:用来向通信对端报告告警信息,消息中包含告警的严重级别和描述。
SSL记录协议:主要负责对上层的数据(SSL握手协议、SSL密码变化协议、SSL警告协议和应用层协议报文)进行分块、计算并添加MAC值、加密,并把处理后的记录块传输给对端。
2. SSL握手过程
建立完TCP的三次握手以后,开始建立SSL的握手。
1. 客户端向服务器发送一个client hello,其中的内容包括:版本号,加密算法,密钥交换算法,MAC算法

2. 服务器回应客户端server hello,包含协议版本号,加密算法的种类.

3. 同时服务器把自己的证书发送给客户端浏览器,证书内容包含网站的公钥,CA的数字签名,CA信息,证书到期时间等。

4. 客户端浏览器接收到证书以后,会检查证书里面的内容。
客户端收到的证书内容有:
服务器公钥
CA信息
数字签名(生成证书的时候用的是CA证书的私钥签名)
证书有效期
使用者
签名算法
指纹算法
客户端默认在自己机器的受信任的根证书颁发机构查找,如果有,就拿到根证书的公开密钥,用公开密钥使用签名算法解开数字签名,数字签名里面有hash值和hash算法,客户端用同样的hash算法,算出一个结果,两个结果一比对,就确保证书是否被伪造。
5. 客户端浏览器随机产生一个对称密码,然后用服务器的公钥对其进行加密;然后发送给服务器;这是客户端浏览器与服务器协商以后,进行的操作。

6. 服务器收到以后,用自己的私钥进行解密,这样就看到了对称密码,然后用对称密码解密信息,服务器与客户端就是反复加密解密,传送信息。


浙公网安备 33010602011771号