HTTP(HyperText Transfer Protocol)即超文本传输协议,是用于分布式、协作式和超媒体信息系统的应用层协议,是互联网数据通信的基础。
一、基本功能和工作原理
HTTP是一种请求 - 响应协议。客户端(通常是浏览器)向服务器发送一个HTTP请求,请求获取特定的资源,如网页、图像、脚本文件等。服务器接收到请求后,根据请求的内容和服务器的配置,查找并处理相应的资源,然后向客户端发送一个HTTP响应。响应中包含了请求的资源内容或者是出错信息等内容。
例如,当你在浏览器中输入一个网址(如<https://www.example.com>)并按下回车键时,浏览器会构建一个HTTP请求,这个请求会包含一些信息,如请求的方法(通常是GET方法,表示获取资源)、请求的目标路径(网站根目录或者具体的文件路径)等。服务器收到这个请求后,会查找对应的网页文件等资源,然后将这些资源打包成一个HTTP响应发送回浏览器。浏览器再根据响应中的内容(如HTML文件)来显示网页。
二、HTTP 协议特点
无状态性:
这一特性决定了服务器不会存储两次请求之间的关联数据,每个请求都是独立存在的。
比如在一个电商网站,用户先后两次访问商品页面,服务器不会自动知晓这是同一个用户的连续操作,这就需要借助像 Cookie 这类机制来辅助实现 “记忆” 功能,以满足如保持用户登录状态等业务需求。
基于请求 - 响应模式:
这是整个协议运转的核心逻辑。所有的数据交互都遵循客户端发起请求,服务器响应回复的流程,其他诸如请求方法、消息头设置等都是围绕这个基本模式来丰富和完善具体交互内容的。
应用层协议:
HTTP 运行在应用层,依赖底层传输层协议(如 TCP)保障数据传输的稳定性和可靠性。它更专注于如何定义请求与响应的格式、内容以及交互规则,底层的 TCP 等协议则负责将数据准确无误地在网络中传递,二者协同实现互联网通信。
三、HTTP URL
HTTP URL包含了用于查找某个资源的足够信息, 是一种特殊类型的 URI。
其格式为:http://host[:port]/[abs_path],
也可以写成 http://IP(主机名/域名):端口/访问的资源路径。
http表示要通过HTTP协议来定位网络资源。
host表示合法的Internet主机域名或者IP地址。
port指定一个端口号,为空则使用缺省端口80。
abs_path指定请求资源的URI,如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
四、请求方法
GET方法:
这是最常用的方法。它用于从服务器获取资源,如网页、图片、文档等。GET请求的参数通常会附加在URL后面,例如https://www.example.com/page?param1=value1¶m2=value2,其中param1和param2是请求的参数,这种方式使得请求的参数可以被看到,并且对资源的获取不会产生其他影响,适合用于获取公开信息。
POST方法:
主要用于向服务器提交数据,比如用户在网页上填写表单(如登录表单、注册表单等)后,点击提交按钮,浏览器通常会使用POST方法将表单数据发送给服务器。
与GET方法不同,POST请求的数据是包含在请求体中的,不会直接显示在URL上,相对更安全,适用于涉及用户隐私等数据的传输。
其他方法:
此外,还有PUT(用于更新服务器上的资源)、DELETE(用于删除服务器上的资源)等方法,但这些方法在实际的网页浏览场景中使用相对较少,更多用于一些后台开发和数据管理场景。
五、协议版本
HTTP/1.0:这是早期的版本。它的特点是简单直接,每次请求 - 响应完成后就会关闭连接。但随着网页内容越来越复杂,这种方式效率较低,因为每次获取一个新的资源都需要重新建立连接。
HTTP/1.1:对HTTP/1.0进行了改进,支持持久连接,即一次连接可以用于多个请求 - 响应过程,大大提高了网页加载的效率。它还引入了一些新的特性,如分块传输编码,允许服务器将内容分块发送给客户端,更灵活地处理大文件传输。
HTTP/2:这是较新的版本,进一步提升了性能。它采用二进制格式进行数据传输,而不是HTTP/1.x的文本格式,这样可以更高效地解析和处理数据。同时,HTTP/2还引入了多路复用技术,一个连接可以同时发送和接收多个请求和响应,减少了延迟,加快了网页的加载速度。
六、状态码
状态码是服务器在响应中返回的一个三位数字代码,用于表示请求的处理结果。
例如:
200 OK:表示请求成功,服务器成功找到了请求的资源并返回给客户端。这是最常见的状态码,当你正常访问一个网页并且服务器能够正确提供网页内容时,就会返回这个状态码。
404 Not Found:表示客户端请求的资源在服务器上不存在。比如你输入了一个错误的网址或者网页中的链接指向了一个不存在的资源时,服务器就会返回404状态码。
500 Internal Server Error:表示服务器在处理请求时出现了内部错误。这可能是由于服务器程序出现故障、数据库访问问题等原因导致的。

被折叠的 条评论
为什么被折叠?



