42,用户访问网站的基本流程?php
[x] 第一步:客户端用户从浏览器里输入www.baidu.com网站地址,回车后,系统首先会查找系统本地的DNS缓存及hosts文件信息,查找是否存在www.baidu.com域名对应的IP解析记录,若是有就直接获取IP地址,而后去访问这个IP地址对应域名www.baidu.com的服务器,通常第一次请求时,DNS缓存是没有解析记录的,而hosts多在内部临时测试时使用。css
[x] 第二步:若是客户端本地hosts及DNS缓存及hosts文件没有www.baidu.com域名对应的解析记录,那么,系统会把浏览器的解析请求发送给客户端本地设置的DNS服务器地址(一般称此DNS为LDNS,即Local DNS)解析,若是LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址给客户端,若是没有,则LDNS会负责继续请求其余的DNS服务器。html
[x] 第三步:LDNS会从DNS系统的(.)开始请求www.baidu.com域名的解析,针对各个层级的DNS服务器系统进行一系列的查找,最终会查找到baidu.com域名对应的受权DNS服务器,而这个受权DNS服务器正是企业购买域名时用于管理域名解析的服务器,这个受权服务器会有www.baidu.com对应的IP解析记录,若是此时没有,就表示企业的域名管理人员没有为www.baidu.com域名作解析设置,即网站还没架设好。前端
[x] 第四步:baidu.com域名的受权DNS服务器会把www.baidu.com对应的最终IP解析记录发给LDNS。java
[x] 第五步:LDNS把收到的来自受权DNS服务器www.baidu.com对应的IP解析记录发给客户端浏览器,而且再LDNS把本地域名和IP的对应解析缓存起来,以便下一次更快的返回相同解析请求的记录,这些缓存记录在指定的时间(DNS TTL值控制)内不会过时。web
[x] 第六步:客户端浏览器获取到了www.etiantian.org的对应IP地址,接下来,浏览器会请求得到的IP地址对应的网站服务器,网站服务器接收到客户端的请求并响应处理(此处的处理多是数百台集群的服务器系统,也多是一台云主机),将客户请求的内容返回给客户端浏览器,至此,一次访问浏览网页的完整过程就完成了。sql
43,DNS域名解析流程(DNS递归查询,DNS迭代查询)?数据库
递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。若是DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其余服务器,并将返回的查询结果提交给客户机。
迭代查询
DNS 服务器另一种查询方式为迭代查询,DNS 服务器会向客户机提供其余可以解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另外一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果
为止。后端
44,http和https的默认端口号?浏览器
http:80
https:443
45,返回码:200,301,302,304,403,404,500,502,503,504的含义?
200~ok: 服务器成功返回网页,标准的成功返回状态码
301-Moved Permanently:永久跳转,全部的请求被跳转到新设定的位置
403-Forbidden:禁止访问,这个请求是合法的,但服务器端拒绝此请求,通常为权限配置不当致使
404-Not Found :服务器找不到请求的指定页面,多是请求了不存在的资源
500-Internal Server Error:内部服务器错误,因某些缘由不能完成客户的请求
502-Bad Gateway: 坏的网关,通常为代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。
503-Service Unavailable: 服务当前不可用,可能时服务器超载或宕机。
504-Gateway Timeout:网关超时,网关代理服务器向后端请求服务时,后端服务器没有在特定时间内完成处理请求,多是服务器过载形成
46,URL由什么组成?所谓请求是什么?uri又是什么?
URL的格式由下列三部分组成:
根据HTTP标准,HTTP请求可使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
GET 请求指定的页面信息,并返回实体主体。 HEAD 相似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会致使新的资源的创建和/或已有资源的修改。 PUT 从客户端向服务器传送的数据取代指定的文档的内容。 DELETE 请求服务器删除指定的页面。 CONNECT HTTP/1.1协议中预留给可以将链接改成管道方式的代理服务器。 OPTIONS 容许客户端查看服务器的性能。 TRACE 回显服务器收到的请求,主要用于测试或诊断。
客户端发送一个HTTP请求(request)到服务器的请求消息包括如下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分
请求方法 空格 URL 空格 协议版本 回车符 换行符 请求行
头部字段名 : 值 回车符 换行符
…… 请求头部
头部字段名 : 值 回车符 换行符
回车符 换行符
…………………………………………………………………… 请求数据
GET /562f25980001b1b106000338.jpg HTTP/1.1 Host img.mukewang.com User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Accept image/webp,image/*,*/*;q=0.8 Referer http://www.imooc.com/ Accept-Encoding gzip, deflate, sdch Accept-Language zh-CN,zh;q=0.8
GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。
从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,而且在每一个请求中自动发送等等
即便第四部分的请求数据为空,也必须有空行。
这个例子的请求数据为空。
POST / HTTP1.1 Host:www.wrox.com User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley
第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。
Web上可用的每种资源如HTML文档、图像、视频片断、程序等都是一个来URI来定位的
URI通常由三部组成:
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。
URL是Internet上用来描述信息资源的字符串,主要用在各类WWW客户程序和服务器程序上,特别是著名的Mosaic。
采用URL能够用一种统一的格式来描述各类信息资源,包括文件、服务器的地址和目录等。URL通常由三部组成:
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等
URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每一个 URL 都是 URI,但不必定每一个 URI 都是 URL。这是由于 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
在Java的URI中,一个URI实例能够表明绝对的,也能够是相对的,只要它符合URI的语法规则。而URL类则不只符合语义,还包含了定位该资源的信息,所以它不能是相对的。
在Java类库中,URI类不包含任何访问资源的方法,它惟一的做用就是解析。
相反的是,URL类能够打开一个到达资源的流。
47,http协议里GET和POST请求的区别?
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址能够被Bookmark,而POST不能够。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,由于参数直接暴露在URL上,因此不能用来传递敏感信息。
GET参数经过URL传递,POST放在Request body中。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。也就是说一般GET发送一个TCP数据包,而POST会发送两次,但并不绝对,有的浏览器就只发送一次。
48,什么是静态网页,什么是动态网页?
在网站设计中,纯粹HTML格式的网页(能够包含图片,视频,JS(前端功能实现),CSS(样式)等)一般被称为“静态网页”,早期的网站大多都是静态的。静态网页是相对于动态网页而言的,是指没有后台数据库,不含程序(如php,jsp,asp)和可交互的网页。
所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是.htm,.html,.shtml,.xml,.js,.css等静态网页的常见后缀扩展名形式,而是以.asp,.aspx,.php,.js,.do,.cgi等形式做为后缀的,而且通常在动态网页网址中会有标志性的符号--“?,&”,此外,在大多数状况下后端都须要有数据库支持等。
49,伪静态网页的本质是什么?
1.静态页面
优势:相对于其余两种页面(动态页面和伪静态页面),速度最快,并且不须要从数据库里面提取数据,速度快的同时,也不会对服务器产生压力。
缺点:因为数据都是存储在HTML里面,因此致使文件很是大。而且最严重的问题是,更改源代码必须所有更改,而不能改一个地方,全站静态页面就自动更改了。若是是大型网站有较多的数据,那会占用大量的服务器空间,每次添加内容都会生成新的HTML页面。若是不是专业人士维护比较麻烦。
2.动态页面
优势:空间使用量很是小,通常几万条数据的网站,使用动态页面,可能只有几M的文件大小,而使用静态页面少则十几M,多则几十M甚至更多。由于数据库是从数据库里面调出来的,若是须要修改某些值,直接更改数据库,那么全部的动态网页,就会自动更新了。这一点相比静态页面优势就显而易见了。
缺点:用户访问速度较慢,为何会访问动态页面较慢呢?这个问题要从动态页面的访问机制提及了,其实咱们的服务器上面有一个解释引擎,当用户访问的时候,这个解释引擎就会把动态页面翻译为静态页面,这样你们就可以在浏览器里面查看源码了。而这个源码就是解释引擎翻译以后的源码。除访问速度较慢之外,动态页面的数据是从数据库里面调用过来的若是访问的人数较多,数据库的压力会很是大。不过如今的动态程序多数都使用了缓存技术。可是整体来说,动态页面对于服务器的压力比较大一些。同时动态页面的网站通常对于服务器的要求比较高一些,同时访问的人越多也会形成服务器的压力越大。
3.伪静态页面
伪静态页面定义:“假”静态页面,实质上是动态页面。
优势:相比静态页面而言,并无速度上的明显提高,由于是“假”静态页面,其实仍是一个动态页面,也是一样须要翻译为静态页面的。最大的好处就是让搜索引擎(Search Engine)把本身的网页当作静态页面来处理。
缺点:顾名思义,“伪静态”就是“假静态”,搜索引擎不会把他当作静态页面来处理,这只是咱们靠经验考逻辑去分析的,并不必定准确。或许搜索引擎直接把它认为是动态页面。
简单总结:
静态页面访问最快;维护较为麻烦。
50,前端语言的种类,后端语言的种类
前端:html css js 等
后端:java php