一、URL是什么?
URL(Uniform Resoure Locator)统一资源定位符,用于定位互联网上的资源。
URL分为三部分
第一部分是协议(或称为服务方式);
一般会有http、https、ftp、file协议
如“http://”表示WWW服务器,“ftp://”表示FTP服务器。
第二部分是存有该资源的主机IP地址(有时也包括端口号);
第三部分是主机资源的具体地址,如目录和文件名等。
注:第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。
举例:http://jirengu.com:800/blog
1、协议部分:http:
2、域名部分:jirengu.com:
3、端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口。举例中800则是端口,一般来说会省略端口号(因为有默认的)若不是采用默认的端口号,则需要另外输入。
4、虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/blog”
当然在更长的一串URL中,还包括文件名部分、锚部分、参数部分。
举例:在http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name中
5、文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
6、锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分
7、参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
二、从URL输入到页面展示发生了什么
第一步:在浏览器内输入URL
第二步:域名解析(什么是域名解析?)
域名解析就是域名到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址。域名的解析工作由DNS服务器完成【DNS 是域名系统 (Domain Name System) 的缩写)】。(IP地址和域名的关系就像盛世家园这个小区名一样,其实这个小区名的地址就是111弄,只不过用小区名来方便记忆而已)
那么域名解析的流程是什么?
1.客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
2.当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
3.如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
4.本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
5.重复第四步,直到找到正确的纪录。
6.本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
延伸扩展:DNS劫持是什么?
例如你输入www.taobao.com,他所给你指向的IP不是正确的IP。
第三步. 服务器处理
第四步.网站处理流程
网站处理实际是后台处理,后台开发有很多框架,大部分都还是按照MVC设计模式进行搭建
MVC是个设计模式,将应用程序分成三个核心部件:模型(model)--视图(view) -- 控制器(controller),它们各自处理自己的任务,实现输入、处理和输出的分离
MVC是一个设计模式,将应用程序分成三个核心部件:模型(model)-- 视图(view)--控制器(controller),它们各自处理自己的任务,实现输入、处理和输出的分离。
1、视图(view)
视图是用户看到并与之交互的界面。这是前端工作的主力部分。
2、模型(model)
模型是将实际开发中的业务规则和所涉及的数据格式模型化,应用于模型的代码只需写一次就可以被多个视图重用。在MVC的三个部件中,模型拥有最多的处理任务。一个模型能为多个视图提供数据。
3、控制器(controller)
控制器接受用户的输入并调用模型和视图去完成用户的需求。Controller处于管理角色,从视图接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示模型处理返回的数据。
总结而言,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回html字符串给浏览器,浏览器呈现网页给用户。因此,下一步就来到浏览器处理阶段。
第五步.浏览器处理
浏览器对一个html页面的加载顺序是从上而下的,并在加载过程并行进行解析渲染处理。在这个过程中遇到link标签、image标签、script标签时,浏览器会再次向服务器发送请求获取css文件、图片资源、js文件,并执行js代码,同步进行加载解析。
例如:
HTML字符串被浏览器接受后被一句句读取解析
解析到link 标签后重新发送请求获取css
解析到 script标签后发送请求获取 js,并执行代码
解析到img 标签后发送请求获取图片资源
第六步.绘制网页
浏览器根据 HTML 和 CSS 计算得到渲染树,绘制到屏幕上
js 会被执行 (此部分暂时不是很理解,今后补充)