zoukankan      html  css  js  c++  java
  • WEB服务重要基础

    1.1用户访问房展基本流程

    我们每天都会使用Web客户端上网浏览网页。最常见Web客户端就是Web浏览器,如通过的微软InternetExplorer(IE)以及技术人员偏爱的火狐浏览器、谷歌浏览器等。当我们在Web浏览器里输入网站地址,例如:xuliangwei.com时,很快就会看到网站的内容,这看起来很神奇的背后,到底是怎样的实现流程呢?也许普通的上网者无需关注,但作为一个IT技术人员,就需要清晰的掌握了。

    下面我就为大家揭晓客户端用户从Web浏览器里输入网站地址后到看到网站地址后到看到网站的完整访问流程:

    第一步:客户端用户从从浏览器里输入www.xuliangwei.com网站地址后回车,系统会首先查找系统本地的host文件以及DNS缓存信息,查找是否存在www.xuliangwei.com对应的IP解析记录,如果有就直接获取到IP地址,然后去访问这个IP地址对应的www.xuliangwei.com服务器,一般第一次请求时,DNS缓存是没有解析记录的。

    第二步:如果客户端本地缓存或hosts没有对应www.xuliangwei.com域名的解析记录,那么,系统会吧浏览器的解析请求交给在客户端本地设置的DNS服务器地址(通常称此DNS为LDNS,即:Local DNS)解析,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址,如果没有,LDNS会负责继续请求其他的DNS服务器。

    第三步:LDNS会从DNS系统的(.)根开始请求www.xuliangwei.com 域名的解析,经过一系列的查找各个层级DNS服务器,最终会查找到xuliangwei.com域名对应的授权DNS服务器,而这个授权DNS服务器正是企业购买域名时用于管理域名解析的服务器,这个服务器会有xulaingwei.com对用的IP解析记录,如果此时没有,就表示企业的运维人员没有给xuliangwei.com域名做解析。

    第四步:xuliangwei.com域名对应的授权DNS服务器会把www.xuliangwei.com 对应的最终IP解析记录(例如:1.1.1.1)发个LDNS。

    第五步:LDNS把收到来自授权DNS服务器www.xuliangwei.com对应的IP解析记录发给客户端浏览器,并且再LDNS本地把域名和IP的对应解析缓存起来,以便下一次更快的返回相同解析请求的记录。

    第六步:客户端浏览器获取到了www.xuliangwei.com的对应IP地址,接下来,浏览器会请求获得的IP地址对应的Web服务器,Web服务器接受到客户的请求并响应处理,将客户请求的内容返回给客户端浏览器,至此,一个访问浏览网页的完整过程就完成了。

    特别提示:上述整个客户端用户上网第一次的计息流程如下图:

    小提示:

    1、查看客户端本地缓存的DNS解析记录命令。

    C:>ipconfig /dispaydns

    2、清除客户端本地缓存的DNS解析记录命令。

    C:>ipconfig /flushdns

    3、Windows系统下hosts域名解析记录位置。

    C:WindowsSystem32driversetchosts

    1.1.1DNS系统解析基本流程

    1.1.2DNS简介

    了解完用户访问Web网站的基本流程后,我们再来了解下DNS解析的基本流程,这个DNS解析的基本流程是企业招聘运维岗位经常会面试的问题,因此,必须要熟练掌握了。

    DNS,全程Domain Name System 简称DNS,DNS在网站运行中到了至关重要的作用,它的主要作用是负责把网站域名解析为对应的IP地址,例如:把www.xuliangwei.com解析为对应的IP地址记录如:1.1.1.1这个从域名到IP的解析过程,被称作A记录,即Address Record。

    DNS系统除了负责这个最重要的A记录解析外,还有很多的功能!

    例如:

    设置CNAME别名记录,这个别名解析功能常常被CDN加速服务商应用。

    设置MX邮件记录,这个MX记录功能,在购买或搭建邮件服务时会被用到。

    设置PTR记录,反向解析,即把IP地址解析为对应的域名,和A记录的解析相反,邮件服务等业务会用到。

    更多的DNS功能,请读者参阅其他书籍。

    DNS系统的架构很类似于一棵倒挂着的树(和Linux系统目录结构类似),它的顶点也是根(”.”),只不过这个根是点(.)来表示,不是目录的根斜线(/)。整个DNS系统的树状结构如下图所示:

    1.1.3DNS解析原理流程

    在前文的用户访问Web网站基本流程一节,我们了解了用户访问网站的基本实现过程,那么客户端是怎噩梦一步步通过各个层级的DNS,获取到域名对用的IP的呢?这里我们给大家做一个较为详细的说明。

    DNS的整个解析流程实际上就是从客户端浏览器输入网站地址回车开始,到获取到域名对用IP解析记录的过程,整个过程可分为如下几个步骤,具体说明如下:

    第一步:客户端用户从浏览器输入www.xuliangwei.com网站地址后回车,系统会首选查找系统本地的hosts文件以及DNS缓存信息,查找是否存在www.xuliangwei.com对应的IP解析记录,如果有就直接获取到IP地址,然后去访问这个IP地址对应的www.xuliangwei.com服务器,一般第一次请求时,DNS缓存是没有解析记录的。

    第二步:如果客户端本地缓存或hosts没有对应www.xuliangwei.com域名的解析记录,那么,系统会把浏览器的解析请求交给在客户端本地设置的DNS服务器地址(通常称此DNS为LDNS,即Local DNS)解析,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回IP地址,如果没有,LDNS会负责继续请求其他的DNS服务器。

    第三步:LDNS会从DNS系统的(.)根开始请求www.xulaingwei.com域名的解析,根DNS服务器在全球一共13台服务器,根下面是没有www.xuliangwei.com域名解析的,但是根下面有www.xuliangwei.com对应的顶级域.com的解析记录,因此,根会把.com对应的DNS服务器地址返回给LDNS。

    第四步:LDNS获取到.com对用的DNS服务器地址后,就会去.com服务器请求www.xuliangwei.com域名的解析,.com服务器下面也没有www.xuliangwei.com对应的DNS服务器地址返回给LDNS。

    第五步:同理,LDNS获取到xuliangwei.com对应的DNS服务器地址后,就会请求xuliangwei.com服务器www.xulaingwei.com域名的解析,xuliangwei.com域名对应的DNS服务器是该域名的授权DNS服务器,这个域名授权DNS服务器正是企业购买域名时管理解析所在的服务器(或者是自建的DNS服务器),这个服务器会有www.xulaingwei.com对应的IP解析记录;,如果此时没有解析记录,就表示企业没有提前为www.xuliangwei.com域名做解析。

    第六步:xuliangwei.com域名对应的授权DNS服务器会把www.xuliangwei.com对应的IP解析记录发给客户端浏览器,并且再LDNS本地把域名和IP的对应解析缓存起来,以便下一次更快的返回相同解析请求的记录,至次,整个DNS的解析流程就完成了。

    DNS流程解析图如下:

    1.2HTTP协议

    1.2.1 HTTP协议简介

    HTTP协议,全称HyperText Trasfer Protocol,中文名称超文本传输协议,是互联网中最常用的一种网络协议。HTTP的重要应用就是WWW服务。设计HTTP协议的最初目的就是提供一种发布和接收HTML(一种页面标记语言)页面的方法。

    HTTP协议是互联网上的通信协议方案之一。它有很多的应用,但最流行的就是用于Web浏览器和Web服务器之间的通信应用,即WWW应用或Web应用。

    WWW全称World Wide Web,简称Web,中文译为”万维网”。它是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的WWW服务应用的默认服务端口为80,另外的一个加密的WWW服务应用(https)的默认服务端口为443,用于网银,支付等和钱相关的业务。当今,http服务、www服务、web服务概念已经混淆了,在本文种也视为相同,都是指当下最常见的网站服务应用。

    1.2.2HTTP协议版本

    HTP协议从诞生之初到现在经历了几个主要版本:HTTP/0.9, HTTP/1.0, HTTP/1.1,其中,HTTP/1.0是第一个得到广泛使用的版本,而HTTP/1.1为当前使用的主流版本。

    q  HTTP/1.0介绍

    HTTP/1.0是第一个得到广泛使用的HTTP版本。HTTP/1.0在HTTP/0.9的基础上怎GIA了HTTP请求头、支持更多的请求方法,以及对多媒体对象的处理。HTTP/1.0使得包含生动图片的Web页面和交互式表格成为可能,而这些页面和表格促使互联网为人们广泛地接受。HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器不跟踪每个客户也不记录过去的请求。

    q  HTTP/1.1介绍

    HTTP/1.1重点是修复HTTP设计中的缺陷,从可扩展性,缓存处理,带宽优化,持久连接、HOST头、错误通知、消息传递、内容协商几个方面做了相关改进。HTTP/1.1是当前互联网主流的HTTP版本。

    在连接方面HTTP/1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

    在请求头方面,HTTP1.1增加更多的请求头和响应头信息,来增加HTTP功能。这使得WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就可以使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。

    HTTP/1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端同志服务器返回本次请求结果后关闭连接。HTTP/1.1还提供了与身份证、状态管理和Cache缓存等机制相关的请求头和响应头。

    http://blog.chinaunix.net/uid-16865301-id-97351.html

    HTTP/1.1与HTTP/1.0的区别

    http://blog.csdn.net/forgotaboutgirl/article/details/6936982

    1.2.3HTTP请求方法

    在HTTP通信中,每个HTTP请求报文都包含一个方法。用以高速Web服务器端需要执行什么具体的动作,这些动作包括:获取指定Web页面(get)、提交内容到服务器(post)、删除服务器上资源文件等(post,delete),这些HTTP请求报文中包含的方法被称为HTTP方法。其中,常用的HTTP方法如下:

    HTTP方法    作用描述

    GET          客户端请求指定资源信息,服务器返回指定资源。

    HEAD         只请求响应报文中的HTTP首部。

    POST         将客户端的数据提交到服务器,例:注册表单。

    PUT          从客户端向服务器传送的数据取代指定的文档内容。

    DELETE      请求服务器删除指定的资源。

    MOVE         请求服务器将指定的页面移至另一个网络地址。

    1.2.4HTTP状态码

    q   HTTP状态码介绍

    HTTP状态码(HTTP Status Code)是用来表示Web服务器响应http请求状态的数字代码。每当Web客户端向Web服务器发送一个HTTP请求时,Web服务器都会返回一个状态响应代码。这个状态码是一个三位数字代码,作用是告知Web客户端此次的请求是否成功,或者是采取其它的动作方式。

    HTTP协议1.1版本中的状态码可以分为五大类,如下所示:

    状态码范围   作用描述

    100-199     用于指定客户端响应的某些动作。

    200-299     用于表示请求成功。

    300-399     用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。

    400-499     用于指定客户端的错误。

    500-599     用于指出服务器错误。

    生产场景常见的重要状态码及对应的作用整理为如下:

    状态代码             详细描述说明

    200 – ok            ß服务器成功返回网页,这是成功的http请求,返回的标准状态码。

    301 – Moved Permanently    ß永久跳转,所有请求的网页将永久跳转到被设定新的位置,例如:从xuliangwei.com跳转到www.xuliangwei.com

    403 – Forbidden    ß禁止访问,这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器权限配置不当或者没有默认主页所导致

    404 – Not Found    ß服务器找不到客户端请求的指定页面,可能是客户端请求了服务器不存在的资源导致。

    500 – Inter Server Error   ß内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求,这是一个较为笼统的报错,一般为服务器的设置或者内部程序问题导致。例如:selinux开启,而又没有为http设置规则许可,客户访问就是500

    502 – Bad Gateway  ß坏得网关,一般是代理服务器请求后端服务时,后端服务不可用或者没有完成响应网关服务器,一般为代理服务器下面的节点出问题导致。

    503 – Service Unavailable  ß服务当前不可用,可能因为服务器超载或停机维护导致,或者是代理服务器后面没有可以提供服务的节点。

    504 – Gateway Timeout      ß网关超时,一般是网关代理服务器请求后端服务器时候,后端服务没有在特定的时间内完成处理请求,一般是服务器过载导致没有在指定的时间内返回数据给代理服务器。

    1.2.5HTTP报文

    HTTP报文中有很多行内容,不同行的字段都是一些ASCII码串,各个字段的长度也是不同的。HTTP报文有两种,一种是从Web客户端发往Web服务器的HTTP报文,称为请求报文(Request Message).另外一种是从Web服务器发往Web客户端的报文,称为响应报文(Response Message),HTTP请求和响应报文的格式类似。

    q   HTTP请求报文(Request Message)介绍

    HTTP请求报文由请求行、请求头部(Header)、空行和请求报文主机几个部分组成,

    HTTP请求报文格式说明

    报文格式

    报文信息

    请求行

    请求方法URL协议版本

    例:GET /index.html HTTP/1.1

    请求头

    字段名1:值1

    字段名2:值2

    ………..

    例:

    Accept:image/gif,image/hpeg

    Accept-Language:zh-cn

    ………..

    空行

    空白无内容

    请求报文主体

    GET方法没有请求报文主体,POST方法才有。

    下面对HTTP请求报文的每个部分逐一阐述:

    1、请求行

    请求行是报文的第一行,用来说明客户端想要什么,内容由请求方法字段、URL字段和HTTP协议版本字段共3个字段组成,他们之间用空格分隔。例如,GET/index.html HTTP/1.1。

    请求报文的起始请求行信息如下:

    请求方法字段示例             URL字段示例                   HTTP协议版本

    GET                         /index.html                    HTTP/1.1

    2、请求头部

    请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号”:”分隔。请求头部作用是客户端把请求的相关信息告诉给服务器:

    常见的请求头部信息有:

    请求头信息                                                      说明

    ACCEPT:image/gif,image/jpeg                                     媒体类型

    Accept:-Language:zh-cn                                         语言类型

    Accept-Encoding:gzip,deflate                                             支持压缩

    User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT;)         客户端类型

    Host:<a href=”http://www.xuliangwei.com”>www.xulaingwei.com</a>         主机名

    与请求报文相关的最常用的请求头是Content-Type和Content-Length。

    3、空行

    最后一个请求头部信息之后是一个空行,发送回车符合换行符,通知Web服务器空行以下不会有请求头部的信息了。

    4、请求报文主体

    请求报文主体中包括了要发送给Web服务器的数据信息;请求报文主体不会应用于HTTP的GET命令方法,而是应用于POST方法。POST方法适用于需要客户填写表单的场合,请求报文的主体信息此处就不在举例了。

    q   HTTP响应报文(ResponseMessage)介绍

    HTTP响应报文由起始行、响应头部(header)、空行和响应报文主体几个部分组成,和HTTP请求报文格式类似。

    HTTP响应报文的一般格式。

    报文格式

    报文信息

    起始行

    协议版本号 数字状态码 状态信息

    例:HTTP/1.1 200 OK

    响应头部

    字段名1:值1

    字段名2:值2

    ………

    例:

    Content-Type:text/html;charset=utf8

    Content-Length:78

    空行

    空白无内容

    响应报文主体

    <html>

    <head><title>xuliangwei blog</title></head>

    <body>

    I am xuliangwei,mysql blogs is www.xuliangwei.com

    </body>

    </html>

    下面对响应报文的每个部分逐一阐述:

    1、响应起始行

    响应报文的起始行,也叫状态行,用来说明服务器响应客户端请求的状态。一般为下而已及版本号,数字状态码、状态情况。例:HTTP/1.1 200 OK

    2、响应头部

    和请求报文类似,接着起始行的后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,两者之间用冒号分隔。头部结尾也是以一个空行结束。常见的头部信息有:

    Content-Type:text/html;charset=utf8

    Contet-Length:78

    3、空行

    最后一个响应头部信息之后是一个空行,发送回车符合换行符,通知客户端空行下文无头部信息了。

    4、响应报文主体

    响应报文主体中装载了要返回给客户端的数据。这些数据可以是文件及二进制的(如:图片、视频),下面响应的html格式文本数据示例。

    <html>

    <head><title>xuliangwei blog</title></head>

    <body>

    I am xuliangwei,mysql blogs is www.xuliangwei.com

    </body>

    </html>

    一个简单的请求报文和应答报文示例:

    Web客户端发送一条HTTP请求报文,请求资源www.xuliangwei.com/index.html,请求报文的起始行中有一个GET命令,资源名称为/index.html。使用的是HTTP/1.1协议,由于请求的方法为GET,即请求报文不需要有主体,因为从服务器上GET一个简单的页面不需要在请求报文的主体中发送请求数据。

    Web服务器接受到请求后,返回一条HTTP响应报文。这条响应报文中包含了HTTP的版本号(HTTP/1.1)、成功的状态码(200)、状态描述(OK)、以及若干响应头部字段,在所有这些内容之后跟着包含了所请求资源的响应主体。Content-Length首部说明了响应主体的长度,Content-Type首部说明了文档的MIME类型。

     

    HTTP报文请求应答的流程

    1.2.6HTTP协议通信原理

    HTTP协议属于OSI模型中得第七层应用层协议,HTTP协议的重要应用就是WWW服务应用,下面就以WWW服务应用为例介绍HTTP协议的通信原理,HTTP协议进行通信时,需要有客户端即终端用户,和服务器及Web服务器,当Web客户端向Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务器之间建立一个TCP/IP连接。整个http协议请求的工作流程原理步骤如下:

    1、终端客户在Web浏览器地址栏输入访问地址 http://www.xuliangwei.com/index.html;

    2、Web浏览器请求DNS服务器把域名www.xuliangwei.com转换成Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程,上文已经讲过了,此处不再累述。

    3、Web浏览器将端口号(默认是80)从访问地址(URL)中解析出来;

    4、Web浏览器通过解析后的IP地址及端口号与Web服务器之间建立一条TCP连接;

    5、建立TCP连接后,Web浏览器向Web服务器发送一条HTTP请求报文,请求报文内容格式及信息细节,上文HTTP报文一节已经讲过了,此处不再累述。

    6、Web服务器响应并读取浏览器的请求信息,并返回一条HTTP响应报文,响应报文内容格式及信息细节,前文也已经讲过了,此处不再累述。

    7、Web服务器关闭http连接,关闭tcp连接,Web浏览器显示访问的网站内容到屏幕。

    q   动态Web服务请求流程:

    客户端发送请求-->httpd得到请求-->httpd解析请求的格式(html,css)-->请求相应php解析-->php解析程序执行完毕-->db(数据库),返回结果(html)给httpd-->httpd把数据返回给客户端(可能是压缩过的)-->浏览器接到返回结果(解压)-->根据HTML绘出界面展示出来!

    q   上述就是HTTP协议通信原理过程,整个通信原理的重要知识点有:

    1)    用户访问网站的流程。

    2)    DNS解析流程细节。

    3)    建立TCP连接后发送HTTP报文的过程。

    4)    HTTP请求报文的细节。(请求头、请求行、请求主体、请求空行)

    5)    HTTP响应报文的细节。(响应起始行、响应头部、响应主体)

    6)    Web服务器请求后端集群存储的细节(此处后问会讲到)

    如果企业面试HTTP原理时能把上述5点细节说清楚!

    1.2.7HTTP协议重点知识小结

    结论:DNS解析原理,HTTP协议原理是高新面试的重点,高级运维必会必知。

    1、http协议位于osi模型中第7层应用层。

    2、http协议的重要应用是www服务。

    3、用户上网流程,DNS解析原理流程。

    4、DNS解析获取到IP后,建立TCP连接,然后发送http请求细节和服务器响应细节。

    5、HTTP请求报文与HTTP响应报文知识。

    6、到达HTTP服务器后请求后端集群节点的流程,nginx---fastcgi----php---数据库---存储等

    推荐书籍::http权威指南(前4章) Tcp/Ip协议卷一(写的一般)

    1.3HTTP资源

    1.3.1媒体(MIME)类型

    互联网上的数据有很多种不同的数据类型,Web服务器会把通过Web传输的每个对象都打上名为MIME类型(MIME type)的数据格式标签。最初设置MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,后来HTTP也支持了这个功能,用它来把数据描述并标记不同的数据内容类型。

    当Web服务器响应HTTP请求时,会为每一个HTTP对象数据加一个MIME类型。当Web浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,进行相应处理。

    MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分割。下表位生产场景最常见的MIME类型:

    MIME类型                   文件类型

    text/html                  html htm shtml 文本类型

    text/css                   css文件类型

    text/xml                   xml文本类型

    image/gif                  gif图像类型

    image/jpeg                 jpeg jpg 图像类型

    application/javascript     js文本类型

    text/plain                 txt文本类型

    application/json            json文本类型

    video/mp4                  mp4视频类型

    video/quicktime             mov视频类型

    video/x-flv                flv视频类型

    video/x-ms-wmv              wmv视频类型

    video/x-msvideo             avi视频类型

    1.3.2URL介绍

    URL,全称Uniform Resource Location,中文翻译为统一资源定位符。也被称为网页地址(网址)。如同在网络上的门牌,是因特网上标准的资源的唯一地址。通俗地说,URL是Internet上用来描述信息资源的字符串,主要是用在各种WWW客户端和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源、包括文件、服务器的地址和目录等。严格讲,每个URL都是一个URL,它标识一个互联网资源,并制定对其他进行操作或取得该资源的方法。

    URL的格式由下列三部分组成:

    第一部分是协议,例:http

    第二部分是主机资源服务器IP地址或域名(端口号),例:www.xuliangwei.com

    第三部分是主机资源和具体地址,如目录和文件名等,例:xuliangwei/index.html。

    第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用”/”符号隔开。第一部分和第二部分是不可缺少的,第三部分可以省略。

    列举一个标准的URL及说明

    协议(第一部分)       分隔符号                IP地址域名           分隔符号   资源目录地址

    http                ://             www.xuliangwei.com     /            xuliangwei/index.html

    http                ://             www.xuliangwei.me      /              video/index.html

    1.3.3URI介绍

    URI,全称Uniform Resource identifier,中文翻译为统一资源定位符。是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内唯一标识并定位某一个信息资源。互联网上每个可用得数据资源HTML、图片、视频等皆通过统一资源标示符进行定位。

    列举网站URI(URL的子集)说明

    协议(第一部分)       分隔符号               IP地址域名           分隔符号   资源目录地址

    http                ://             www.xuliangwei.com     /            xuliangwei/index.html

    http                ://             www.xuliangwei.me      /              video/index.html

    列举指向一个用户邮箱的URI

    协议(服务形式)       分隔符号         用户名                  分隔符号                域名

    mailto              :               xuliangwei                  @                 xuliangwei.com

    大多数读者都熟悉URL,而不是URI。URL是URI命名机制的一个子集。

    1.3.4静态网页资源

    q   静态网页资源介绍

    在网站设计中,纯粹HTML格式的网页(可以包含图片、视频、JS(前端功能实现),CSS(样式)等)通常被称为“静态网页”,早起(大约2002年前)的网站太多都是由静态网页制作的。静态网页是相对于动态网页而言的,是指没有后台数据库、不含层序(如php、jsp、asp)和可交互的网页。

    q   静态网页资源特点

    静态网页资源的特点是,开发者编写的是什么,它显示的就是什么、一旦编写完成,就不会有任何改变。静态网页的维护和更新相对比较麻烦,每个不同的网页都需要单独编写更新,静态网页一般适用于更新教少的宣传展示型网站(例如:酒,家具,猪饲料宣传等)。是早期2002年以前多数中小网站展示的形式。

    扩展名特征:静态网页资源的对应程序以及资源文件的常见扩展名为:

    (a)纯文本类程序或文件:htm,html,xml,shtml,js,css等。

    (b)图片类文件或数据文档,jpg,gif,png,bmp,txt,doc,ppt等。

    (c)视频类流媒体文件mp4,swf,avi,wmv,flv等。

    静态网页资源有几个重要的特征特点:

    (1)每个页面都有一个固定的URL地址,且URL一般以.httm、.html、.shtml等常见形式为后缀,而且地址中不含有问号”?”或者”&”等特殊符号。

    (2)网页内容一经发布到网站服务器上,无论是否有用户访问,每个网页的内容都是保存在网站服务器文件系统上的,也就是说,静态网页是实实在在保存在服务器上的文件实体,每个网页都有一个独立的文件。

    (3)网页内容相对固定的,因此,容易被搜索引擎收录(容易被用户找到)(优点)。

    (4)网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作的方式比较困难(缺点)。

    (5)网页的交互性差,在程序功能实现方面有较大的限制(缺点)。

    (6)网页程序在用户刘看齐端解析,如IE浏览器,这样程序解析效率更高,由于服务端不进行解析,并且不需要读取数据库,因此可以接受更多的并发访问。当客户端向服务器请求数据时,服务器直接把数据从磁盘上返回(不做任何解析),当客户端拿到数据后,在浏览器端解析展现出来(优点)。

    q   静态网页语言

    常见的静态网页语言有html,css,xml.shtml等。

    q   静态网页核心特点

    (1)客户浏览器端解析程序,不需要读取数据库,性恩呢刚和效率很高。

    (2)扩展名格式:a)纯文本类程序或文件,htm,html,xml,shtml,js,css等 b)图片类文件或数据文档,jpg,gif,png,bmp,txt,doc,ppt等。 c)视频类流媒体文件mp4,swf,avi,wmv,flv等。

    (3)后端没有数据库支持,和用户交互性差。

    q   有关静态网页架构思想

    高并发高访问量的常见,做架构优化,关键的环节;就是把动态网页转成静态网页,不直接请求数据库和动态服务器,并且可以把静态内容推送到全段缓存中提供服务,可以提升用户体验,节约服务器和维护成本。

    1.3.5动态网页资源

    q   动态网页资源介绍

    所谓的动态网页是于静态网页相对应而说的,也就是说,动态网页的URL后缀不是.html、.shtml、xml、js、css等静态网页的常见后缀扩展名形式,而是以.asp,.aspx,.php,.jsp,.do,.cgi等形式为后缀,并且一般在动态网页网址中经常会有标志性的符号----“?,&”,以及大多数情况后端需要数据库支持等。

    q   动态网页资源特点

    (1)网页扩展名:常见为:.asp,.aspx,.php,.jsp,.do,.cgi等。

    (2)网页一般以数据库技术为基础,大大降低了网站维护的工作量;

    (3)采用动态网页技术的网扎可以实现更多的功能,如用户注册、用户登录、在线调查、投票、用户管理、订单管理、发博文等等。

    (4)动态网页并不是独立存在于服务器上的一个网页文件(php/jsp),当用户请求服务器上的动态程序时,服务器解析程序并读取数据库返回一个完成的网页内容。

    (5)动态网页中的”?”对搜索引擎的收录存在一定的问题,搜索引擎一般不会从一个网站的数据库中访问全部网页,或者处于技术方面的考虑,搜索蜘蛛一般不会去抓取网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理(伪静态技术)才能适应搜索引擎的抓取的要求。

    (6)程序在服务器端解析,服务端如:àphp引擎,java容器(tomcat,resin,jboss,weblogic),相当于顾客点餐,饭店里做菜,耗时长,效率低。由于程序在服务端解析,因此,会消耗大量的CPU和内存等资源,并且多数还要读取数据库等服务,因此,访问效率远不如静态网页。

    q   动态网页资源核心特点

    程序在服务端解析,加上后端需要数据库支持,因此访问效率较差。

    URL地址后缀一般为asp,.aspx,.php,.jsp,.do,.cgi,并且常伴随?,&

    q   有关动态网页架构思想

    (1)一般来说,静态网页的效率是动态网页的10-30倍。

    (2)动态网站效率很差,并发恩呢管理也很低,高并发场景中,应尽可能转换成静态网页提供服务

    (3)动态转静态也要根据业务需求设计,例如:对于更新频繁的网站会产生数据不一致的情况,即用户看到的数据不会最新的内容。

    (4)动态转静态,高并发网站必备的架构方案,是高级架构师的职责所在。

    1.3.6伪静态网页

    q  伪静态网页介绍

    如标题字义,伪静态就是通过某些技术(如rewrite)把动态网页的URL地址伪装成静态网页URL地址,但实质上用户访问的还是动态网页,只不过给用户看起来URL地址是静态的,因此,用户及某些搜索引擎就会误认为是静态网页。

    那么,你可能就有问题了,为什么动态网页需要伪装成静态呢,为什么不能直接转成静态网页呢?

    q  伪静态网页特点

    从网站的URL地址看,伪静态表面上看起来是静态内容(如地址结尾带html),这是通过rewrite规则来实现的URL地址重写。改成后的URL地址规范、美观、有利于搜索引擎抓取,以及用户访问体验加强。因为伪静态网页还是动态网页,从性能上考虑,伪静态功能不但没有提升网站性能,反而会降低网站的性能。

    q  伪静态网页作用

    由于搜索引擎无法正确读取带参数的动态网页内容,造成网页中很多具有丰富信息的页面无法被搜索引擎收录,伪静态技术的作用是把动态网页URL改写成静态网页的URL,同样是消除了动态网页中的参数,但是并不需要生成任何网页,仅仅是改变了网页地址路径,这样做的主要目的有两个,一是让搜索引擎收录网站内容让更多的用户访问网站内容,二是已经提升用户访问体验,动态带的特殊符号等URL看起来不如静态网页舒服。

    q  伪静态网页缺点

    动态网页伪装静态网页,虽然可以让搜索引擎收录以及提升用户访问体验,但伪静态网页并不能提升网站的访问效率性能,从理论上说还会降低网站的性能,没有动态转静态网页效率高,但是对于一些并发不是超大的情况以及硬件资源充足的情况,伪静态还是一个不错的使用功能,因为,要把动态网页真正的转成静态网页,不是一朝一夕的,需要技术团队通力配合才能行。

    现在很多大型的网站都采用了动态网页生成静态网页的技术,消除动态网页中的参数,使搜索引擎更多的内容,达到优化网站的效果。生成静态网页确实可以更好的解决搜索引擎收录的问题,并且可以提升网站的访问性能,因此,当网站遇到访问瓶颈时,并且有技术力量去做动态网页生成静态网页的架构设计,那就最好不过了,但是,IE更新频繁很快的业务也不是不适合或者做动态转静态有很大难度,可以考虑伪静态。

    q  伪静态网页小结

    1、利用Rewrite技术将动态网页伪装成静态网页(URL地址改写)

    2、便于搜索引擎搜索提升用户访问量以及用户体验

    3、访问性能没有提升,转换伪静态还会消耗资源,因此性能反而会下降。

    4、尽可能将动态网页转换成真正的静态页面。

    5、并发量不是很大或者动态更新过于频繁的时候,用rewrite实现伪静态也是不错的。

    6、伪静态网页的实现过程,一般是由运营产品提出需要,开发和运维共同实现的。

    1.3.7生产Web架构优化实战方案

    由于静态网页程序在客户端解析,大大降低了服务器端的访问压力,因此解析效率更高,在实际高并发网站架构中,我们可以考虑把用户请求的数据解析后存成静态文件放于磁盘中或放于内存中,来降低动态服务器的压力,节约企业成本,提升用户体验。又关高并发网站架构从动态转静态的内容,可参考老男孩老师的文章

    浅谈千万级PV/IP规模高性能并发网站架构http://oldboy.blog.51cto.com/2561410/736710

    高并发网站架构从动态转静态不用业务产品实现的例子:

    q  门户新闻业务

    新闻网站的特点是一旦发布完成,几乎不会再改动网页内容。因此,对于新闻的业务内容静态化相对比较简单:

    第一步:程序支持发布内容直接转成静态。

    第二步:运营编辑人员发布新闻网页后,后台程序立刻将动态网页生成静态文件

    第三步:运维人员通过发布触发把生成的静态网页发布到事先搭建好的公司缓存机器服务器上,或者把静态内容同步到购买的全国所有CDN服务器节点上然后,在提供给用户访问浏览。  

    视频网站业务(一旦发布完成,几乎不会改动)。

    优酷视频网,用户上传视频,需要经历转码---审核的过程,大概1-2个小时,转码---审核---推送(同步到CDN的核心节点或全国所有CDN服务器节点。)

    3、blog/bbs/sns/微博社区业务/电商(淘宝,京东)(用户发布完成,可能会随时更新)

    异步方式,消息中间件、消息队列。

    浅谈千万级PV/IP规模高性能高并发网站架构  http://oldboy.blog.51cto.com/2561410/736710

    2.网络流量度量术语

    2.1.IP-Internet Protocol

    IP(独立IP):即InternetProtocol,这里指独立IP数,独立IP数时指不同IP地址的计算机访问网站被计算的总次数。独立IP数时衡量网站流量的一个重要指标。一般一天内(00:00-24:00)内相同IP地址的客户端访问网站页面只被计算为一次,记录独立IP的时间可为一天或一个月。目前通用的标准般为“一天”。

    如果一个局域网中同时打开老男孩博客,对于51cto网站是几个独立IP?答案:是个独立IP。

    这是因为,国内几乎所有的公司上网都是局域网共享上网,即通过路由器NAT地址转换上网,每个计算机在局域网内的私有IP是不同的,但是大家出万网上网,就必须都要被路由器把每个私网地址转换成了路由器接口的公网IP了,所以说,对于网站来说一天内多个相同IP的客户端访问计算为一个独立IP

    一个客户机用户是通过ADSL等直接拨号上网,但是上网的时候偶尔掉线,一共重新拨号了3次,然后每次都继续打开博客地址,此时网站独立IP数时3个

    由此可见,通过独立IP数量度网站访问量,和实际访问情况不是很匹配。国内的企业、学校等上网多数都是NAT上网的,一个独立IP背后可能有数十上百个客户端访问,独立IP数虽然不是很准确,但确是IT技术人员比较关心的一个衡量网站的指标。

    2.2PV-Page View

    PV(访问量):即Page View,中文翻译即页面浏览量,即页面浏览量或点击量,不管客户端是不是相同,也不管IP是不是相同,用户每次访问一个网站页面都会被计算一个PV

    PV的具体度量方法就是从客户端浏览器发出一个对Web服务器的请求(Request),Web服务器接到这个请求后,将该请求对应的一个网页(Page)发送给浏览器,就产生了一个PV。这里有一个问题,就是只要这个请求发送给了浏览器,无论这个页面是否完全打开(或下载完成),那么都是会被计算为1个PV(服务器日志),一般为了防止用户快速刷PV,很多网站把PV的统计程序放在页面的最下面。

    用PV衡量网站,PV数反映的是浏览某网站的页面数量,没刷新一次页面也算一次。因此,可以说PV数与来访用户的数量成正比,但PV数并不是页面的来访者数量,而是网站被访问的页面数量,因为一个来访者可能产生多个PV。

    PV(Page View)是网站被访问的页面数量的一个指标,但不能直接知道有多少人访问了这个网站。

    一个来访者访问网站,PV数可能产生若干,但是独立IP数就是为1个,因此,如果对比一个网站的独立Ip数和PV数,不难看出,PV数一定会大于独立IP数视网站的业务而定,例如这种分类门户可能要达到10:1甚至更多。

    2.3UV-Unique Visitor

    UV(独立访客):即Unique Visitor,同一台客户端(PC或移动端)访问网站被计算为一个访客。一天(00:00-24:00)内相同的客户端访问同一个网站只被计算一次UV。UV(独立访客)一般是以客户端Cookie等技术作为统计依据的,实际统计会有误差。

    考虑到一台客户端电脑可能会有多人使用情况,因此,UV(独立访客)实际上并不一定是独立的自然人访问。

    2.4企业网站对PV/IP/UV的度量

    q  IP的度量

    1、分析所有Web服务器的访问日志信息,对IP地址段去重后计算,这是IT人员的基本计算手段。

    2、在网站的每一个(所有)页面结尾,嵌入Js等统计程序代码,当用户加载网页后,IP即传给统计IP的服务器,这种方法一般被第三方统计公司或者企业内部开发日志分析程序时使用。IP的统计方法简单、易用,因此,称为了多数网站衡量网站流量的重要指标之一。

    q  PV的度量

    1、分析Web服务的访问日志(需要排除,js,css,各种图片的日志信息),只计算html,php等页面URL。

    2、在网站的每一个(所有)页面结尾,嵌入js等统计程序代码,当用户加载网页后,IP即传给统计IP的服务器,这种方法一般被第三方统计公司或者企业内部开发日志分析程序时使用。

    3、用第三方大家比较信任的统计工具例如:谷歌的统计(GA)。

    PV的统计方法也简单、易用,因此,也是多数网站衡量网站流量的重要指标之一。

    q  UV的度量

    1、通过客户端HTTP请求报文分析

    一个客户端会多次请求网站服务器,每次HTTP请求都会携带客户端自身的大量信息,比如:IP地址,请求发出的时间,浏览器版本,操作系统版本等等。网站服务器对这些请求进行分析,如果这些请求满足一些共同特征,比如来自同一个IP地址,且浏览器版本,操作系统版本相同请求时间又相近等等,如果满足这一系列的定义,那么就可以认为这些请求是来自于同一个客户端,那么多个页面访问也只是一个UV。共同特征的定义是由服务器方决定的。通常,用IP地址+其他特征共同来定义的情况较多。此种度量方法无法解决以下问题,例如:1.多个人的电脑的软硬件经常雷同,并且是一个公司或者学校的人。2.多个人共用一个电脑的情况。

    2、通过Cookie鉴别

    当客户端第一次访问某个网站服务器的时候,网站服务器会给这个客户端的电脑发出一个Cookie,通常放在这个客户端电脑的C盘当中。在这个Cookie中会分配一个独一无二的编号,这其中会记录一些访问服务器的信息,如访问时间,访问了哪些页面等等。当你下次再访问这个服务器的时候,服务器就可以直接从你的电脑中找到上一次放进去的Cooke文件,并且对其进行了一些更新,但那个独一无二的编号是不会变的。如果在一定时间内服务器发现2个来访者对应的是一个编号,那么我们自然可以认为这个来源于同一个访问者,就计算1个UV。

    使用Cookie的方法要比分析客户端HTTP请求头部信息分析更精确些。但也存在一些问题,比如:有的客户端为保证更高级别的安全,关闭了Cookie的功能,或者是有些客户问题,比如:有的客户端为保证更高级别的安全,关闭了Cookie的功能;或者是有些客户端设置了在退出页面时自动删除Cookie,亦或你经常自己去手动删除Cookie,那么这个方法就不那么精确了。

    因此,以上两个方法都只能得到近似的UV,而不是绝对精确的。

    UV的度量相对IP和PV来说,不但方法麻烦,而且要开发比较复杂的程序系统计算才能得到期望的结果,因此,Linux运维领域,大家提及的较少,一般企业市场及运营人员可能会关注网站的UV。

    2.5IP/PV/UV的区别

    通过一个访问例子来讲解。

    例如:某城市的一个网吧里,有10个人都进入了www.xuliangwei.com的网站,假设每个人平均访问了5个页面,但是这个网吧对外出口是一个公网IP(注意:也可以配置多个IP出口,此处不计特殊情况)所以,对于xuliangwei.com网站来说,只会计算一个独立IP访问,但是因为xuliangwei.com网站来说,PV数就是10*5=50个PV,而因为有10个人访问,就是10个不同的客户端访问,因此,UV(独立访客)为10

    网站独立IP数1个,PV数50个,UV(独立访客)10个。

    通过上述的结果,我们得出一个结论,一个网站的独立IP数量要比网站实际访问的PV数量小得多。通常情况下(国内互联网环境),网站的UV数也会大于独立IP数。

    PV数高说明访问的页面数多,但是不一定就代表来访者多,但是PV数一定与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量。比如一个占就你一个人进来,通过不断的刷新页面,也可以制造出非常高的PV。PV数多,用户访问网站页面的总数量多,通常服务器的压力会大一些。

    2.6并发连接

    q  网站并发连接

    那么到底什么事并发?怎么理解并发呢?

    1、网站服务器每秒能够接收的最大用户请求数。

    2、网站服务器每秒能够响应的最大用户请求数。

    3、网站服务器在单位时间内能够处理的最大连接数。

    q  其他服务并发连接

    1、QPS每秒查询率(Query Per Second)

    每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,运维工作中,DNS系统以及数据库等服务的查询性能经常用每秒查询率来衡量。

    2、IOPS(Input/Operations Per Second),即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。存储端的IOPS性能和主机端的IO是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次IO需要多次访问存储才可以完成。例如:主机写入一个最小的数据库,也要经过”发送写入请求、写入数据、收到写入确认”等三个步骤,也就是3个存储端访问。

    常见企业网站排名及PV/Ip访问量

     

    本章重点回顾

    用户访问网站的基本流程

    DNS系统的解析原理

    HTTP协议通信原理(HTTP协议、请求报文、响应报文、状态码)

    动态、静态概念特点以及伪静态技术

    动态转静态Web优化方案

    IP、PV、UV的概念和区别

    了解常用的WWW服务软件特点(Apache、Nginx、php(Fastcgi)、Tomcat、Resin)

    有关网站度量Linux企业运维常见面试题

    1、轻微你如何理解并发?网站并发是多少?

    2、你们公司网站访问量是多少?是怎么计算的?

    解答:IP、PV、并发量这三个点,这三个点决定了面试时说多大的架构,不能几万PV,还说数十台的集群架构,这样就乌龙了。

    访问量的计算:

    你的网站IP数是多少,PV数是多少,并发是多少。服务器多少台,架构是什么样的?  

    (a)运维部分入职分析

    (b)开发在页面嵌入JS程序统计,运营市场通过第三方公司提供的工具程序统计,例如:GA统计。

    本章知识相关面试考试题

    1、请描述DNS系统的解析原理

    2、请描述HTTP协议的原理

    3、请问你的公司的网站访问量是多少。

  • 相关阅读:
    Spring中依赖注入的四种方式
    使用 EasyMock 更轻松地进行测试
    HDU2196 Computer(树形DP)
    BZOJ2125: 最短路(圆方树)
    虚树入门
    BZOJ2286: [Sdoi2011]消耗战(虚树/树形DP)
    Codeforces Round #487 (Div. 2)
    Educational Codeforces Round 45 (Rated for Div. 2)
    BZOJ3675: [Apio2014]序列分割(斜率优化)
    BZOJ2761: [JLOI2011]不重复数字(map)
  • 原文地址:https://www.cnblogs.com/xuliangwei/p/8626134.html
Copyright © 2011-2022 走看看