HTTP是什么
- HTTP协议是超文本传输协议,是用于服务器传输超文本到本地浏览器的传输协议。
- HTTP是基于TCP/IP通信协议来传递数据的(HTML 文件, 图片文件, 查询结果等)
发展历史图例
HTTP/0.9
- 只有一个命令GET
- 没有header等描述数据的信息
- 服务器发送完毕,就关闭TCP连接
HTTP/1.0
- 增加了很多命令
- 增加status code和header
- 多字符集支持,多部分发送、权限、缓存等
HTTP/1.1【目前使用的都是HTTP/1.1版本】
- 持久连接
- pipeline【串行传输】
- 增加host和其他命令
HTTP/2
- 所有数据以二进制传输
- 同一个连接里面发送多个请求不再需要按照顺序来【并行传输】
- 头信息压缩以及推送等提高效率的功能
- 推送:比如在服务端向客户端发送html文档的时候,会将其中引用的js、css等资源一同推送给客户端,而不需要等浏览器解析到html文档中引用的js、css等资源地址之后,再去请求,实现了并发请求资源的功能
HTTPS是什么
- https是以安全为目标的http通道,在http的基础上通过传输加密和身份认证保证了传输过程的安全性。https在http的基础上加入ssl证书,https的安全基础是ssl,因此加密的详细内容就需要ssl进行加密。
HTTP的缺点
- 明文传输(https是密文传输),未经过加密
- 没有身份认证
- 缺乏数据完整性的检测:攻击者可以轻易的修改客户端和服务端传输的数据, 甚至在传输数据中插入恶意代码, 导致客户端被引导至恶意网站被植入木马。
HTTP的请求报文
- 由四部分组成:请求行、请求头、空行、请求体
- 请求行:请求的url字段、http协议版本、请求方法
- 请求头:Accept、user-agent、cookie、content-length、If-Modified-Since、Host、origin等
- 空行:通过一个空行,告诉服务器请求头部到此为止。
- 请求体:请求参数或提交的数据
HTTP的响应报文
- 有三部分组成:响应行、响应头、响应体
- 响应行:http协议版本、状态吗、描述
- 响应头:set-cookie、expires、Etag、Last-Modified、content-length、Access-Control-Allow-Origin、Content-Type等
- 响应题:服务返回的数据
HTTPS的加密过程
https怎么验证证书的合法性
- 向证书颁发机构发送请求,查看证书是否在有效期,是否被吊销了。
- 验证服务器是否持有证书的对应私钥。验证方法两种,一种是对方签个名,我用证书验证签名;另外一种是用证书做个信封,看对方是否能解开。
charles抓https包原理
- HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了服务器证书公钥和HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。