持久化
HTTP/1.1 和一部分的 HTTP/1.0 想出了
持久连接(HTTP Persistent Connections, 也称为 HTTP keep-alive 或
HTTP connection reuse) 的方法。 持久连接的特点是, 只要任意一端
没有明确提出断开连接, 则保持 TCP 连接状态。
在 HTTP/1.1 中, 所有的连接默认都是持久连接, 但在 HTTP/1.0 内并
未标准化。 虽然有一部分服务器通过非标准的手段实现了持久连接,
但服务器端不一定能够支持持久连接。 毫无疑问, 除了服务器端, 客
户端也需要支持持久连接。
管线化
持久连接使得多数请求以管线化(pipelining) 方式发送成为可能。 从
前发送请求后需等待并收到响应, 才能发送下一个请求。 管线化技术
出现后, 不用等待响应亦可直接发送下一个请求。
这样就能够做到同时并行发送多个请求, 而不需要一个接一个地等待
响应了。
比如, 当请求一个包含 10 张图片的 HTML Web 页面, 与挨个连接相
比, 用持久连接可以让请求更快结束。 而管线化技术则比持久连接还
要快。 请求数越多, 时间差就越明显。
MIME
常用状态码
2XX 成功
200 OK | 正常处理 |
204 No Content | 请求处理成功,但没有资源可返回 |
206 Partial Content | 成功执行了范围请求 |
3XX 重定向
301 Moved Permanently | 资源的URI已永久定位到其他位置 |
302 Found | 资源的URI已临时定位到其他位置 |
303 See Other | 资源的URI已定位到其他位置,应使用GET方法定向获取请求的资源 |
304 Not Modified | 表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况(附带条件的请求是指采用 GET方法的请求报文中包含 If-Match, If-ModifiedSince, If-None-Match, If-Range, If-Unmodified-Since 中任一首部) |
307 Temporary Redirect | 临时重定向 |
4XX 客户端错误
400 Bad Request | 该状态码表示请求报文中存在语法错误。 |
401 Unauthorized | 该状态码表示发送的请求需要有通过 HTTP 认证的认证信息。 |
403 Forbidden | 该状态码表明对请求资源的访问被服务器拒绝了。 |
404 Not Found | 该状态码表明服务器上无法找到请求的资源。 |
5XX服务器错误
500 Internal Server Error | 该状态码表明服务器端在执行请求时发生了错误。 |
503 Service Unavailable | 该状态码表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。 |
403 Forbidden | 该状态码表明对请求资源的访问被服务器拒绝了。 |
404 Not Found | 该状态码表明服务器上无法找到请求的资源。 |
Web 服务器
单台虚拟主机实现多个域名:HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点。
通信数据转发程序 : 代理、 网关、 隧道。这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器, 并且能接收从那台服务器发送的响应再转发给客户端。
代理
代理是一种有转发功能的应用程序, 它扮演了位于服务器和客户端“中间人”的角色, 接收由客户端发送的请求并转发给服务器, 同时也接收服务器返回的响应并转发给客户端。
网关
网关是转发其他服务器通信数据的服务器, 接收从客户端发送来的请求时, 它就像自己拥有资源的源服务器一样对请求进行处理。 有时客户端可能都不会察觉, 自己的通信目标是一个网关。
隧道
隧道是在相隔甚远的客户端和服务器两者之间进行中转, 并保持双方通信连接的应用程序。
HTTP报文首部
HTTP请求报文
在请求中, HTTP 报文由方法、 URI、 HTTP 版本、 HTTP 首部字段等部分构成。
HTTP响应报文
在响应中, HTTP 报文由 HTTP 版本、 状态码(数字和原因短语) 、HTTP 首部字段 3 部分构成。
HTTP 首部字段
HTTP 首部字段是由首部字段名和字段值构成的, 中间用冒号“:” 分隔。
另外, 字段值对应单个 HTTP 首部字段可以有多个值, 如下所示。
HTTP 首部字段根据实际用途被分为以下 4 种类型
6.2.5 非 HTTP/1.1 首部字段
6.2.6 End-to-end 首部和 Hop-by-hop 首部