深入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 |
服务器发生不可预期的错误 |