这是我参与「第四届青训营 」笔记创作活动的第7天
初识HTTP
HTTP是什么?
- HTTP全称为Hyper Text Transfer Protocol,被译为超文本传输协议。是互联网上应用最为广泛的一种网络协议。
HTTP的特点
灵活可扩展
应用层协议,基于TCP协议
请求 响应
无状态
协议分析
HTTP协议历史与发展
HTTP/O.9: 1991年制定,有严重设计缺陷,只支持GET方法,不支持MIIME类型,很快被HTTP/1.0取代。
HTTP/1.0: 1996年制定,支持多种请求方法,支持多媒仲对象,得到广泛应用。
HTTP/10+:支持持久连接、虚拟主机、代理连接等新特性,成为非官方的事实标准。
HTTP/11: 1999年制定,校正HTTP中的设计缺陷,性能优化,删除一些不好的特性。
HTTP-NG(或HTTP/20):关注HTTP协议的性能优化以及更强大的服务逻
报文
请求报文
- 请求行
- 消息报头/请求头
- 空行
- 请求正文
HTTP请求方法如图:
常用请求头
响应报文
- 状态行
- 消息报头/响应头
- 空行
- 响应正文
状态码分类
状态码列表
常用响应头
常见场景
静态分析
登录
实际应用
浏览器
node
了解更多
HTTPS
什么是HTTPS
HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer),基于安全套接字协议 SSL,是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTP2.0和HTTP3.0都只用于HTTPS。
HTTPS建立SSL连接
- Client Hello:客户端将支持 SSL 版本、加密算法、密钥交换算法等发送服务端
- Server Hello:服务端确定 SSL 版本、算法、会话 ID 发给客户端
- Certificate:服务端将携带公钥的数字证书发给客户端
- Server Hello Done:通知客户端版本和加密套件发完,准备交换密钥
- Client Key Exchange:客户端验证证书合法性,随机生成premaster secret用公钥加密发给服务端
- Change Cipher Spec:通知服务端后续报文采用协商好的密钥和加密套件
- Finished:客户端用密钥和加密套件计算已交互消息的Hash值发给服务端。服务端进行同样计算,与收到的客户端消息解密比较,相同则协商成功
- Change Cipher Spec:通知客户端后续报文采用协商好的密钥和加密套件
- Finished:服务端用密钥和加密套件计算已交互消息的Hash值发给客户端。客户端进行同样计算,与收到的服务端消息解密比较,相同则协商成功
HTTPS和HTTP的区别
- HTTP 协议以明文方式发送内容,数据都是未加密的,安全性较差。HTTPS 数据传输过程是加密的,安全性较好。
- HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80 端口,后者是 443 端口。
- HTTPS 协议需要到数字认证机构(Certificate Authority, CA)申请证书,一般需要一定的费用。
- HTTP 页面响应比 HTTPS 快,主要因为 HTTP 使用 3 次握手建立连接,客户端和服务器需要握手 3 次,而 HTTPS 除了 TCP 的 3 次握手,还需要经历一个 SSL 协商过程。