说说web和http以及lamp/lnmp

<span style="font-size: 24px;font-family: 宋体,SimSun">**说说web和http以及lamp/lnmp**</span>

说说web和http以及lamp/lnmp

在这篇文章当中你将看到如下内容:

  • web与http的简介,网页的分类

  • 度量网站流量的几个术语——知道大牛在说什么

  • 关于http你必须知道的

  • web的实现方法—lamp/lnmp

web http 图解 lamp/lnmp

一、web与http的简介,网页的分类

1.1 什么是web
      www,全称为World Wide web,常常我们将www称为web,中文翻译为”万维网“,他是当今互联网上最主流的信息服务形式。是他构成了一个个页面

1.2 什么是http
      http协议,全称为"HyperText Trafser Protocol" 中文叫做“超文本传输协议”,这是当今互联网上广泛应用的一种协议。

1.3 http与web的关系

http协议是互联网上应用最广泛的协议,它有许多应用,最流行的应用就是web。因此构成一个个五彩缤纷的网页的是基于http协议的web应用

*http协议的www应用的默认端口是80,基于某些安全性考虑另外的一个加密的www的服务https的默认端口是443*

在现今www、web、http的概念已经渐渐的模糊了,因此我们可以知道的是:网页称为web页面,基于的协议是http,提供网页服务的是www服务。
   HTTP协议的主要特点

 1.支持客户/服务器模式。
 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
 请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
 3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
 4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,
  并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
 5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。
  缺少状态意味着如果后续处理需要前面的信息,则它必须重传,
  这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

1.5 网页的分类

 **互联网上五彩缤纷的网页总的来说可以分为静态网页、动态网页、伪静态。**

 *静态网页:在网站设计中纯粹的HTML格式的网页(可包含图片、视频、css样式等)通常被称为静态网页,
  静态网页相对于动态网页的区别在于没有后台数据库、不含程序(PHP JSP ASP)、不可交互的网页*
 *动态网页:所谓的动态网页与静态网页是相对来说的,动态网页就是后台有数据库,可以运行程序,可以和网页进行交互的页面。*
 *伪静态网页:伪静态就是通过某些技术把动态网页伪装成静态网页,但实际上用户访问的还是动态网页,
  只不过用户看起来这网页符合静态网页特征,用户及搜索引擎会把它当成静态网页*

1.6 各种类型网页的特点——静态网页

 *静态网页:静态网页的特点是开发者编写什么它就显示什么,一旦完成就不会更改,
  因此静态网页的维护更新比较麻烦,每个网页需要单独手动更新,工作量太大,一般适合传统的宣传展示类的网站*
  静态网页有几个特征:
   1.每个页面都有一个固定的URL地址,该地址以.html .htm .shtml 等常见形式作为后缀,且地址当中不含有“?”或“&“等特殊字符(关于URL后文会提)
   2.网页内容一旦发布到网站服务器上,每个网页内容都是保存在服务器上的,换句话说,用户访问的静态网页其实是服务器上网页文件的实体。
   3.网页内容固定不变,易被搜索引擎收入。
   4.因网页没有数据库支持,所以网站制作和维护的工作量较大,当网站信息量很大时,完全依靠静态网页非常困难。
   5.网页交互性几乎没有,程序的功能性实现方面有较大的限制。
   6.网页解析效率高,因为是用户端浏览器解析,占用服务器性能小

1.7 各种类型网页的特点——动态网页

 *动态网页:动态网页后缀名以.asp .php .aspx .js等形式,且一般在网址中有标志性的符号——“?”和“&”,
  而且大多数时候后面都有数据库支持*  
  动态网页有如下特征:

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

   2.可以实现更多的功能,如用户注册、用户登录、在线调查、投票、用户管理、订单管理、发表博文等(可以与网页进行交互)

   3.动态网页不是独立存在于服务器上的网页文件,当用户请求服务器上的动态内容时,服务器解析这些程序并可能读取数据库以返回一个完整的网页内容。

   4.动态网页一般不会被搜索引擎收录,因此当需要对网站进行搜索引擎推广时,就需要对动态网页进行处理了,这时伪静态技术应运而生。

1.8 各种类型网页的特点——伪静态网页
     伪静态:伪静态就是通过某些技术把动态网页伪装成静态网页,但实际上用户访问的还是动态网页,只不过用户看起来这网页符合静态网页特征,用户及搜索引擎会把它当成静态网页* 简而言之当用户打开URL后缀名以.html等结尾的网站时,还能进行登录注册等行为的就是伪静态网页

 伪静态网页有如下特征:

  1.伪静态表面上看是静态网页,后缀名也是静态网页的.html之类的,但是这是由动态网页通过技术手段(rewrite)实现的URL地址重写.
    改写后的URL地址规范、美观,因此容易被搜索引擎收入,当一个网站需要搜索引擎推广时非常重要。
  2.其本质还是动态网页,从性能上来看伪静态性能并没有提升,反而有所下降,因为从动态网页转换成静态也会消耗资源。

1.9 各种类型网页特点——小结

  静态网页:
    执行效率高,占用服务器资源少易于被搜索引擎收入(优点)
    功能简单,无法执行程序,无法与网页进行交互,没有数据库的支持,许多功能无法实现,更新与维护较为困难(缺点)
  动态网页:
    与网页交互性好,能实现许多功能,有数据库的支持,更新维护比较容易。(优点)
    执行效率较低,占用服务器资源较多,mysql对文件的I/O操作是网站最大的瓶颈之一。(缺点)
    不易被搜索引擎收入,通过搜索引擎推广存在困难(缺点)       
  伪静态网页:
    有动态网页的优点,且更容易被搜索引擎收入(优点)
    执行效率较低,因为从动态网页转换成静态也需要占用服务器性能,因此占用服务器资源最多。

二、衡量web性能的几个术语——知道大牛在说什么

2.1 前言

往往运维界的大牛开讲座时,往往会这么说我运维的网站架构能承受多少PV,多少IP,多少UV,多少并发。吾等小白不禁蒙圈。求吾等小白的心理阴影面积。

很多面试官往往会问你们运维的系统能承受多少PV,UV,IP,并发?

 如果你不知道这些什么意思,你就咸鱼了

他到底在说什么,这些表示什么意思?

2.2 什么是IP、PV、UV、并发?

IP:ip(独立IP),即Internet Protocol,指独立的ip数,
    即不同的IP地址的计算机访问网站时被记录的数。
    该值是衡量网站流量的一个重要指标。记录该值得时间可以是一天或者一月,目前常用的标准是一天。
    一般相同IP用户一天之内访问该网站只会被记录一次

PV:PV(访问量)即Page View,中文翻译为页面浏览,即页面浏览量或者单击量。
    该值不管访问的客户端是否相同,也不管IP是否独立,用户只要访问网站页面就会计入PV,一次记一个PV。
UV:UV(独立访客),Unipue Visitor。
  同一客户端(pc或者移动端)访问网站,记为一个UV。
  一天之内相同的客户端访问相同的网站只记录一个UV
并发:指网络服务器在单位时间内能够处理的最大连接数

? 2.3 图解IP、PV、UV、并发

IP:

说说web和http以及lamp/lnmp

UV :

说说web和http以及lamp/lnmp

PV :

说说web和http以及lamp/lnmp

一次PV建立的过程:

说说web和http以及lamp/lnmp

并发:
说说web和http以及lamp/lnmp

2.4 IP、PV、UV的度量

IP:

 (1)分析所有web服务器日志信息,对访问IP进行去重后计数。
 (2)在网站的所有页面结尾嵌入统计程序代码.
 (3)用大家信任的第三方工具,如谷歌的GA

PV:

 (1)在网站的所有页面结尾嵌入统计程序代码.
 (2)用大家信任的第三方工具,如谷歌的GA

UV:

   (1)通过客户端的http请求报文分析
   (2)通过Cookie鉴别

三、关于http你必须知道的

3.1 什么是HTTP?

 HTTP(HyperText Trasfer Protocol 超文本传输协议);
 HTTP是被web服务使用的一种规范,该规范完成从客户端到服务器端的一系列运作流程加以规范。当今世界上的web页面均是建立在该协议之上的

3.2一次完整的HTTP连接过程
    总之请看图:

    (1) 建立或处理连接:接收请求或拒绝请求
    (2) 接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;

       在这里我们提出 并发访问响应模型(Web I/O)这一概念:
        单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应;
        多进程I/O结构:并行启动多个进程,每个进程响应一个请求;
         复用I/O结构:一个进程响应n个请求;
        多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;
        事件驱动:event-driven
        复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;


    (3) 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息

        请求报文首部是一种元数据
        请求报文首部是这样的:
            <method> <URL> <VERSION>
            Host: www.magedu.com   请求的主机名称
            Connection:

    (4) 访问资源:获取请求报文中请求的资源

        web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,
         或动态运行后生成的资源;这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot

        web服务器资源路径映射方式:
            (a) docroot
            (b) alias
            (c) 虚拟主机docroot
            (d) 用户家目录docroot

      (5) 构建响应报文

        在响应报文中有一项重要的参数——资源的MIME类型:它标识了web页面的数千种资源,使浏览器知道如何处理这些资源。
        

        URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径;

      (6) 发送响应报文


      (7) 记录日志

并发访问响应模型(Web I/O)结构如图所示:

3.3  URI和URL

     URI:URI是Uniform Resource Identifier 的缩写,其意为统一资源标识符。

     URL:URL是Uniform Resource Locator 的缩写,其意为统一资源定位符,是URI的子集

3.3.1 URL介绍
  URL由以下部分组成:
    (1)协议,表明采用的协议,如http
    (2)服务器域名或IP地址 如www.qidian.com
    (3)主机资源的具体地址 如 Default.aspx
    (4)第一部分和第二部分用“://”符号隔开,第二部分和第三部分用“/”隔开。第一部分和第二部分不可省略,第三部分可以省略。
    (5)列举的完整URL为:
http://www.qidian.com/Default.aspx

3.4 MIME

   MIME:互联网上有数千种不同的数据类型,HTTP会给每种通过web传输的对象都打上了名为MIME type的数据格式标签。
   web服务器会为所有的HTTP对象附加一个MIME类型,当浏览器从服务器取回一个对象时会去查看下相关的MIME类型,看看浏览器是否知道如何处理该对象。
   幸运的是,大多数浏览器知道如何处理几百种常见的MIME对象类型。

3.4.1MIME 类型

    MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分割。
    格式:major/minor
    HTML格式的档: text/htm文本文l
    普通的ASCII文档:text/plain
    JPEG格式的图片:image/jpeg
    GIF格式的图片:image/gif

3.5 报文

 HTTP报文是在HTTP应用程序之间发送的数据块。这些数据块以元信息开头,这些信息描述了了报文的内容及含义,后面跟可选的数据部分。
 这些报文由以下内容组成:
        (1)起始行:对报文进行描述
        (2)首部:包含属性
        (3)主体:包含数据的(可选)
  所有HTTP报文可以分为两类——请求报文(request message)、响应报文(response message):
  请求报文会向web服务器请求一个动作;响应报文会将请求的结果返回客户端

3.5.1 报文的格式

这是请求报文的格式示例:

 <method> <request-URL> <version> <headers>   entity-body

这是响应报文的格式:

 <version> <status-code> <reason-phrase> <headers>   entity-body

可见二者只有起始行的语法有所不同

下面是对各部分的简单描述

   方法(method):客户端希望服务器对资源执行的动作。
   请求URL(request-URL):请求的URL
   版本(version):报文使用的HTTP格式,其格式看起来是这样的:
        HTTP/<major>.<minor>
   其中主要版本号(major)和次要版本号(minor)都是整数。
   状态码(status-code):这三位数字表示了请求过程中发生的情况
   原因短语(reason-phrase):数字状态码的可读版本,对前面状态码做出解释的短语
   首部(headers):表示服务器端或客户端需处理的请求或响应的内容及属性
   在首部和报文主体(entity-body)之间的空行:首部是有一个空行结束的表示了首部列表的结束和主体部分的开始。
   主体部分(entity-body):应被发送的数据(可选)

方法
     在HTTP报文中方法(method)表示了客户端希望服务器对资源执行的动作。

在HTTP支持下列方法(method)以及扩展方法:
   GET:从服务器获取文档
   HEAD:只从服务器获取响应报文的首部
   POST:向服务器发送需要处理的数据
   PUT:将请求的主体部分存储在服务器上
   TRACE:对可能经过代理服务器传送到服务器上的报文进行追踪
   OPTIONS:决定可以在服务器上执行那些方法
   DELETE:从服务器上删除一份文档 (非常危险,大部分服务器禁止了该方法)
  当然不是所有服务器都支持上述方法,有些服务器还支持扩展的方法。

首部、 headers

HTTP首部字段向请求和响应报文中添加了一些附加信息。本质上来说,它们只是一些名/值对的列表,。
 HTTP首部分成
 通用首部:既可以出现在请求报文中,也可以出现在响应报文中。
 请求首部:请求首部是在请求报文中有意义的首部。用于说明是谁或什么在发送请求,
 请求源自何处,或者客户端的喜好及能力。服务器可以根据请求首部给出的客户端的信息,试着为客户端提供更好的响应。
 响应首部:为客户端提供信息。
 实体首部:针对请求报文和响应报文的实体部分使用的首部。

通用首部

以下是各通用首部字段的含义:
  首部字段名  说明
 CacheControl    该字段控制缓存的行为
 Connection  允许客户端和服务器指定与请求/响应连接有关的选项
 Date    报文创建时间
 Progma  报文指令
 Trailer     报文末端的首部一览
 Transfer-Encoding   指定报文主体的传输编码方式
 Upgrade     升级为其它协议
 Via     代理服务器的相关信息
 Warning     错误通知

请求首部

以下是各请求首部字段的含义
 Accept  用户代理可处理的媒体类型
 Accept-Charset  优先的字符集
 Content-Encoding    优先的内容编码
 Content-Language    优先的语言
 Authorization   Web认证信息
 Expect  期待服务器的特定行为
 From    用户的电子邮箱地址
 Host    请求资源所在服务器
 If-Match    比较实体标记(ETag)
 If-Modified-Since   比较资源的更新时间
 If-None-Match   比较实体标记(与If-Match相反)
 If-Range    资源未更新时发送实体Byte的范围请求
 If-Unmodified-Since     比较资源的更新时间(与If-Modified-Since相反)
 Max-Forwards    最大传输逐跳数
 Proxy-Authorization     代理服务器要求客户端的认证信息
 Range   实体的字节范围请求
 Referer     对请求中URI的原始获取方
 TE  传输编码的优先级
 User-Agent  HTTP客户端程序的信息

响应首部

以下是各响应首部字段的含义:
 Accept-Ranges   是否接受字节范围请求
 Age     推算资源创建经过时间
 Etag    资源的匹配信息
 Location    令客户端重定向至指定URI
 Proxy-Authenticate  代理服务器对客户端的认证信息
 Retry-After     对再次发起请求的时机要求
 Server  HTTP服务器的安装信息
 Vary    代理服务器缓存的管理信息
 WWW-Authenticate    服务器对客户端的认证信息

实体首部

以下是个实体首部字段的含义
 Allow   资源可支持的HTTP方法
 Content-Encoding    实体主体适用的编码方式
 Content-Language    实体主体的自然语言
 Content-Length  实体主体的大小
 Content-Location    替代对应资源的URI
 Content-MD5     实体主体的报文摘要
 Content-Range   实体主体的位置范围
 Content-Type    实体主体的媒体类型
 Expires     实体主体过期的日期时间
 Last-Modified   资源的最后修改日期时间
 状态码

 HTTP用3位状态码表示HTTP连接过程中发生的情况,后面跟原因短语

100—199——信息性状态码

 100:continue 说明收到了请求的初始部分,请客户端继续。
 101:Switching Protocols 说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议

200—299——成功状态码

200:OK 请求没问题,实体的主体部分包含了所请求的资源
201:Created 用于创建服务器对象的请求(比如PUT方法)。响应的实体主体部分中包含了请求的资源
202:Accepted 请求已被接受,但服务器还未对其执行任何动作。
203:Non-Authoriative Information 实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本。
204:No Content 响应报文中包含若干首部和一个状态行,但没有实体的主体部分。

300—399——重定向状态码

300:Multiple Choices 客户端请求一个实际指向多个资源的URL时会返回这个状态码。
301:Moved Permanently 在请求的URL已被移除时使用-永久重定向,表示请求的资源已被分配新的URL,以后应使用该URL
302:Found 与301类似;但是客户端使用了首部给出的URL来临时定位的资源
303:See Other 告知客户端应该用另一个URl来获取资源。

400—499——客户端错误状态码

400:Bad Request 用于告知客户端它发送了一个错误的请求
403:Forbidden 请求被服务器拒绝
404:Not Found 说明服务器无法找到所请求的URL

500—599——服务器错误状态码

500:Internal Server Error 服务器内部错误
501:Not Implemented 客户端发起的请求超出服务器的能力范围
502:Bad Gateway 错误网关;无效网关
503:Service Unavailable 服务器暂时不可用
504:Gateway Timeout 网关响应超时。

3.6 HTTP协议与其他协议的关系

HTTP协议与其他协议的关系如图:
说说web和http以及lamp/lnmp

 总结如下:
            1、与HTTP协议相关的协议有DNS协议、TCP/IP协议。
            2、DNS协议负责将请求的域名解析成域名对应的IP地址。
            3、HTTP协议负责生成报文。
            4、TCP协议负责将报文按照顺序分割或重组
            5、IP协议负责找到地方IP地址并将报文发送过去。

四、web的实现方法-lamp/lnmp

lamp/lnmp是当今linux系统下两套比较成熟得web服务环境解决方案
l:代表linux,表示方案的载体是linux系统
a:代表apache httpd 代表·了老牌的静态web服务软件,稳定而强大,市场占有率高。
n:代表nginx 代表了新兴的静态web服务软件,轻量而强大,市场占有率上升迅猛。
m:代表mysql 或mariadb,开源数据库,为网页提供数据容器。
p:php,用来解析PHP动态页面请求

lamp/lnmp工作流程
说说web和http以及lamp/lnmp

参考文献:
      《HTTP权威指南 第5版》

原创文章,作者:Net17_desperado,如若转载,请注明出处:http://www.178linux.com/16666

评论列表(4条)

  • sky138170
    sky138170 2016-06-13 14:22

    对实验很有帮助,再加上原理就更好了

  • wangquan8628
    wangquan8628 2016-06-13 14:25

    0802+简单明了,通俗易懂,不错,点个赞!!!

  • sky138170
    sky138170 2016-06-13 14:36

    0802+简单明了,通俗易懂,解释很详细!对我帮助很大!不错!不错

    • xxrenzhe
      xxrenzhe 2016-06-13 14:58

      @sky138170回复在原始博客下是无效评论哦,要评论在《马哥教育首届IT技术博客大赛–复审阶段》帖子下才有效哦!