1 HTTP协议是什么?
HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范
在计算机和网络世界有,存在不同的协议,如广播协议、寻址协议、路由协议等等......
而 HTTP
是一个传输协议,即将数据由A传到B或将B传输到A,并且 A 与 B 之间能够存放很多第三方,如: A<=>X<=>Y<=>Z<=>B
传输的数据并不是计算机底层中的二进制包,而是完整的、有意义的数据,如HTML 文件, 图片文件, 查询结果等超文本,能够被上层应用识别
在实际应用中,HTTP常被用于在Web浏览器和网站服务器之间传递信息,以明文方式发送内容,不提供任何方式的数据加密
2 HTTP协议的特点
- 应用层协议(下面可以是TCP/IP)
- 信息纯文本传输
- 支持客户/服务器模式
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
- 无状态:每次请求独立,请求之间互相不影响(浏览器提供了手段维护状态比如Cookie,Session,Storage等)
3 HTTP协议的历史
- 1991 HTTP 0.9 (实验版本)
- 1996 HTTP 1.0 (有广泛用户)
- 1999 HTTP 1.1 (影响面最大的版本)
- 2015 HTTP 2.0 (大公司基本上都是2.0了)
- 2018 HTTP 3.0 (2022 年 6 月 6 日正式发布了)
他们的区别之后再说吧
4 Header和Body
HTTP是一个文本传输协议,传输内容是人类可读的文本,大体分成两部分:
- 请求头(Header)/ 返回头
- 消息体(Body)
下面演示一个Node.js实战http请求
const net = require("net");
const response = `
HTTP/1.1 200 OK
Data: Tue,30 Jun 2022 01:00:00 GMT
Content-Type: text/plain
Connection: Closed
Hello World
`;
const server = net.createServer((socket) => {
socket.end(response);
});
server.listen(80, () => {
console.log("80端口启动");
});
从浏览器中观察
5. HTTPS
在上述介绍HTTP中,了解到HTTP传递信息是以明文的形式发送内容,这并不安全。而HTTPS出现正是为了解决HTTP不安全的特性
为了保证这些隐私数据能加密传输,让HTTP运行安全的SSL/TLS协议上,即 HTTPS = HTTP + SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密
SSL 协议位于TCP/IP 协议与各种应用层协议之间,浏览器和服务器在使用 SSL 建立连接时需要选择一组恰当的加密算法来实现安全通信,为数据通讯提供安全支持
流程图如下:
6. HTTP和HTTPS的区别
- HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全
- HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443
- HTTPS 由于需要设计加密以及多次握手,性能方面不如 HTTP
- HTTPS需要SSL,SSL 证书需要钱,功能越强大的证书费用越高