这里是了解 HTTP 是什么的课程。
HTTP 协议是什么
HTTP 协议:是超文本传输协议的简称,是一种用于传输超文本文档的应用层协议。它被设计用来在Web浏览器和Web服务器之间进行通信,使浏览器能够访问和加载网页上的内容。HTTP协议是无状态的,意味着同一个用户对同一服务器的多次请求不会被关联起来,请求之间相互独立。
为什么会有这样一个协议呢?
是因为不同的计算机进行数据传输的需要,计算机需要知道按照什么方式来传输数据和接收数据,所以就制定了一个协议用来规范,他就是 HTTP 协议。制定好协议才能让发收双方更好的进行文本数据的传输。
协议的标准
- 首先需要一个明确的边界表示开始和结束。
协议开始->text->协议结束
- 能够携带一些信息表示这段数据是什么消息,消息的类型是什么等等。
协议开始->协议元数据->text->协议结束
协议的内容
- 首先是一个请求行/状态行 ( first line )
请求行是由方法名、URL、协议版本组成。
方法名有不少:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH
状态行是由协议版本、状态码、状态码描述组成。 状态码:1xx、2xx、3xx、4xx、5xx
-
然后是一个请求头/响应头
-
最后是一个请求体/响应体
请求流程
-
构建请求:客户端准备请求数据,包括请求的方法、请求的URI、请求版本等信息。
-
查找缓存:客户端可以在本地缓存中查找是否有对应的资源,如果有,则可以直接使用缓存中的数据,避免向服务器发送请求。
-
准备IP地址和端口:客户端确定目标服务器的IP地址和端口,可以通过DNS解析域名得到IP地址。
-
等待TCP队列:如果客户端和服务器之间之前有其他未完成的连接,TCP协议将会按照先进先出的原则处理这些连接。
-
建立TCP连接:客户端和服务器通过TCP协议三次握手建立连接。
-
发送HTTP请求:客户端将构建的HTTP请求发送给服务器。
-
服务器处理请求:服务器接收请求,解析请求,根据请求的内容进行相应的处理,可以包括查数据库、处理业务逻辑等。
-
服务器响应请求:服务器根据处理结果生成HTTP响应,包括状态码、响应头信息和响应体等,然后发送给客户端。
-
断开连接:客户端接收完响应后,可以选择断开连接。如果请求中使用了Keep-Alive连接,则可以保持连接,避免每次请求都建立新的连接。
-
特殊情况处理:如果请求被重定向或者出现其他错误,客户端需要重新发送请求或者处理错误。
总结
http 协议是一个很常见的协议,几乎所有计算机之间信息交流都会使用 http 协议,乍看下去,http 协议很复杂,但其实我们按照上面的过程来慢慢理解,其实很简单,因为一个协议不可能十分复杂,这样会增加传输的效率和成本。
另外,http 协议也是应用层协议,所以他也是计算机网络的一个基础部分,学习 http 协议也能帮助我们理解网络中的计算机是怎么保持联系的。