HTTP的请求过程解析
Posted 泡^泡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP的请求过程解析相关的知识,希望对你有一定的参考价值。
HTTP是什么
HTTP 是一个无状态的协议,无状态指在客户端(Web 浏览器)和服务器之间不需要建立持久的连接,在一个客户端向服务器端发出请求且服务器收到该请求并返回响应(response)后,本次通信结束,HTTP 连接将被关闭,服务器不保留连接的相关信息。
HTTP 遵循请求(Request)/应答(Response)模型,客户端向服务器发送请求,服务器处理请求并返回适当的应答。
HTTP传输流程
HTTP 的传输流程包括地址解析、封装 HTTP 数据包、封装 TCP 包、建立 TCP 连接、客户端发送请求、服务器响应、服务器关闭 TCP 连接,具体流程如下。
(1)地址解析:地址解析通过域名系统 DNS 解析服务器域名从而获得主机的 IP 地址。例如,用客户端的浏览器请求 http://localhost.com:8080/index.htm,则可从中分解出协议名、主机名、端口、对象路径等部分结果如下。
- 协议名:HTTP
- 主机名:localhost.com
- 端口:8080
- 对象路径:/index.htm
(2)封装 HTTP 数据包:解析协议名、主机名、端口、对象路径等并结合本机自己的信息封装成一个 HTTP 请求数据包。
(3)封装 TCP 包:将 HTTP 请求数据包进一步封装成 TCP 数据包。
(4)建立 TCP 连接:基于 TCP 的三次握手机制建立 TCP 连接。
(5)客户端发送请求:在建立连接后,客户端发送一个请求给服务器。
(6)服务器响应:服务器在接收到请求后,结合业务逻辑进行数据处理,然后向客户端返回相应的响应信息。在响应信息中包括状态行、协议版本号、成功或错误的代码、消息体等内容。
(7)服务器关闭 TCP 连接:服务器在向浏览器发送请求响应数据后关闭 TCP 连接。但如果浏览器或者服务器在消息头中加入了 Connection:keep-alive,则 TCP 连接在请求响应数据发送后仍然保持连接状态,在下一次请求中浏览器可以继续使用相同的连接发送请求。采用 keep-alive 方式不但减少了请求响应的时间,还节约了网络带宽和系统资源。
HTTP常见状态码
状态码 | 原因短语 |
消息响应 | |
100 | Continue(继续) |
101 | Switching Protocol(切换协议) |
成功响应 | |
200 | OK(成功) |
201 | Created(已创建) |
202 | Accepted(已创建) |
203 | Non-Authoritative Information(未授权响应) |
204 | No Content (无内容) |
205 | Reset Content(重置内容) |
206 | Partial Content (部分内容) |
网络重定向 | |
300 | Multiple Choice(多种选择) |
301 | Moved Permanently(永久移动) |
302 | Found(临时移动) |
303 | See Other(查看其他位置) |
304 | Not Modified(未修改) |
305 | Use Proxy(使用代理) |
306 | unused (未使用) |
307 | Temporary Redirect(临时重定向) |
308 | Permanently Redirect(永久重定向) |
客户端错误 | |
400 | Bad Request(错误请求) |
401 | Unauthorized(未授权) |
402 | Payment Required(需要付款) |
403 | Forbidden(禁止访问) |
404 | Not Found(未找到) |
405 | Method Not Allowed(不允许使用该方法) |
406 | No Acceptable(无法接受) |
407 | Proxy Authentication Required(要求代理身份验证) |
408 | Request Timeout(请求超时) |
409 | Conflict(冲突) |
410 | Gone(已失效) |
411 | Length Required(需要内容的长度) |
412 | Precondition Failed(预处理失败) |
413 | Request Entity Too Large(请求实体过长) |
414 | Request-URI Too Large(请求网络过长) |
415 | Unsupported Media Type(媒体类型不支持) |
416 | Requested Range Not Satisfiable(请求范围不合要求) |
417 | Expectation Failed(预期结果失败) |
服务器端错误 | |
500 | Internal Server Error(内部服务器错误) |
501 | Implemented(实现) |
502 | Bad Gateway(网关错误) |
503 | Service Unavailable(服务不可用) |
504 | Gateway Timeout(网管超时) |
505 | HTTP Version Not Supported(HTTP 版本不受支持) |
以上是关于HTTP的请求过程解析的主要内容,如果未能解决你的问题,请参考以下文章