最近在看HTTP权威指南,这本书有点多的,具体的细节我们可以不用关心,但是大致的一些概念还是应该清楚的。这里我整理下:
HTTP 使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。而对因特网应用程序开发人员来说也同样如此,因为这样就无需担心 HTTP 通信会在传输过程中被破坏、复制或产生畸变了。开发人员可以专注于应用程序特有细节的编写,而不用考虑因特网中存在的一些缺陷和问题。
Web 内容都是存储在 Web 服务器上的。Web 服务器所使用的是 HTTP 协议,因此经常会被称为 HTTP 服务器。这些 HTTP 服务器存储了因特网中的数据,如果HTTP 客户端发出请求的话,它们会提供数据。客户端向服务器发送 HTTP 请求,服务器会在 HTTP 响应中回送所请求的数据,如下图所示。HTTP 客户端和 HTTP服务器共同构成了万维网的基本组件。

可能你每天都在使用 HTTP 客户端。最常见的客户端就是 Web 浏览器,比如微软的Internet Explorer 或网景的 Navigator。Web 浏览器向服务器请求 HTTP 对象,并将这些对象显示在你的屏幕上。浏览一个页面时(比如 http://www.oreilly.com/index.html) ,浏览器会向服务器www.oreilly.com 发送一条 HTTP 请求 。服务器会去寻找所期望的对象(在这个例子中就是 /index.html) ,如果成功,就将对象、对象类型、对象长度以及其他一些信息放在
HTTP 响应中发送给客户端。
Web 服务器是 Web 资源(Web resource)的宿主。Web 资源是 Web 内容的源头。最简单的 Web 资源就是 Web 服务器文件系统中的静态文件。这些文件可以包含任意内容:文本文件、HTML 文件、微软的 Word 文件、Adobe 的 Acrobat 文件、JPEG 图片文件、AVI 电影文件,或所有其他你能够想到的格式。但资源不一定非得是静态文件。资源还可以是根据需要生成内容的软件程序。这些动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。它们可以为你显示照相机中活生生的照片,也可以帮你进行股票交易,搜索房产数据库,或者从在线商店中购买礼物。

总之,所有类型的内容来源都是资源。包含公司销售预测电子表格的文件是一种资源。扫描本地公共图书馆书架的 Web 网关是一种资源。因特网搜索引擎也是一种资源。
因特网上有数千种不同的数据类型,HTTP 仔细地给每种要通过 Web 传输的对象都打上了名为 MIME 类型(MIME type)的数据格式标签。最初设计 MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME 在电子邮件系统中工作得非常好,因此 HTTP 也采纳了它,用它来描述并标记多媒体内容。Web 服务器会为所有 HTTP 对象数据附加一个 MIME 类型(参见图 1-3) 。当 Web浏览器从服务器中取回一个对象时,会去查看相关的
MIME 类型,看看它是否知道
应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化 HTML 文件、通过计算机声卡播放音频文件,或者运行外部MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。

HTML 格式的文本文档由 text/html 类型来标记。
普通的 ASCII 文本文档由 text/plain 类型来标记。
JPEG 版本的图片为 image/jpeg 类型。
GIF 格式的图片为 image/gif 类型。
Apple 的 QuickTime 电影为 video/quicktime 类型。
微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型。
在j2e中操作Excel,需要设置ContentType为application/msexcel,其实就是这里mime类型。
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method) 。每条 HTTP 请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取一个 Web 页面、运行一个网关程序、删除一个文件等) 。
一些常见的HTTP方法:
HTTP方法 描 述
GET 从服务器向客户端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应用程序
HEAD 仅发送命名资源响应中的 HTTP 首部
每条 HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。表 1-3 显示了几种常见的状态码。
一些常见的HTTP状态码
HTTP状态码 描 述
200 OK。
文档正确返回
302 Redirect(重定向) 。
到其他地方去获取资源
404 Not Found(没找到) 。
无法找到这个资源
伴随着每个数字状态码,HTTP 还会发送一条解释性的“原因短语”文本 。包含文本短语主要是为了进行描述,所有的处理过程使用的都是数字码。
HTTP 软件处理下列状态码和原因短语的方式是一样的。
200 OK
200 Document attached
200 Success
200 All’s cool, dude
HTTP 报文是由一行一行的简单字符串组成的。HTTP 报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写1 。下图显示了一个简单事务所使用的 HTTP 报文。

从 Web 客户端发往 Web 服务器的 HTTP 报文称为请求报文(request message) 。从服务器发往客户端的报文称为响应报文(response message) ,此外没有其他类型的
HTTP 报文。HTTP 请求和响应报文的格式很类似。
HTTP 报文包括以下三个部分。
起始行 :
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
首部字段 :
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单。
主体 :
空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给 Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序) 。当然,主体中也可以包含文本。
TCP/IP,连接、IP地址及端口号,这些属于网络编程中的概念和知识,在这里不做赘述。
HTTP相关概念
原文:http://blog.csdn.net/u011794238/article/details/46407909