http,https协议解析

    xiaoxiao2023-11-13  127

    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

    最新回复(0)