LinkinPark
当你的才华撑不起你野心时,那么请潜下心继续学习,心无旁骛,愿多年以后你们我都能成为自己想象的模样。
最近在看HTTP权威指南,这本书有点多的,具体的细节我们可以不用关心,但是大致的一些概念还是应该清楚的。这里我整理下:
  • HTTP——因特网的多媒体信使
HTTP 使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。而对因特网应用程序开发人员来说也同样如此,因为这样就无需担心 HTTP 通信会在传输过程中被破坏、复制或产生畸变了。开发人员可以专注于应用程序特有细节的编写,而不用考虑因特网中存在的一些缺陷和问题。

  • Web客户端和服务器
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地址及端口号,这些属于网络编程中的概念和知识,在这里不做赘述。

posted on 2015-06-08 08:36  LinkinPark  阅读(166)  评论(0编辑  收藏  举报