在浏览器里输入了www.baidu.com ,然后跳出了百度首页。这短短的几秒里发生了什么呢?
简单来说,从输入URL到页面展现有6步:
- 输入URL
- 域名解析
- 服务器处理
- 网站处理流程
- 浏览器处理
- 绘制页面
1.输入URL
- URL是什么
统一资源定位符,用于定位互联网上的资源。互联网上的每个文件都有一个唯一的URL,基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件。
模式/协议(scheme)告诉浏览器如何处理将要打开的文件,而服务器名称(IP地址)、路径和文件则指出文件位置。
对于 http:// baidu.com,http是一种网络协议。除了http,还有https、ftp、file 等其他协议。
2.域名解析
当我们输入http://baidu.com时,浏览器实际上并不能理解输入的内容,而是要查找与输入的URL对应的网站服务器的IP地址,这个查找的过程就是域名解析。
- IP是什么?
IP地址是给每个连接在互联网上的设备配的一个32位地址,比如192.168.8.8。 - 域名是什么?为什么要使用域名?
对于http://baidu.com,它的域名是baidu.com。对于人类的大脑来说,IP地址是一串数字,很难记忆,语义化的域名相对便于记忆。域名就是一个更加容易记忆的目标主机的地址标识符。 - DNS是什么?
DNS: 域名系统服务器像是一本网站通讯录。当你在浏览器内输入一个网址时,浏览器获取网页之前将会查看域名系统。浏览器需要找到存放你想要的网页的服务器,才能发送 HTTP 请求到正确的地方。
域名的解析是通过查看DNS信息,检索得到域名对应的IP地址。
浏览器会依次在这些地方查找DNS :
1.浏览器缓存
2.系统缓存
3.路由器缓存
4.ISP DNS 缓存
5.根域名服务器(根服务器将请求转发至下级,直至找到 IP)
3.服务器处理
找到IP后,浏览器向对应IP地址的服务器发送请求。服务器处理请求的应用Web server收到请求后,交给网站代码或接受请求反相代理到其他web服务器。常见的web server产品有apache、nginx、IIS或Lighttpd等。
4.网站处理流程
网站处理流程就是服务器处理请求的过程,通常以MVC设计模式处理。
-MVC 设计模式
Model(模型) View(视图) Controller(控制器)
控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回html字符串给浏览器。
5.浏览器处理
加载-->解析-->渲染
浏览器接受html字符串后,被一句句读取解析。遇到link标签,浏览器会再次向服务器发送请求获取css文件;遇到image标签,发送请求获取图片资源;遇到script标签时,发送请求获取js文件,并执行js代码。
网友评论