1.关于URL
URL是一种统一资源定位符,用于定位互联网上资源,包括http/https/ftp/file等协议
(ps:其中https可用于资源加密,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL)
2.域名解析
从URL首先接着进行域名解析,因为浏览器并不知道某个URL是什么,需要通过域名找到某个网址所在的IP地址。
那域名是什么?为什么需要域名?
域名是一个IP地址上有“面具” 。例如baidu.com即为域名。一个域名的目的也就是作用,是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。
IP是什么?
IP是网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。
局域网IP和公网IP是不同的,位于同一个局域网IP的用户可以进行信息交互,而位于不同局域网IP的用户只能通过申请公网IP进行信息交互。127.0.0.1为本机IP;
域名解析为IP的过程
通过浏览器缓存,系统缓存,路由器缓存,ISP DNS缓存,向根域名服务器查找域名对应IP等各种方式寻找解析IP。这里要提及DNS,DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)
因此通过8.8.8.8(google提供的DNS服务器)或者114.114.114.114(国内一个DNS服务商提供的服务器)可以找到域名与IP的相关记录。DNS劫持就是使域名对应的不再是原本应有的IP
3.服务器处理响应请求
服务器是安装了操作系统的机器,通过服务器包含的web serve来处理相关请求,常见的web serve包括Apache/Nginx/lls/Lighttpd. web serve服务器接受用户请求交给网站代码,或者接受请求反向代理到其他web serve。服务器响应请求,将数据返回给浏览器。数据可能是根据HTML协议组织的网页,里面包含页面的布局、文字。数据也可能是图片、脚本程序等。现在你可以用浏览器的“查看源代码”功能,感受一下服务器返回的是什么。如果资源路径指示的资源不存在,服务器就会返回著名的404错误。如国返回的是一个页面,根据页面里一些外链的URL,例如图片的地址,按照上述过程再次获取。
4.网站处理流程
模型-视图-控制器 (MVC).MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:
模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务.被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
如下图
4.浏览器的处理
开始根据资源的类型,将资源组织成屏幕上显示的图像,这个过程叫渲染,网页渲染是浏览器最复杂、最核心的功能。对加载到的资源(HTML、JS、CSS等)进行语法解析,建议相应的内部数据结构(比如HTML的DOM树,JS的(对象)属性表,CSS的样式规则等等)渲染,构建渲染树,对各个元素进行位置计算、样式计算等等。
5.绘制网页
浏览器根据html和css计算得到渲染树之后,将渲染好的页面图像显示出来,即绘制网页,并开始响应用户的操作。。
综上便是从URL到页面展现的基本步骤,实际远远并没有那么简单,很多很多的知识还需要学习。