web和http协议

1.1 HTTP服务的重要基础
1.1.1 用户访问网站基本流程
我们每天都会使用Web客户端上网浏览网页。最常见的Web客户端就是Web浏览器,如通用的微软Internet Explorer ( IE),以及技术人员偏爱的火狐浏览器、谷歌浏览器等。当我们在Web浏览器里输入网站地址(例如: www.baidu.com)时,很快就会看到网站的内容这一切似乎看起来很神奇,那么在其背后到底是怎样的实现流程呢?也许普通的上网者无需关注,但作为一个IT技术人员,特别是合格的Linux运维人员,就需要清晰的掌握了。
下面我们就来揭晓从客户端用户在Web浏览器里输入网站地址,到看到网站内容的完整访问流程。
第一步:客户端用户在浏览器里输入www.baidu.com网站地址,回车后,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.baidu.com域名对应的IP解析记录,如果有就直接获取IP地址,然后去访问这个IP地址对应域名www.baidu.com的服务器。一般第一次请求时, DNS缓存是没有解析记录的,而hosts多在内部临时测试时使用。

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

第三步:LDNS从DNS系统的(".")根开始请求对www.kgc.cn域名的解析,并针对各个层级的DNS服务器系统进行一系列的查找,最终会找到www.baidu.com域名对应的授权DNS服务器,而这个授权DNS服务器正是企业购买域名时用于管理域名解析的服各器,这个授权服务器会有www.baidu.com对应的IP解析记录。如果此时没有,就表示企业的域名管理人员没有为www.baidu.com域名做解析设置,即网站还没架设好。

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

第五步: LDNS把来自授权DNS服务器www.baidu.com对应的IP解析记录发给客户端浏览器,并且它会把该域名和IP的对应解析缓存起来,以便下一次更快地返回相同解析请求的记录,这些缓存记录在指定的时间(DNS TTL值控制)内不会过期。

第六步:客户端浏览器获取了www.baidu.com的对应IP地址,接下来,浏览器会请求获得IP地址对应的网站服务器,网站服务器接收到客户的请求并响应处理(此处的处理可能是数百台集群的服务器系统,也可能是一台云主机),将客户请求的内容返回给客户端浏览器。到现在为止,一次访问浏览网页的完整过程就完成了。

提示:上述仅仅是客户端用户第一次访问网站的基本过程,连续访问后,系统本地和LDNS层级都会有缓存记录,再访问时流程就会有些变化,会直接取本地缓存记录,这样访问过程就很快了。
(1)查看windows客户端本地缓存的DNS解析记录的命令
C:\Users\benet> ipconfig /displaydns //display the contents of the DNS Resolve Cache
Windows IP 配置

conf.wsm.360.cn

记录名称. . . . . . . : conf.wsm.360.cn
记录类型. . . . . . . : 1
生存时间. . . . . . . : 26
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 221.130.200.53

  1. 清除windows客户端本地缓存的DNS解析记录的命令
    C:\Users\benet>ipconfig /flushdns
    Windows IP 配置
    已成功刷新 DNS 解析缓存。

1.2.1 HTTP协议
HTTP协议,全称为HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议。HTTP的重要应用之一是www服务。设计HTTP协议最初的目的就是提供一种发布和接收HTML (一种页面标记语言)页面的方法。
HTTP协议是互联网上常用的通信协议之一。它有很多的应用,但最流行的就是用于Web浏览器和Web服务器之间的通信,即www应用或称Web应用。
WWW,全称为World Wide Web,常称为Web,中文译为“万维网”。它是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的www服务应用的默认端口为80,另外一个加密的www服务应用https的默认端口为443,主要用于网银、支付等和钱相关的业务。
TCP:传输控制协议,
UPD:用户数据报协议

1.2.2 HTTP协议版本
HTTP协议从诞生之初到现已经经历厂若干个版本,其中最主要的版本为HTTP/1.0, HTTP/1.1。HTTP/1.0是第一个得到广泛使用的版本,而HTTP/1.1为当前伸用的主流版本。
1、HTTP/1.0简介
HTTP/1.0是第一个得到广泛使用的HTTP版本,HTTP/1.0在HTTP/0.9的基础上增加了HTTP请求头,可支持更多的请求方法,并且能对多媒体对象进行处理。HTTP/1.0使得包含生动图片的Web页面和交互式表格成为可能,而正是这些页面和表格促使互联网被人们广泛地接受。HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立个TCP连接,服务器完成请求处理后即断开TCP连接,服务器不跟踪每个客户,也不记录过去的请求。

  1. HTTP/1.1简介
    HTTP 1.1的重点是修复HTTP设计中的缺陷,从可扩展性、缓存处理、带宽优化、持久连接、host头、错误通知、消息传递、内容协商等多个方面都做了相关改进。HTTP/1.1是当前互联网主流的HTTP版本。
    在连接方面,HTTP/1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和时间延迟。
    在请求头方面, HTTP/1.1增加了更多的请求头和响应头信息,用以增强HTTP功能。例如: host主机头功能,可以让Web浏览器使用主机头名来明确表示要访问服务器上的哪个Web站点,这样就可以使用Web服务器在同一个IP地址和端口号上配置多个虚拟Web站点。
    HTTP/1.1的持久连接,也需要增加新的请求头来帮助实现,例如, Connection请求头的值为Keep-Alive时,表示客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,表示客户端通知服务器返回本次请求结果后关闭连接。HTTP/1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头等。

1.2.3 HTTP请求方法
在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉Web服务器端需要执行哪些具体的动作,这些动作包括:获取指定Web页面、提交内容到服务器、删除服务器上资源文件等,这些HTTP请求报文中包含的方法被称为HTTP请求方法。
HTTP方法有以下几种:

  1. 、GET: 客户端请求指定资源信息,服务器返回指定资源。
  2. 、HEAD:只请求响应报文中的HTTP首部。
  3. 、POST:将客户端的数据提交到服务器。
  4. 、PUT:用从客户端向服务器传送的数据取代指定的文档内容。
  5. 、DELETE:请求服务器删除Request-URI所标识的资源
  6. 、MOVE:请求服务器将指定的页面移至另一个网络地址。

1.2.4 HTTP状态码
1、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:用于指出服务器的错误

HTTP响应的状态码种类很多,但是在实际生产环境中,经常遇到的状态码却不是很多,我们来看看常见的一些状态码。
200 -- OK :服务器成功返回页面,这是成功的HTTP请求返回的标准状态码
301 -- Moved Permanently :永久跳转,所请求的网页将永久跳转到被设定的新位置,例如:从www.kgc.cn跳转到www.kgc.com
403 -- Forbidden :禁止访问,虽然这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器或服务权限配置不当。
404 -- Not Found : 服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源。
500 -- Internal Server Error :内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。这是一个较为笼统的报错,一般为服务器的设置或内部程序问题导致例如:SELinux开启,而又没有为HTTP设置规则许可,客户端访问就是500。
502 -- Bad Gateway :坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。这通常为反向代理服务器下面的节点出问题所致。
503 -- Service Unavailable : 服务当前不可用,可能是服务器超载或停机维护导致的,或者是反向代理服务器后面没有可以提供服务的节点。
504 -- Gateway Timeout : 网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求。多数是服务器过载导致没有在指定的时间内返回数据给前端代理服务器。

  1. HTTP状态码的命令行查看
    可以通过curl命令,curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
    [root@localhost ~]# curl -I www.baidu.com // -I:只显示请求头信息
    HTTP/1.1 200 OK
    Server: openresty
    Date: Thu, 22 Feb 2018 03:37:31 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 127686
    Connection: keep-alive //保持连接
    Vary: Accept-Encoding //访问权限
    Last-Modified: Thu, 22 Feb 2018 02:22:47 GMT //上次最后修改时间
    Vary: Accept-Encoding //访问状态
    ETag: "5a8e2977-1f2c6"
    X-Server: www.baidu.com
    Accept-Ranges: bytes
    X-Server: izwz95kki96pw0j3ilyld1z

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

  1. HTTP请求报文(Request Message)介绍
    HTTP请求报文由请求行、请求头部(header)、空行和请求报文主体几个部分组成
    (1)请求行
    请求行是请求报文的第一行,用来说明客户端想要做什么。内容由请求方法字段、URL字段和HTTP协议版本字段组成,它们之间用空格分隔。

(2)请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“.”分隔。请求头部的作用是通过客户端把请求的相关信息告诉给服务器。与请求报文相关的最常用的请求头是Content-Type和Content-Length。

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

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

  1. HTTP响应报文(Response Message)介绍
    HTTP响应报文由起始行、响应头部(heder)、空行和响应报文主体这几个部分组成,和HTTP请求报文格式类似。
    (1)起始行
    响应报文的起始行也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议及版本号、数字状态码、状态情况。例如: HTTP/1.1 200 OK。

(2)响应头部
和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名
字和一个值,两者之间用冒号分隔。头部结尾也是以一个空行结束的。常见的头部信息有:
Content-Type: text/html; charset-utf-8等 键值对

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

(4)响应报文主体
响应报文主体中装载了要返回给客户端的数据。这些数据可以是文本,也可以是二进制的(如图片、视频)。

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

1.2.6 HTTP协议原理及重点分析
HTTP协议属OSI模型中的第七层应用层协议。HTTP协议的重要应用就是www服务应用。以HTTP协议进行通信时,需要有客户端(即终端用户)和服务器端(即Web服务器),在Web客户端问Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务器
之间建立一个TCP/IP连接。
· 整个HTTP协议请求的工作流程:
(1)终端客户在Web浏览器地址栏输人访问地址http://www.kgc.cn/index.html
(2)Web浏览器请求DNS服务器把域名www.kgc.cn转换成Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程。
(3)Web浏览器将端口号 (默认是80)从访问地址(URL)中解析出来。
(4)Web浏器通过解析后的IP地址及端11号与Web服务器之间建立一条TCP连接。
(5)建立TCP连接后,Web浏览器问Web服务器发送一条HTTP请求报文。
(6)Web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。
(7)Web服务器关闭HTTP连接,关闭TCP连接,Web浏览器显示访问的网站内容到屏幕上。

1.3 HTTP资源
1.3.1 媒体类型
互联网上的数据有很多不同的类型, Web服务器会把通过Web传输的每个对象都打上MIME类型(即MIME type)的数据格式标签。最初设计MIME ( Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,后来,HTTP也支持了这个功能,用它来描述数据并标记不同的数据内容类型。
当Web服务器响应HTTP请求时,会为每一个HTTP对象数据加一个MIME类型。当Web浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,并进行相应处理。
MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
MIME 类型 文件类型
text/html html、htm文本类型
text/css css文本类型
image/xml xml文本类型
Image/json 交互式文档
image/gif gif图像类型
image/jpeg jpeg、jpg图像类型
video/mp4 MP4视频类型
video/quicktime mov视频
application/javascript js文本类型
video/x-msvideo avi视频类型
... ...
常见的几种MIME类型 还有很多

1.3.2 URL介绍
URL,全称为Uniform Resource Location,中文翻译为统一资源定位符,也被称为,网页地址(网址)。如同门牌一样,它是因特网上标准的资源唯一地址。通俗地说, URL是Internet上用来描述信息资源的字符串,主要用在各种www客户端和服务器程序上。URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。严格来讲,每个URL都是一个URI,它标识一个互联网资源,并指定对其进行操作或取得该资源的方法。
URL的格式由下列三部分组成:
第一部分是协议,例如:http。
第二部分是主机资源服务器IP地址或域名(端口号),例如: www.kgc.cn
第三部分是主机资源的具体地址,如目录和文件名等,例如: teacher/index.html
第一部分和第二部分之间用“:// "符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分可以省略。

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

1.3.4 静态页面资源
1、静态网页资源介绍
在网站设计中,纯粹HTML格式的网页(可以包含图片、视频、JS (前端功能实现)、css (样式)等)通常被称为“静态网页”,早期(大约2000年左右)的网站大多都是由静态网页制作的。静态网页是相对于动态网页而言的,是指没有后台数据库、不含程序(如PHP, JSP, ASP)、不可交互的网页。

2、静态网页资源特点
静态网页资源的特点是,开发者编写的是什么,它显示的就是什么,一旦编写完成,就不会有任何改变。静态网页的维护和更新相对比较麻烦,每个不同的网页都需要,单独编辑更新,静态网页一般适用于更新较少的宣传展示型网站(例如:酒、家具、水果等的宣传网站),是早期(2000年左右)很多中小网站展示的形式。静态网页资源的对应程序及资源文件的常见扩展名为:
纯文本类程序或文件,如 .htm、 .html、 .xml、 .shtml、 .js、 .css等。
图片类文件或数据文档,如. jpg、.gif、.png、 .bmp、 .txt、 .doc、 .ppt等。
视频类流媒体文件,如 .mp4、.swf、 .avi、.wmv、 .flv等。
· 静态网页资源有几个重要的特征:
(1)每个页面都有一个固定的URL地址,且URL一般以.html、.htm、.shtml等形式为后缀,而且地址中不含有问号"?"或“&"等特殊符号。
(2)网页内容一经发布到网站服务器上,无论是否有用户访问,每个页面的内容都是保存在网站服务器文件系统上,也就是说,静态网页是实实在在保存在服务器上的文件实体,每个网页都是一个独立的文件。
(3)网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)。
(4)因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,当网站信息量很大时,完全依靠静态网页比较困难(缺点)。
(5)网页的交互性较差,在程序的功能实现方面有较大的限制(缺点)。
(6)网页程序在用户浏览器端解析,如IE浏览器,程序解析效率很高,由于服务器端不进行解析,并且不需要读取数据库,因此服务器端可以接受更多的并发访问。当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析),待客户端拿到数据后,在浏览器端解析并展现出来(优点)。
网站静态页面的特点就相当于在餐馆吃火锅,餐馆把原材料和工具都给你准备好,你自己只需要涮着吃就行,不需要大厨给你炒菜做菜了。因此,对于餐馆来讲,服务顾客的效率大大提高了。由于静态页面不需要在服务器端解析,因此服务器的压力也大大减轻了。

3、静态网页语言
常见的静态网页语言有HTML、 JS、 CSS、 XML,、SHTML等。
回顾一下静态网页的核心特点,如下:
(1)程序在客户浏览器端解析,不读取后端数据库,因此性能和效率很高。
(2)因为后端没有数据库支持,所以和用户的交互性较差,功能实现也很少。

4、有关静态网页的架构思想
在高并发、高访问量的场景下做架构优化,涉及的关键环节就是把动态网页转成静态网页,而不是直接请求数据库和动态服务器,并且可以把静态内容推送到前端缓存(或CDN)中提供服务,这样就可以提升用户体验,节约服务器和维护成本。

1.3.5 动态网页资源
1、动态网页资源介绍
所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是.htm、 .html、 .shtml、 .xml、. js、 .css等静态网页的常见扩展名形式,而是.asp、.aspx、 .php、 .js、.do、 .cgi等形式的,并且一般在动态网页网址中会有标志性的符号"?, &",此外,在大多数情况下后端都需要有数据库支持。

2、动态网页资源特点
(1)网页扩展名后缀常见为: .asp、.aspx、 .php、. jsp、.do、 .cgi等。
(2)网页一般以数据库技术为基础,大大降低了网站维护的工作量。
(3)来用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、投票、用户管理、订单管理、发博文等。
(4)动态网页并不是独立存在于服务器上的网页文件, 当用户请求服务器上的动态程序时,服务器解析这些程序并可能通过读取数据库来返回一个完整的网页内容。
(5)动态网页中的“?"在搜索引擎的收录方面存在一定的问题,搜索引擎一般不会从一个网站的数据库中访问全部网页,或者出于技术等方面的考虑,搜索蜘蛛一般不会夫抓取网址中"?"后面的内容,因此在企业通过搜索引擎进行推广时,需要针对采用动态网页的网站做一定的技术处理(伪静态技术),以便适应搜索引擎的抓取要求。
程序在服务器端解析,这相当于顾客点餐,饭店厨师做饭做菜,耗时长、效率低。在这个过程中,会消耗大量的CPU和内存、I/O等资源,并且多数还要提供读取数据库等服务,因此,其访问效率远不如静态网页,在服务器端解析动态程序的服务常见的有PHP引擎、Java容器(Tomcat, Resin、 Jboss, Weblogic)等。
3、有关动态网页的架构思想
一般来说,静态网页的性能效率是动态网页的10-30倍。且动态网站效率很差,并发能力也很低,在高并发场景中,应尽可能转换成静态网页提供服务。动态转静态几乎是所有高并发网站必备的架构方案思路,也是高级架构师的职责所在。
此外,动态转静态也要根据业务需求设计,例如,对于更新频繁的网站,如果设计不好就可能会产生数据不一致的情况,即用户看到的数据不是网站最新的内容,而是静态的内容。

1.3.6 伪静态网页
1、伪静态网页介绍
顾名思义,伪静态就是通过某些技术(如rewrite)把动态网页的URL地址伪装成静态网页URL地址,但实质上用户访问的还是动态网页,只不过看起来是符合静态网页地址特征的。因此,用户及某些搜索引擎会误认为是静态网页。

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

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

4、伪静态网页的缺点
动态网页伪装成静态网页,虽然可以让搜索引擎收录,并且可提升用户访问体验,但伪静态网负并不能提升网站的访问效率,从理论上说还会降低网站的性能,没有动态转静态网页效率高,不过,对于一些并发不是很大的网站来说,或者是使件资源充足的网站来说,伪静态还是一个不错的功能。
现在很多大型的网站都来用了动态网页生成静态网页的技术,用于消除动态网页中的参数,使搜索引擎收录更多的内容,达到优化网站的效果。当网站遇到访问瓶颈时,如果有技术力量将动态网页转化成静态网页,那就冉好不过了,但是,有些史新频率很快的业务并不适合这么做。此外,如果将动态转为静态有很大难度,这时也可以考虑将其设置伪静态。

5、伪静态网页小结
(1)利用rewrite技术将动态网贝伪装成静态网页(URL地址改写)。
(2)便于搜索引擎搜录,提升用户访问量及用户体验。
(3)访问性能没有提升,并且转换成伪静态会消耗资源,因此性能反而会下降。
(4)尽可能地将动态网页转换成真正的静态页面。
(5)并发量不是很大或动态更新过于频紧时,用rewrite实现伪静态也是不错的。
(6)伪静态网贝的实现过程,一般由产品运营提出需求,开发和运维共同实现。

1.4 网站流量度量术语
1.4.1 IP
IP (独立IP),即Internet Protocol,这里指独立IP数,独立IP数是指不同IP地址的计算机访问网站时被计的总次数。独立IP数是衡量网站流量的一个重要指标。一般一天内(00:00-24:00 )相同IP地址的客户端访问网站页面只会被计为一次,记录独立IP的时间可为一天或一个月,目前通用的标准为“一天”。
假设有部分同学在局域网中同时打开了课工厂的网站(http://www.kgc.cn),请问对于网站是几个独立IP ? 答:是一个独立IP。这是因为,国内所有的公司几乎都是采用局域网共享上网的,即通过路由器NAT地址转换上网,每个计算机在局域网内的私有IP是不同的,但是在外网上,就必须由路由器把每个私网地址转换成了路由器接口的固定公网IP (多IP映射暂不考虑)。所以说,对于网站来说一天内多个相同IP的客户端访问会被计为一个独立IP。

1.4.2 PV
PV (访问量)即Page View,中文翻译为页面浏览,即页面浏览量或单击量,不管客户端是不是相同,也不管IP是不是相同,用户只要访问网站贝面就会被计算PV,一次计一个PV。
PV的具体度量方法就是从客户浏览器发出一个对Web服务器的请求( Request),Web服务器接到这个请求后,将该请求对应的网页(Page)发送给浏览器,这样就产生了一个PV。这里有一个问题,就是只要这个请求发送给了浏览器,无论这个贞面是否完全打开(或下载完成),都会被计数(1次为1个PV),一般为了防止用户快速刷PV,很多网站会把PV的统计程序放在页面的最下面。
用PV衡量网站时,PV数反映的是浏览某网站的页面数量,每刷新一次页面也算一次。因此,可以说PV数与来访用户的数量成正比,但PV数并不是真正的页面来访者数量,而是网站被访问的页面数量,因为一个来访者可能产生多个PV。
PV (Page View)是网站被访问的页面数量的一个指标,但不能直接知道有多少人访问了这个网站。
一个来访者访问网站,可能产生若干PV数,但是独立IP数就只有1个。因此,如果对比一个网站的独立IP数和PV数,不难看出,PV数一定会大于等于独立IP数,其比例视网站的业务而定,对于分类门户,可能会达到10:1,甚至更多。

1.4.3 UV
UV (独立访客)即Unique Visitor,同一个客户端(PC或移动端)访问网站被计为一个访客。一天( 00:00-24:00 )内相同的客户端访问同一个网站只计一次UV, UV一般是以客户端Cookie等技术作为统计依据的,实际统计会有误差。考虑到一台客户端计算机可能会有多人使用,因此,UV (独立访客)实际上并不一定是独立的自然人访问。

1.4.4 企业网站对IP、PV、UV的度量
1、对IP的度量
(1)分析所有Web服务器的访问日志信息,对IP地址段去重后计数,这是IT人员的基本计算手段。
(2)在网站的每一个(所有)页面结尾,嵌入JS等统计程序代码,待用户加载网页后,IP即传给统计IP的服务器,这种方法一般被第三方统计公司或在企业内部开发日志分析程序时使用。
(3)用第三方大家比较信任的统计工具,例如:谷歌的统计(GA)。
IP的统计方法简单、易用。因此,成了多数网站衡量网站流量的重要指标之一。

2、对PV的度量
(1)分析Web服务的访问日志(需要排除JS、CSS及各种图片的日志信息),只计算HTML,PHP等页面数量。
(2)在网站的每一个页面结尾,嵌入JS等统计程序代码,待用户加载网页后,访问数量即传给统计PV的服务器,这种方法一般被第三方统计公司或在企业内部开发日志分析程序时使用。
(3)用第三方大家比较信任的统计工具,例如:谷歌的统计(GA)。
PV的统计方法也很简单、易用,因此也是多数网站衡量网站流量的重要指标之一。

对UV的度量
(1)通过客户端HTTP请求报文分析。
一个客户端会多次请求网站服务器,每次HTTP请求都会携带客户端自身的大量信息,比如: IP地址、请求发出的时间、浏览器版本、操作系统版本等。网站服务器对这些请求进行分析,如果这些请求满足一些共同特征,比如来自同一个IP地址,且浏览器版本和操作系统版本相同,请求时间又相近等,那么就可以认为这些请求是来自于同一个客户端,那么多个页面访问也只算一个UV。共同特征的定义是由服务器方决定的。通常,用IP地址+其他特征共同来定义的情况较多。但此种度量方法无法解决以下问题,例如:多个人的计算机软硬件雷同,并且是一个公司或学校的人;多个人共用一个计算机等情况。
(2)通过Cookie鉴别。
当客户端第一次访问某个网站服务器时,网站服务器会给这个客户端的计算机发出一个Cookie,通常放在这个客户端计算机的C盘当中。在这个Cookie中会分配一个独一无二的编号,这其中会记录一些访问服务器的信息,如访问时间、访问了哪些页面等等。当你下次再访问这个服务器的时候,服务器就可以直接从你的计算机中找到上一次放进去的Cookie文件,并且对其进行一些更新,但那个独一无二的编号是不会变的。如果在定时间内,服务器发现2个来访者对应的是同一个编号,那么自然可以认为它来源于同一个来访者,于是就计算1个UV。
使用Cookic的方法要比分析客户端HTTP请求头部信息更精确些。但也存在一些问题,比如:有的客户端为保证更高级别的安全,关闭了Cookie的功能;或者是有些客户端设置了在退出页面时自动删除Cookie,或你经常自己去手动删除Cookie,那么这个方法就不那么精确了。
因此,以上两个方法都只能得到近似的UV,而不是绝对精确的。
UV的度量相对IP和PV来说,不但麻烦,而且要开发比较复杂的程序系统才能得到期望的结果,因此,在Linux运维领域大家提及得较少,一般企业市场及运营人员可能会更多关注网站的UV。

1.4.5 IP、PV、UV的区别
一个网站的独立IP数量要比网站实际访问的PV数量小得多。通常情况下(国内互联网环境下),网站的UV数也会大于独立IP数。PV数高说明访问的页面数多,但是不一定就代表来访者多;但PV数一定与来访者的数量成正比,不过,PV并不直接决定页面的真实来访者数量。比如在访问某网站时,一个人也可通过不断地刷新页面,制造出非常高的PV数。PV数多,用户访问网站页面的总数量多,通常服务器的压力会大一些。

1.4.6 并发连接
Request Per Second + Simultaneous Browser connection + Thinking Time = Concurrent User
Request Per Second:表示每秒的请求数RPS(吞吐量)
Simultaneous Browser connection:表示并发浏览连接数。SBC
Thinking Time:表示平均用户的思考时间
Concurrent User:表示网站并发用户总数

1.4.7 其他服务并发连接
(1) QPS (Query Per Second,每秒查询率)
每秒查询率QPS是用于衡量一个特定的查询服务器在规定时间内所处理流量多少的标准。运维工作中, DNS系统及数据库等服务的查询性能经常用每秒查询率来衡量。
(2) IOPS (Input/Output Operations Per Second)
IOPS即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。存储端的IOPS性能和主机端的I/O是不同的, IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次I/O需要多次访问存储才可以完成。例如,主机写入一个最小的数据块,也要经过“发送写入请求、写入数据、收到写入确认”三个步骤,也就是3个存储端访问。

猜你喜欢

转载自blog.51cto.com/14375779/2529467