【详解HTTP】理解透HTTP,看这篇就够了

1、HTTP是什么

1、全称:英文翻译(Hypertext Transfer Protocol),即超文本传输协议;

2、基础:TCP协议;

3、工作层:应用层

4、作用:规定WWW服务器与浏览器之间信息传递规范

2、HTTP版本以及它们的区别

3、HTTP返回状态码

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4、HTTP请求方法

 

 幂等方法有:DELETE、GET、PUT、HEAD、OPTIONS

5、HTTP header

 

 

 例如上面的header

5.1Request部分

Header     解释      示例

Accept     指定客户端能够接收的内容类型     Accept: text/plain, text/html

Accept-Encoding     指定浏览器可以支持的web服务器返回内容压缩编码类型。     Accept-Encoding: compress, gzip

Accept-Language     浏览器可接受的语言     Accept-Language: en,zhConnection     

Connection     表示是否需要持久连接。(HTTP 1.1默认进行持久连接)     Connection: close

Cookie     HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。     Cookie: $Version=1; Skin=new;

Host     指定请求的服务器的域名和端口号     Host: sp1.baidu.com

Referer     先前网页的地址,当前请求网页紧随其后,即来路     Referer: http://www.zcmhi.com/archives/71.html

User-Agent     User-Agent的内容包含发出请求的用户信息     User-Agent: Mozilla/5.0 (Linux; X11)

5.2Response部分

 

Header     解释     示例

Accept-Ranges     表明服务器是否支持指定范围请求及哪种类型的分段请求     Accept-Ranges: bytes

Age     从原始服务器到代理缓存形成的估算时间(以秒计,非负)     Age: 12

Cache-Control     告诉所有的缓存机制是否可以缓存及哪种类型     Cache-Control: no-cache

Content-Encoding     web服务器支持的返回内容压缩编码类型。     Content-Encoding: gzip

Content-Length     响应体的长度     Content-Length: 348

Content-Type     返回内容的MIME类型     Content-Type: text/html; charset=utf-8
Date     原始服务器消息发出的时间     Date: Tue, 15 Nov 2010 08:12:31 GMT

ETag     请求变量的实体标签的当前值     ETag: “737060cd8c284d8af7ad3082f209582d”

Expires     响应过期的日期和时间     Expires: Thu, 01 Dec 2010 16:00:00 GMT

Last-Modified     请求资源的最后修改时间     Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT

Server     web服务器软件名称     Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

Vary     告诉下游代理是使用缓存响应还是从原始服务器请求     Vary: *

6、HTTPS加密原理

6.1为什么要用HTTPS

1)无法保证消息的保密性;

2)无法保证消息的完整性和准确性;

3)无法保证消息来源的可靠性。

6.2HTTPS加密过程

过程

①服务器把自己的公钥登录至数字证书认证机构。
②数字证书机构把自己的私有密钥向服务器的公开密码部署数字签名并颁发公钥证书。
③客户端拿到服务器的公钥证书后,使用数字证书认证机构的公开密钥,向数字证书认证机构验证公钥证书上的数字签名。以确认服务器公钥的真实性。
④使用服务器的公开密钥对报文加密后发送。
⑤服务器用私有密钥对报文解密。

6.3HTTPS通信的步骤

①客户端发送报文进行SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(加密算法及密钥长度等)。

②服务器应答,并在应答报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接受到的客户端加密组件内筛选出来的。

③服务器发送报文,报文中包含公开密钥证书。

④服务器发送报文通知客户端,最初阶段SSL握手协商部分结束。

⑤SSL第一次握手结束之后,客户端发送一个报文作为回应。报文中包含通信加密中使用的一种被称Pre-master secret的随机密码串。该密码串已经使用服务器的公钥加密。

⑥客户端发送报文,并提示服务器,此后的报文通信会采用Pre-master secret密钥加密。

⑦客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够完成成功,要以服务器是否能够正确解密该报文作为判定标准。

⑧服务器同样发送Change Cipher Spec报文。

⑨服务器同样发送Finished报文。

⑩服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。

⑪应用层协议通信,即发送HTTP响应。

⑫最后由客户端断开链接。断开链接时,发送close_nofify报文。

6.4总结

HTTP + 加密 + 认证 + 完整性保护 = HTTPS 

 N、参考文章

https://www.cnblogs.com/KK150713/p/7498096.html

https://www.cnblogs.com/zhangzl419/p/7323289.html

https://www.cnblogs.com/weibanggang/p/9454581.html

https://blog.csdn.net/bbwangj/article/details/81321046

https://www.cnblogs.com/imstudy/p/10669631.html

https://www.cnblogs.com/shoshana-kong/p/10520770.html

posted @ 2020-06-14 21:15  朱正军  阅读(944)  评论(0编辑  收藏  举报