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 版本不支持) |