web 内容都是存储在 web服务器上的,web服务器所使用的是 Http协议,所以常常会被称为 Http服务器.客户端向服务器发送Http请求,服务器会在 Http响应中回送所请求的数据. Http客户端和Http服务器共同构成了万维网的基本组件.html
资源web
web服务器是 web资源(web resource)的宿主。最简单的 web资源就是 web服务器文件系统中的 静态文件,这些文件能够包含任意内容:文本文件、html文件、图片文件,或全部其余你可以想到的格式。还能够是 根据须要生成内容的软件程序。浏览器
媒体类型缓存
因特网上有数千种不一样的数据类型,Http仔细地给每种要经过 web传输的对象都打上了名为MIME类型(MIME type)的数据格式标签。最初设计MIME(Multipurpose Internet Mail Extension)是为了解决在不一样的电子邮件系统直接搬移报文时存在的问题。MIME在电子邮件系统中工做得很是好,所以Http也采纳了它,用它来描述并标记多媒体内容。安全
web服务器会为 全部 Http 对象数据附加一个MIME类型,当web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器均可以处理数百种常见的对象类型:显示图片文件、解析并格式化html文件、经过计算机声卡播放音频文件或者运行外部插件软件来处理特殊格式的数据。服务器
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。网络
html 格式的文本文档 由 text/html 类型来标记.tcp
普通的 ASCII 文本文档 由 text/plain 类型来标记.url
JPEG 版本的图片为 image/jpeg 类型,GIF 格式的 图片为 image/gif类型.插件
URI
每一个web服务器资源都有一个名字,这样客户端就能够说明他们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier,Uri).Uri就像因特网上的邮政地址同样,在世界范围内惟一标识并定位信息资源.
统一资源定位符(uri)是资源标识符最多见的形式。它描述了一台特定服务器上某资源的特定位置。他们能够明确说明如何从一个精确、固定的位置获取资源.
大部分Uri都遵循一种标准格式,这种格式包含三个部分:
一、Uri的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分一般就是 http协议(http://).
二、第二部分给出了 web服务器的因特网地址(好比,www.joes-hardware.com)。
三、其他部分指定了 web服务器上的某个资源(好比,/specials/saw-blade.gif).
事务
客户端是如何经过Http 与 web服务器及其资源进行事务处理的??
一个http事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应组成,这种通讯是经过名为 http报文(http message)的格式化数据块进行的。
如图:包含请求与响应报文的 http事务
http 方法
http 支持几种不一样的请求命令,这些命令被称为 http方法(http method)。每条 http请求报文都包含一个方法,这个方法会告诉服务器要执行什么动做(获取一个 web 页面、运行一个网关程序、删除一个文件等)。
一些常见的http方法:
GET : 从服务器向客户端发送命名资源
PUT:未来自客户端的数据存储到一个命名的服务器资源中去
DELETE : 从服务器中删除命名资源
POST : 将客户端数据发送到一个服务器网关应用程序.
HEAD : 仅发送命名资源响应中的 Http 首部.
状态码
每条 http 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否须要采起其余动做。
常见的 http 状态码:
200 : ok,文档正确返回.
302 : Redirect(重定向)。到其余地方去获取资源.
404 : Not Found(没找到),没法找到这个资源.
http 报文
http 报文是由一行一行的简单字符组成的。http报文都是纯文本,以下图:
请求报文(request message):从web客户端发往 web服务器的 http报文;
响应报文(response message): 从服务器发往客户端的报文.
报文分为如下三个部分:
一、起始行
报文的第一行就是起始行,在请求报文中用来讲明要作些什么,在响应报文中说明出现了什么状况。
二、首部字段
起始行后面有零个或者多个首部字段。每一个首部字段都包含一个名字和一个值,为了便于解析,二者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首部字段和添加新行同样简单.
三、主体
空行以后就是可选的报文主体了,其中包含了全部类型的数据。请求主体中包括了要发送给web服务器的数据;响应主体中装载了要返回给客户端的数据。主体中能够包含任意的二进制数据,也能够包含文本。
链接
http 是个 应用层协议,http无须要操心网络通讯的具体细节,它把联网的细节都交给了通用、可靠的因特网传输协议 tcp/ip;
tcp 提供了:无差错的数据传输;安序传输(数据老是会按照发送的顺序到达);未分段的数据流(能够在任意时刻以任意尺寸将数据发送出去)。
链接及响应步骤以下:
一、浏览器从 url 中解析出服务器的主机名;
二、浏览器将服务器的主机名转换成服务器的ip地址;
三、浏览器将端口号(如有的话)从url中解析出来;
四、浏览器创建一条与 web服务器的 tcp 链接;
五、浏览器向服务器发送一条 http 请求报文;
六、服务器向浏览器回送一条 http 响应报文;
七、关闭链接,浏览器显示文档;
Web 的结果组件
代理
位于客户端和服务器直接的 http 中间实体,接收全部客户端的 http请求,并将这些请求转发给服务器(可能会对请求进行修改以后转发)。对用户来讲,这些应用程序就是一个代理,表明用户访问服务器。出于安全考虑,一般会将代理做为转发全部 web流量的可信任中间节点使用,代理换能够对请求和响应进行过滤。
缓存
web缓存(web cache) 或者 代理缓存(proxy cache) 是一种特殊的 http 代理服务器,能够将通过代理传送的经常使用文档复制保存起来。下一个请求同一文档的客户端就能够享受缓存的私有副本所提供的的服务了。
网关
网关(gateway)是一种特殊的服务器,做为其余服务器的中间实体使用。一般用于将 http流量转换成其余的协议。网关接受请求时就好像本身是资源的源端服务器用于,客户端可能并不知道本身正在与一个网关进行通讯。