1 简介
超文本传输协议(Hypertext Transfer Protocol,HTTP) HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)
2 http请求与响应
http默认使用80端口,https默认使用443端口.
客户端请求
序号组成部分描述
1请求行描述客户端的请求方式(GET,POST…),请求资源名称(https://xxxx.xxx.xxx), http协议版本号2请求头客户端请求的服务器主机名,客户端机器环境信息3空行换行4请求数据请求体中携带的参数(form-data,json数据)
服务器响应
序号组成部分描述
1状态行服务器响应状态2消息报头服务器响应日期,响应数据类型,响应数据长度3空行换行4响应正文服务器返回的数据(html,css,json)
特点 短连接.连接一次,发送一个数据包,然后断开连接,客户端连接数量承载能力强,节省服务器资源(长连接,每个客户端,消耗部分服务器资源). 无状态.服务器不感知客户端状态,数据传输结束后,客户端,断开与服务器连接.
2.1 客户端请求
请求行
GEThttps://bkssl.bdimg.com/static/wiki-lemma/pkg/wiki-lemma_c03dab6.css
[HTTP/2.0 200 OK 0ms]
请求网址:https://bkssl.bdimg.com/static/wiki-lemma/pkg/wiki-lemma_c03dab6.css
请求方法:GET
状态码:
200
版本:HTTP/2.0
请求头
Host: bkssl.bdimg.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/css,*/*;q=0.1
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
2.2 服务器响应
响应头
HTTP/1.1 200 OK
Bdpagetype: 3
Bdqid: 0x8bc1f76f000818e3
Cache-Control: private
Ckpacknum: 2
Ckrndstr: f000818e3
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Sun, 13 Oct 2019 10:08:10 GMT
Server: BWS/1.1
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BD_CK_SAM=1;path=/
Set-Cookie: PSINO=6; domain=.baidu.com; path=/
Set-Cookie: BDSVRTM=10; path=/
Set-Cookie: H_PS_PSSID=1445_21080_29720_29567_29221; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
access-control-allow-origin: *
2.3 通信
http协议是明文通信,客户端传输的数据可以通过抓包的方式获取,由于明文通信,所以,所有客户端传输的数据均可被解析并劫持,数据安全性较低.
正常通信
图2.1 http正常通信
异常通信
图2.2 http异常通信
3 https
3.1 https简介
http+SSL/TLS即http协议的加密通信.服务端和客户端的信息传输都会通过TLS进行加密,传输的数据都是加密后的数据.
3.2 https通信过程
过程图
图3.1 https通信
过程说明 (1) 客户端请求:客户端A向服务器A发送https请求; (2) 服务器端响应:返回服务器A公钥证书; (3) 客户端处理:处理服务器返回的公钥证书,判断证书是否过期,若证书有效,则生成随机密钥,并使用服务器A的公钥进行加密,向服务器A发送该加密的密钥;若服务器证书无效,发送证书异常信息. (4) 服务器端处理:使用服务器A私钥解密,解密客户端发送的加密密钥,获取该密钥,将该密钥和服务器返回的内容加密,返回给客户端A; (5) 客户端处理:客户端获取加密的内容(客户端A随机密钥+服务器A公钥证书),并使用私钥进行解密,获取传输的数据.
3.3 公钥和私钥
公钥:加密私钥:解密
4 状态码
4.1 消息状态码
序号状态码描述
110021013102
4.2 请求成功状态码
序号状态码描述
12002201320242035204620572068207
4.3 重定向状态码
序号状态码描述
13002301330243035304630573068307
4.4 请求错误状态码
序号状态码描述
140024013402440354046405740684079408104091141012411134121441315414164151741618417194182042121422224232342424425254262644927451
4.5 服务器状态码
序号状态码描述
1500250135024503550465057506850795091051011600
【参考文献】 [1]https://www.runoob.com/http/http-messages.html [2]https://www.cnblogs.com/haiyan123/p/7777924.html [3]https://www.runoob.com/w3cnote/http-vs-https.html [4]https://blog.51cto.com/11883699/2160032 [5]https://www.jb51.net/article/99075.htm [6]https://www.cnblogs.com/RoyalBlue/p/9835679.html [7]https://blog.csdn.net/qq_37049781/article/details/84837342 [8]https://www.jianshu.com/p/79e341a5a81a [9]https://blog.csdn.net/zhengzhaoyang122/article/details/82184072