1. 什么是HTTP?
HTTP(HyperText Transfer Protocol,超文本传输协议)是用于在计算机之间传输超文本(如网页、图片、视频等)的应用层协议。它是互联网数据通信的基础,定义了客户端(如浏览器)和服务器之间的通信规则。
2. HTTP名称的拆解
HTTP的名称可分为三部分:
协议(Protocol)
计算机世界的“约定”,规范了通信双方(如浏览器和服务器)的行为。
例如:定义如何发起请求、如何响应、错误处理方式等。
传输(Transfer)
数据在两点(客户端↔服务器)之间双向传输。
允许中间经过代理、网关等中转节点。
超文本(HyperText)
超越普通文本的内容,包含文字、图片、链接、视频等。
典型例子:HTML(通过超链接跳转的混合内容)。
3. HTTP的核心特点
无状态:默认不记录之前的请求(需借助Cookie/Session维持状态)。
明文传输:数据未加密(HTTPS通过SSL/TLS加密解决)。
灵活可扩展:支持添加自定义头部字段。
基于请求-响应模型:客户端发起请求,服务器返回响应。
4. 常见HTTP状态码
状态码 | 类别 | 说明 |
---|---|---|
200 | 2xx (成功) | 请求成功,返回数据(如网页内容)。 |
204 | 2xx | 成功但无返回内容(如删除操作)。 |
301 | 3xx (重定向) | 资源永久移动到新URL。 |
302 | 3xx | 资源临时重定向。 |
304 | 3xx | 资源未修改,使用缓存。 |
400 | 4xx (客户端错误) | 请求语法错误(如参数缺失)。 |
403 | 4xx | 服务器拒绝访问(如权限不足)。 |
404 | 4xx | 资源不存在。 |
500 | 5xx (服务器错误) | 服务器内部错误(如代码崩溃)。 |
503 | 5xx | 服务不可用(如服务器过载)。 |
5. 关键HTTP字段
Host
:指定目标服务器的域名(用于虚拟主机)。Content-Length
:响应体的数据长度(解决TCP粘包问题)。Connection: Keep-Alive
:启用长连接(复用TCP连接)。Content-Type
:响应数据的格式(如text/html; charset=utf-8
)。Accept
:客户端声明可接收的数据类型(如*/*
表示任意类型)。Content-Encoding
:数据压缩方式(如gzip
)。
6. HTTP vs. HTTPS
HTTP:明文传输,不安全,默认端口80。
HTTPS:通过SSL/TLS加密,防窃听/篡改,默认端口443。
7. 总结
HTTP是互联网的“普通话”,定义了客户端与服务器如何交换超文本数据。其核心是:
协议:规范通信行为。
传输:数据在两点间流动。
超文本:丰富的内容形式(文本、图片、链接等)。
通过状态码和头部字段,HTTP实现了灵活、高效的网络通信,支撑了现代Web应用的发展。