HTTP 是一个无状态的协议,无状态指客户端和服务器之间不需要建立持久的连接,在客户端向服务器发出请求且服务器收到该请求并烦啊回响应后,本次通信结束,HTTP 连接将会关闭,服务器不保留连接的相关信息。
传输流程
1、地址解析
通过域名系统 DNS 解析服务器域名从而获得主机的 IP 地址。
2、封装 HTTP 数据包
解析协议名、主机名、端口、对象路径等并结合本机自己的信息封装成一个 HTTP 请求数据包。
3、封装 TCP 包
4、建立 TCP 连接
5、客户端发送请求
6、服务器响应
服务器在收到请求后,结合业务逻辑进行数据处理,然后向客户端返回相应的响应信息。
7、服务器关闭 TCP 连接
服务器在向浏览器发送请求响应数据后关闭 TCP 连接。
但如果浏览器或服务器的消息头中加入了 Connection: keep-alive,则 TCP 连接在请求响应数据发送后仍然保持连接状态,下一次请求可以使用相同的连接发送。
常见状态码
消息响应 1xx
| 100 | Continue(继续) |
|---|---|
| 101 | Switching Protocol(切换协议) |
成功响应 2xx
| 200 | OK(成功) |
|---|---|
| 201 | Created(已创建) |
| 202 | Accepted(已创建) |
| 203 | Non-Authoritative Information(未授权信息) |
| 204 | No Content(无内容) |
| 205 | Reset Content(重置内容) |
| 206 | Partial Content(部分内容) |
网络重定向 3xx
| 300 | Multiple Choice(多种选择) |
|---|---|
| 301 | Moved Permanently(永久移动) |
| 302 | Found(临时移动) |
| 303 | See Other(查看其他位置) |
| 304 | Not Modified(未修改) |
| 305 | Use Proxy(使用代理) |
| 306 | unused(未使用) |
| 307 | Temporary Redirect(临时重定向) |
| 308 | Permanent Redirect (永久重定向) |
客户端错误 4xx
| 400 | Bad Request (错误请求) |
|---|---|
| 401 | Unauthorized(未授权) |
| 402 | Payment Required(需要付款) |
| 403 | Forbidden(禁止访问) |
| 404 | Not Found(未找到) |
| 405 | Method Not Allowed(请求方法不允许) |
| 406 | Not Acceptable(无法接收) |
| 407 | Proxy Authentication Required(要求代理身份验证) |
| 408 | Request Timeout(请求超时) |
| 409 | Conflict(冲突) |
| 410 | Gone(已失效) |
| 411 | Length Required(需要内容的长度) |
| 412 | Precondition Failed(预处理失败) |
| 413 | Request Entity Too Large(请求体过长) |
| 415 | Unsupported Media Type(媒体类型不支持) |
| 416 | Requested Range Not Satisfiable(请求范围不合要求) |
| 417 | Expectation Failed(预期结果失败) |
服务端错误5xx
| 500 | Internal Server Error(内部服务器错误) |
|---|---|
| 501 | Implemented(未实现) |
| 502 | Bad Gateway(错误网关) |
| 503 | Service Unavaliable(服务不可用) |
| 504 | Gateway Timeout(网关超时) |
| 505 | HTTTP Version Not Supported(HTTP 版本不支持) |
