说说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:
UV :
PV :
一次PV建立的过程:
并发:
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.aspx3.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协议与其他协议的关系如图:
总结如下:
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工作流程
参考文献:
《HTTP权威指南 第5版》
原创文章,作者:Net17_desperado,如若转载,请注明出处:http://www.178linux.com/16666
评论列表(4条)
对实验很有帮助,再加上原理就更好了
0802+简单明了,通俗易懂,不错,点个赞!!!
0802+简单明了,通俗易懂,解释很详细!对我帮助很大!不错!不错
@sky138170:回复在原始博客下是无效评论哦,要评论在《马哥教育首届IT技术博客大赛–复审阶段》帖子下才有效哦!