HTTP服务器存储了因特网中的数据,若是客户端发出请求的话,它们会提供数据。客户端向服务器发送一条HTTP请求,服务器会去寻找所指望的对象,若是成功,就将对象、对象类型、对象长度、以及其余一些信息放在HTTP响应中发送给客户端。
数据库
Web服务器是Web资源(resource)的宿主,Web资源是Web内容的源头。最简单的Web资源就是Web服务器文件系统中的静态文件;资源还能够是根据须要生成内容的软件程序,这些动态内容资源能够根据你的身份、所请求的信息或天天的不一样时段来产生内容。
浏览器
因特网上有数千种不一样的数据类型,HTTP仔细地给每种要经过Web传输的对象都打上了名为MIME类型(MIME Type)的数据格式标签。Web服务器会在全部HTTP对象数据附加一个MIME类型,当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。
缓存
MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型。最初设计MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)是为了解决在不一样的电子邮件之间搬移报文时存在的问题。
安全
每一个Web服务器资源都有一个名字,服务器资源名被成为URI(Uniform Resource Identifier,统一资源标识符)。URI就像因特网上的邮政地址同样,在世界范围内惟一标识并定位信息资源。给定了URI,HTTP就能够解析出对象。URI有两种形式,分别称为URL和URN。
性能优化
URL(Uniform Resource Locator,统一资源定位符)是资源标识符最多见的形式。URL描述了一台特定服务器上某资源的特定位置,它们能够明确说明如何从一个精确、固定的位置获取资源。大部分URL都遵循一种标准格式,这种格式包含三个部分。如今,几乎全部的URI都是URL。
服务器
一个HTTP事务是由一条请求命令(从客户端发往服务器)和一个响应结果(从服务器发回客户端)组成,这种通讯是经过名为HTTP报文(HTTP message)的格式化数据块进行的。应用程序完成一项任务时一般会发布多个HTTP事务。
网络
HTTP支持几种不一样的请求命令,这些命令被称为HTTP方法(HTTP method)。每条HTTP请求报文都包含一个方法,这个方法会告诉服务器要执行什么动做。
架构
每条HTTP响应报文返回时都会携带一个状态码,状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否须要采起其余动做。伴随着每一个数字状态吗,HTTP还会发送一条解释性的“缘由短语”文本
框架
HTTP报文是由一行一行的简单字符串组成的,HTTP报文是纯文本,不是二进制代码,因此能够方便地对其进行读写。从Web客户端发往Web服务器的HTTP报文称为请求报文(request message)。从服务器发往客户端的报文称为响应报文(response message),此外没有其余类型的HTTP报文。HTTP请求和响应报文的格式很相似。
ide
# 请求报文 GET /test/hi-there.txt HTTP/1.0 (起始行) ------------------------------- Accept: text/* (首部) Accept-Language: en, fr -------------------------------
# 响应报文 HTTP/1.0 200 OK (起始行) ------------------------------- Content-type: text/plain (首部) Content-length: 19 ------------------------------- Hi! I'm a message! (主体)
报文包括如下三个部分:
HTTP报文是经过TCP(Transmission Control Protocol,传输控制协议)链接从一个地方搬移到另外一个地方去的。HTTP是个应用层协议,HTTP无需操心网络通讯的具体细节;把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP。只要创建了TCP链接,客户端和服务器之间的报文交换就不会丢失、不会被破坏,也不会在接收时出现错序了。
TCP提供了:
在HTTP客户端向服务器发送报文以前,须要经过IP(Internet Protocol,网际协议)地址和端口号在客户端和服务器之间创建一条TCP/IP链接。在TCP中,须要知道服务器的IP地址,以及与服务器上运行的特定软件相关的TCP端口号。主机名就是P地址比较人性化的别称,能够经过一种称为DNS(Domain Name Service,域名服务)的机制方便地将主机名转换为IP地址。HTTP的URL中没有端口号时,能够假设默认端口号是80。
步骤以下:
如今使用的HTTP协议有几个版本。HTTP应用程序要尽可能强健地处理各类不一样的HTTP协议变体。目前仍在使用的版本以下。
位于客户端和服务器之间的HTTP中间实体。代理位于客户端和服务器之间,接收全部客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求进行修改后转发)。代理还能够对请求和响应进行过滤。
HTTP的仓库,使经常使用页面的副本能够保存在离客户端更近的地方。Web缓存(Web cache)或代理缓存(proxy cache)是一种特殊的HTTP代理服务器,能够将通过代理传送的经常使用文档复制保存起来。下一个请求同一文档的客户端就能够享受缓存的私有副本所提供的服务了。客户端从附近的缓存下载文档会比从远程Web服务器下载快的多。HTTP定义了不少功能,使得缓存更加高效,并规范了文档的新鲜度和缓存内容的隐私性。
链接其余应用程序的特殊Web服务器。网关(Gateway)是一种特殊的服务器,做为其余服务器的中间实体使用。一般用于将HTTP流量转换成其余的协议。网关接受请求时就好像本身是资源的源端服务器同样。客户端可能并不知道本身正在与一个网关进行通讯。
<p>例如,一个HTTP/FTP网关会经过HTTP请求接收对FTP URI的请求,但经过FTP协议来获取文档。获得的文档会被封装成一条HTTP报文,发送给客户端</p>
对HTTP通讯报文进行盲转发的特殊代理。隧道(tunnel)是创建起来以后,就会在两条链接之间对原始数据进行盲转发的HTTP应用程序。HTTP隧道一般用来在一条或多条HTTP链接上转发非HTTP数据,转发时不会窥探数据。
HTTP隧道的一种常见用途是经过HTTP链接承载SSL加密的SSL(Secure Sockets Layer,安全套接字层)流量,这样SSL流量就能够穿过只容许Web流量经过的防火墙了。HTTP/SSL隧道收到一条HTTP请求,要求创建一条到目的地址和端口的输出链接,而后在HTTP信道上经过隧道传输加密的SSL流量,这样就能够将其盲转发到目的服务器上去了。
发起自动HTTP请求的半智能Web客户端。用户Agent代理(或者简称为Agent代理)是表明用户发起HTTP请求的客户端程序。全部发布Web请求的应用程序都是HTTP Agent代理。例如:Web浏览器。
有些本身会在Web上闲逛的自动用户Agent代理,能够在无人监视的状况下发布HTTP事务并获取内容。这些自动代理的名字一般都很生动,好比"网络蜘蛛"(spiders)或者"Web机器人"(Web robots)。网络蜘蛛会在Web上闲逛,搜集信息以构建有效的Web内容档案,好比一个搜索引擎的数据库或者为比较购物机器人生成的产品目录。