HTTP框架修炼之道 | 青训营笔记
HTTP协议是什么
HTTP是一种用于在 Web 上传输数据的协议。它是一种应用层协议,建立在 TCP/IP 协议栈之上,简单来说就是客户端和服务端进行数据传输的一种规则。之所以叫做超文本,是因为普通文字是文本,而人们想要传输的数据不再局限于普通的文本,更多的是JPG、MP3等二进制流形式的图片视频等数据。
为什么需要HTTP协议
为什么我们需要HTTP协议呢?因为计算机只会识别二进制流,面对一堆没有任何规律的二进制流,如果我们不加以边界,肯定是无法正确的传输数据的。我们需要HTTP协议来规范网络传输数据的格式。
HTTP请求的组成
HTTP请求由请求行,请求头,请求体三部分组成,如下图所示。
请求行
请求行是 HTTP 请求的第一个部分,它包含请求方法、URL 和 HTTP 版本信息。下方举例:
GET /sis HTTP/1.1
其中Method(请求方法)有非常多,以下举例RESTFUL中最常用的四种Method:
- GET:一个指定资源的表示形式,使用GET的请求应该只被用于获取数据
- POST:用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
- PUT:用请求有效载荷替换目标资源的所有当前表示
- DELETE:删除指定的资源HEAD请求一个与GET请求的响应相同的响应,但没有响应体
请求头
请求头是 HTTP 请求的第二个部分,它包含请求的元数据,如请求方法、数据类型、编码方式等。下方举例:
Content-Type: text/plain
Host: 127.0.0.1:8888
Context-Length: 28
请求体
请求体是 HTTP 请求的第三个部分,它包含请求需要传输的数据。请求体通常用于传输文件、表单数据和二进制数据等。下方举例:
Let's watch a moviw together(可以替换成任何需要传输的数据)
HTTP优点
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径,非常简单。也正是由于
HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 - 灵活:HTTP允许传输任意类型的数据对象。
HTTP缺点
- 队头阻塞
- 传输效率低
- 通信使用明文,内容可能会被窃听
总结
随着互联网应用的不断发展,HTTP 1.1 协议的一些限制开始显现出来,例如传输速度较慢、安全性不高等。因此,HTTP 2.0 协议发布了,它引入了一些新的技术和特性,例如多路复用等,进一步提高了传输速度和安全性。
网络传输协议一直在不断发展和改进,以满足不断增长的互联网应用需求。从HTTP1到HTTP2,再到现在的QUIC(基于UDP实现,解决了HTTP的队头阻塞问题),一直都在不断地进步和探索。
个人思考
计算机网络是互联网的基础,是计算机与计算机之间进行通信的桥梁,而HTTP 协议则是互联网上应用最广泛的协议之一。计算机网络和 HTTP 协议对于计算机专业的大学生来说是非常重要的,它们不仅为我们提供了互联网上的资源和服务,同时也是我们了解和掌握互联网工作原理和技术应用的基础。