深入Web请求过程(一)HTTP解析

在浏览器中输入网址,敲击回车,就开始发起了请求。

整个过程大制如下:

深入Web请求过程(一)HTTP解析

1. 浏览器通过域名解析把输入的网址转换为对应的IP地址

2. 根据IP在互联网上找到对应的服务器,建立Socket链接

3. 客户端向服务器发送HTTP协议请求包,请求服务器中的资源

4. 到达负载均衡服务器,根据相应策略来分配用户请求到指定服务器来处理请求

5. 请求的数据可以存储在分布式缓存中,或者静态文件中,还有数据库等等

6. 当数据返回给浏览器是,浏览器解析数据和静态资源(css、js、jpg等等)时候又会发起另外一个请求,整个请求可能会在CDN上,那么CDN服务器有处理这个用户的请求

7. 关闭TCP链接,客户端与服务器断开。客户端解释HTML文档,在浏览器上渲染图形结果

一个HTTP的请求简单来说就是这样,很简单,但原理有很复杂。

PS:HTTP1.1开始,服务器可以与客户端保持长连接。

一、HTTP解析

B/S网络架构的核心是HTTP,这里我们简单的看一下HTTP的请求头和响应头

                  

常见的HTTP请求头

请求头

说明

Accept-Charset

用户指定客户端的字符集

Accept-Encoding

用户指定可接受的内容编码,如Accept-Encoding:giz.deflate

Accept-Language

用于值当一种自然语言,如Accept-Language:zh-cn

Host

用于指定那个被求情资源的Internet主机和端口号

例如:www.baidu.com

User-Agent

客户端将它的操作系统、浏览器和其他属性告诉服务器

Connection

当前链接是否保持 如Connection:Keep-Alive

常见的HTTP响应头

响应头

说明

Server

使用服务器名称,如:Server:Apache/1.3.6(Unix)

Content-Type

用来指明发送给接收者的实体正文的媒体类型

如:Content-Type:text/html;charset=GBK

Content-Encoding

与请求报头Accept-Encoding对应,告诉浏览器服务端采用的编码格式

Content-Language

描述资源所用的自然语言,与Accept-Language对应

Content-Length

知名尸体正文长度,用以字节方式存储的十进制数字来表示

Keep-Alive

保持连接的时间,如Keep-Alive:timeout=5,max=120

 

常见的HTTP状态码

状态码

说明

200

客户端请求成功

302

临时跳转,跳转地址通过Location指定

400

客户端请求有语法错误,不能被服务器识别

403

服务器收到请求,但拒绝提供服务

404

请求资源不存在

500

服务器发生不可预期的错误