1.用户输入网址,浏览器发起DNS查询请求
用户访问网页,DNS服务器(域名解析系统)会根据用户提供的域名查找对应的IP地址。
域名解析服务器是基于UDP协议实现的一个应用程序,通常通过 监听53端口 来获取客户端的域名解析请求。DNS查找过程如下:
1、浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器 会储存 个自固定的一个时间(2分钟到30分钟不等)。
2、系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
3、路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
4、ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。
5、递归搜索 – 你的ISP的DNS服务器 从根域名服务器 开始进行递归搜索,从.com顶级域名服务器 到 Facebook的域名服务器。
一般DNS服务器的缓存中会有 .com域名服务器 中的域名,所以 到顶级服务器的匹配过程 不是那么必要了。
2、建立TCP连接
浏览器通过DNS获取到web服务器 真的IP地址后,便向web服务器发起 tcp连接请求,通过TCP三次握手建立好连接后,浏览器便可以将HTTP请求数据 通过发送给服务器了。
3、浏览器向 web 服务器发送一个 HTTP 请求
HTTP请求是一个基于TCP协议之上的 应用层协议 —— 超文本传输协议。一个http事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。
GET https://www.cricode.com/ HTTP/1.1
Host: www.cricode.com
Connection: keep-alive
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
4、发送响应数据给客户端
Web服务器通常通过监听80端口,来获取客户端的HTTP请求。与客户端建立好TCP连接后,web服务器开始接受客户端发来的数据,并通过HTTP解码,
从接受到的网络数据中 解析出请求的url信息 以及其他诸如Accept-Encoding、Accept-Language等信息。Web服务器根据HTTP请求头的信息,
得到响应数据 返回给客户端。
HTTP/1.1 200 OK
Date: Fri, 24 Oct 2014 13:55:18 GMT
Server: Apache
X-Powered-By: PHP/5.4.32
Keep-Alive: timeout=5, max=10000
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
至此,一个HTTP通信过程完成。web服务器会根据HTTP请求头中的Connection字段值决定 是否关闭TCP链接通道,
当Connection字段值为keep-alive时,web服务器不会立即关闭此连接。
(这一步一开始也许还会有 重定向 及浏览器跟踪重定向地址等)。
声音简介
用户评论
表情0/300
音频列表
- 2018-10
- 2018-10
- 2018-10
- 2018-10
- 2018-10
- 2018-10
- 2018-10
- 2018-10
- 2018-10
- 2018-10
查看更多
听友301131003
👍