admin管理员组

文章数量:1580456

当我们在浏览器中输入了一个URL 地址(如),从等待到页面显示的过

程中,后台究竟发生了什么处理呢?

. 解析域名地址为IP 地址

浏览器DNS 缓存:以Chrome 为例,在浏览器窗口中输入

chrome://net-internals/#dns,就可以查看 前浏览器DNS 缓存记录,chrome 的DNS

缓存过期时间还是比较短的,大约为 1 分钟。

本机DNS 缓存:在Windows 命令行模式下输入ipconfig /displaydns,就可以查看本机

DNS 缓存记录。许多主机在启动时从本地域名服务器下载域名和地址的全部数据库,维护

存放自 最近使用的域名的缓存。

本地域名服务器:在Windows 命令行模式下输入ipconfig /all,就可以查看本地DNS 服

务器的IP 地址,一般而言本地域名服务器都是由ISP 提供,主机通过UDP 和本地域名服

务器通信。如果在本地域名服务器高速缓存中搜索不到要转换的域名,就向更高级别的域名

服务器发起迭代查询,按根域名服务器 (一般查询根域名服务器都是遵循就近原则,中国有

3 个根服务器,位置分别为北京,香港,台北)-> 顶级域名服务器-> 权限域名服务器的

顺序查询。假如本地域名服务器高速缓存中存在顶级域名服务器 的IP 地址,那么本

地域名服务器可以不向根域名服务器进行查询,而是直接向com 顶级域名服务器发送UDP

请求报文,这样就可以大大减轻根域名服务器的负荷。维护本地域名服务器数据库的主机自

然应该定期地检查域名服务器以获取新的映射信息,而且主机必须从缓存中删掉无效的项。

二. TCP 连接建立

由上一步获取 的IP 地址8 后,客户端主机就会选择

一个未使用的端口 8:80 通信,在Windows 命令行模式下输入netstat,

就可以查看当前正在活动的TCP 连接。

Client 首先发送一个连接试探,ACK=0 表示确认号无效,SYN = 1 表示这是一个连接请

求或连接接受报文,同时表示这个数据报不能携带数据,seq = x 表示Client 自 的初始

序号。

Server 监听到连接请求报文后,如同意建立连接,则向Client 发送确认。TCP 报文首部

中的SYN 和 ACK 都置1 ,ack = x + 1 表示期望收到对方下一个报文段的第一个数据

字节序号是x+1,同时表明x 为止的所有数据都已正确收到,seq = y 表示Server 自

的初始序号。

Client 收到确认后还需再次发送确认,同时携带要发送给Server 的数据。ACK 置 1 表示

确认号ack= y + 1 有效,Client 自 的序号seq= x + 1 。

三. 浏览器给服务器发送一个http 请求

上一步中有提到Client 收到确认后还需再次发送确认,这时就可以携带要发送给Server

的数据,这个数据就是HTTP 请求报文。

HTTP 请求行:GET / HTTP/ 1.1

HTTP 请求首部:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3

Accept-Encoding: gzip,deflate,sdch

Accept-Language: zh-CN,zh;q=0.8

Connection: keep-alive

Cookie: 省略

Host:

If-Modified-Since: Mon, 22 Apr 2013 09:12:11 GMT

User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.13

这里重点提一下Connection。

Connection 设置为keep-alive,就是Server 在发送响应后仍然在一段时间内保持这条

连接,使同一Client 可以继续在这条连接上传送后续的HTTP 请求报文和响应报文。对于

不同的web 服务器,如IIS,Apache,都有不同的keep-alive 过期时间, 然如果过期

时间太短,就达不到重用连接的效果,如果过期时间太长,则会造成占用资源的坏处。

四. 服务器给浏览器发送一个http 响应

Server 接收到http 请求的时候,

本文标签: 服务器器及流程意外PDF