Linux运维学习笔记(二)

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

  • ps:上述仅仅是客户端用户第一次访问网站的基本过程,连续访问后,系统本地和LDNS层级都会有缓存记录,再访问时流程就会有些变化,会直接取本地缓存记录,这样访问过程就很快了。在上述整个访问流程里,包含了DNS的解析流程以及HTTP协议的通讯原理等重要的技术点。

43,DNS域名解析流程(DNS递归查询,DNS迭代查询)?数据库

  • [x] 第一步:客户端用户从浏览器里输入www.baidu.com网站地址后回车,系统首先会查找系统本地的DNS缓存及hosts文件信息,肯定是否存在www.baidu.com域名对应的IP解析记录,若是有就直接获取到IP地址,而后去访问这个IP地址对应的www.baidu.com域名的服务器,通常第一次请求时,DNS缓存是没有解析记录的,而hosts多为内部临时测试使用。
  • [x] 第二步:若是客户端DNS缓存及本地hosts文件没有www.baidu.com域名对应的解析记录,那么,系统会把浏览器的解析请求发送给在客户端本地设置的DNS服务器地址(一般称此DNS为LDNS,即:Local DNS)解析,若是LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址给客户端:若是没有,则LDNS会负责继续请求其余的DNS服务器。
  • [x] 第三步:LDNS会从DNS系统的(.)根开始请求www.baidu.com域名的解析,根DNS服务器在全球一共有13台,根服务器下面是没有www.baidu.com域名解析记录的,可是根下面有www.baidu.com对应的顶级域.org的解析记录,所以,根会把.org对应的DNS服务器地址返回给LDNS。
  • [x] 第四步:LDNS获取到.org对应的DNS服务器地址后,就会去.org服务器请求www.baidu.com域名的解析,而.org服务器下面也没有www.baidu.com域名对应的解析记录,可是有baidu.com域名的解析记录,所以,.org服务器会把baidu.com对应的DNS服务器地址返回给LDNS
  • [x] 第五步:同理,LDNS获取到baidu.com对应的DNS服务器地址后,就会去baidu.org服务器请求www.baidu.com域名的解析,baidu.com域名对应的DNS服务器是该域名的受权DNS服务器,这个DNS服务器正是企业购买域名时管理解析所在的服务器(也多是自建的受权DNS服务器),这个服务器会有www.baidu.com对应的IP解析记录,若是此时没有,就表示企业的域名人员没有为www.baidu.com域名作解析,即网站还没架设好。
  • [x] 第六步:baidu.com域名DNS服务器会把www.baidu.com对应的IP解析记录发给LDNS
  • [x] 第七步:LDNS把收到的来自受权DNS服务器www.baidu.com对应的IP解析记录发给客户端浏览器,而且LDNS会把本地域名和IP的对应解析记录缓存起来,以便下一次更快的返回相同解析请求的记录。至此,整个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的格式由下列三部分组成:

  • [x] 第一部分是协议
  • [x] 第二部分是主机资源服务器IP地址或域名(端口号)
  • [x] 第三部分是主机资源的具体地址,如目录和文件名等
  • [x] 第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用"/"符号隔开。第一部分和第二部分是不可缺乏的,第三部分能够省略

根据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请求例子,使用Charles抓取的request:
 
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
 
第一部分:请求行,用来讲明请求类型,要访问的资源以及所使用的HTTP版本.
 

GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。

 
第二部分:请求头部,紧接着请求行(即第一行)以后的部分,用来讲明服务器要使用的附加信息
 

从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,而且在每一个请求中自动发送等等

 
第三部分:空行,请求头部后面的空行是必须的
 

即便第四部分的请求数据为空,也必须有空行。

 
第四部分:请求数据也叫主体,能够添加任意的其余数据。
 

这个例子的请求数据为空。

 
POST请求例子,使用Charles抓取的request:
 
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版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。

 

URI和URL的区别

URI,是uniform resource identifier,统一资源标识符,用来惟一的标识一个资源。

Web上可用的每种资源如HTML文档、图像、视频片断、程序等都是一个来URI来定位的
URI通常由三部组成:
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。

URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL能够用来标识一个资源,并且还指明了如何locate这个资源。

URL是Internet上用来描述信息资源的字符串,主要用在各类WWW客户程序和服务器程序上,特别是著名的Mosaic。
采用URL能够用一种统一的格式来描述各类信息资源,包括文件、服务器的地址和目录等。URL通常由三部组成:
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等

URN,uniform resource name,统一资源命名,是经过名字来标识资源,好比mailto:java-net@java.sun.com。

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)把本身的网页当作静态页面来处理。

 

  缺点:顾名思义,“伪静态”就是“假静态”,搜索引擎不会把他当作静态页面来处理,这只是咱们靠经验考逻辑去分析的,并不必定准确。或许搜索引擎直接把它认为是动态页面。

 

 

 

简单总结:

 

静态页面访问最快;维护较为麻烦。

  • 动态页面占用空间小、维护简单;访问速度慢,若是访问的人多,会对数据库形成压力。
  • 使用纯静态和伪静态对于SEO(Search Engine Optimization:搜索引擎优化)没有什么本质的区别。
  • 使用伪静态将占用必定量的CPU占用率,大量使用会致使CPU超负荷。

50,前端语言的种类,后端语言的种类

  前端:html css js 等

   后端:java php

相关文章
相关标签/搜索