zoukankan      html  css  js  c++  java
  • HTTP权威指南(读书笔记一)

    HTTP权威指南

    第一部分:HTTP:Web的基础

    本部分主要概述HTTP 协议。接下来的4章介绍了Web 的基础构件以及HTTP的核 心技术。
    • 第1 章简要概述HTTP。
    • 第2 章详细介绍了URL 的格式,以及URL 在因特网上命名的各种类型的资源, 并对其向URN 的发展作了概要介绍。
    • 第3 章详细说明了用来传输Web 内容的HTTP 报文。
    • 第4 章讨论了一些通过HTTP 管理TCP 连接时常被误解且很少有文档说明的规 则和行为。

    第1章 HTTP概述

    本章是对HTTP 的简要介绍。在本章中可以看到Web 应用程序是如何使用HTTP 进 行通信的,这样就可以对HTTP 如何完成其工作有个大概印象。我们将特别介绍以 下方面的内容:
    • Web 客户端与服务器是如何通信的;
    • (表示Web 内容的)资源来自何方
    • Web 事务是怎样工作的;
    • HTTP 通信所使用的报文格式;
    • 底层TCP 网络传输;
    • 不同的HTTP 协议变体;
    • 因特网上安装的大量HTTP 架构组件中的一部分。

    1.1 HTTP——因特网的多媒体信使

    1.2 Web客户端和服务器

    1.3 资源

    Web 服务器是Web 资源(Web resource)的宿主。Web 资源是Web 内容的源头。 最简单的Web 资源就是Web 服务器文件系统中的静态文件。这些文件可以包含 任意内容:文本文件、HTML 文件、微软的Word 文件、Adobe 的Acrobat 文件、 JPEG 图片文件、AVI 电影文件,或所有其他你能够想到的格式。 但资源不一定非得是静态文件。资源还可以是根据需要生成内容的软件程序。这些 动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。

    1.3.1 媒体类型

    因特网上有数千种不同的数据类型,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 类型。
    常见的MIME 类型有数百个,实验性或用途有限的MIME 类型则更多。附录D 提 供了一个非常完整的MIME 类型列表。

    1.3.2 URI

    每个Web 服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是 什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。 URI 就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。

    1.3.3 URL

    统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器 上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。 图1-4 显示了URL 如何精确地说明某资源的位置以及如何去访问它。


    表1-1 URL实例  

    URL 描  述
    http://www.oreilly.com/index.html O’Reilly & Associates 公司的主URL
    http://www.yahoo.com/images/logo.gif Yahoo! 的Web 站点标志URL
    http://www.joes-hardware.com/inventory-check.
    cgi?item=12731
    一个查看库存条目#12731 是否有现货的程序的
    URL
    ftp://joe:tools4u@ftp.joes-hardware.com/lockingpliers.
    gif
    以密码保护的FTP 作为访问协议的lockingpliers.
    gif 图片文件的URL

    大部分URL 都遵循一种标准格式,这种格式包含三个部分。
    • URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这
    部分通常就是HTTP 协议(http://)。
    • 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
    • 其余部分指定了Web 服务器上的某个资源(比如,/specials/saw-blade.gif)。
    现在,几乎所有的URI 都是URL。 

    1.3.4 URN

    URI 的第二种形式就是统一资源名(URN)。URN 是作为特定内容的唯一名称使用 的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬 移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
    比 如,不论因特网标准文档RFC 2141 位于何处(甚至可以将其复制到多个地方), 都可以用下列URN 来命名它: urn:ietf:rfc:2141 URN 仍然处于试验阶段,还未大范围使用。为了更有效地工作,URN 需要一个支 撑架构来解析资源的位置。而此类架构的缺乏也延缓了其被采用的进度。

    1.4 事务

    一个HTTP 事务由一条(从客户端发往服务器的)请求命令和一个(从服务器 发回客户端的)响应结果组成。这种通信是通过名为HTTP 报文(HTTP message) 的格式化数据块进行的
    包含命令和URI的HTTP请求报文:

                 |------》     GET /specials/saw-blade.gif HTTP/1.0 -----|

                 |------》      Host: www.joes-hardware.com          -------|--------》  www.joes-hardware.com

    客户端 --|                                      |

                 |      |---    HTTP/1.0 200 OK    |                     | 

                 |《--|---    Content-type: image/gif  |  -----《---------------------------------------------  |

                       |---    Content-length: 8572      |              包含事务结果的HTTP响应报文

    1.4.1 方法

    HTTP 支持几种不同的请求命令,这些命令被称为HTTP 方法(HTTP method)。每 条HTTP 请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取 一个Web 页面、运行一个网关程序、删除一个文件等)。

    HTTP方法 描  述
    GET 从服务器向客户端发送命名资源
    PUT 将来自客户端的数据存储到一个命名的服务器资源中去
    DELETE 从服务器中删除命名资源
    POST 将客户端数据发送到一个服务器网关应用程序
    HEAD 仅发送命名资源响应中的HTTP 首部


    表1-2 一些常见的HTTP方法       

    1.4.2 状态码

    每条HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码, 告知客户端请求是否成功,或者是否需要采取其他动作。

    表1-3 显示了几种常见的 状态码。

    HTTP状态码 描  述
    200 OK。文档正确返回
    302 Redirect(重定向)。到其他地方去获取资源
    404 Not Found(没找到)。无法找到这个资源

                                        表1-3 一些常见的HTTP状态码   

    伴随着每个数字状态码,HTTP 还会发送一条解释性的“原因短语”文本(参见图 1-5 中的响应报文)。包含文本短语主要是为了进行描述,所有的处理过程使用的都 是数字码。

    HTTP 软件处理下列状态码和原因短语的方式是一样的。

    200 OK

    200 Document attached

    200 Success

    200 All’s cool, dude

    1.4.3 Web页面中可以包含多个对象

    复合Web 页面要为每个嵌入式资源使用一个单独的HTTP 事务

    1.5 报文

    现在我们来快速浏览一下HTTP 请求和响应报文的结构。第3 章会深入研究HTTP 报文。

    HTTP 报文是由一行一行的简单字符串组成的。HTTP 报文都是纯文本,不是二进 制代码,所以人们可以很方便地对其进行读写1。

    图1-7 显示了一个简单事务所使用 的HTTP 报文。

      (a) 请求报文                (b) 响应报文

    GET /test/hi-there.txt HTTP/1.0   起始行    HTTP/1.0 200 OK

    Accept: text/*           首部      Content-type: text/plain

    Accept-Language: en,fr           主体      Content-length: 19 Hi! I’m a message!   

    图1-7 由一行行的简单文本结构组成的HTTP 报文

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

  • 相关阅读:
    [转]数值分析——多项式插值之Lagrange插值
    [转]上拉电阻&下拉电阻&高阻态
    [转]Verilog学习笔记基本语法篇(十三)...............Gate门
    Spring MVC中的Controller是Serlvet吗?
    preparestatement和statement的区别&&简单的SQL注入
    jquery局部变量和全局变量的错误
    js 中{},[]中括号,大括号使用详解
    Java数据库学习之SQL语句动态拼接
    jquery中关键字写错导致的错误——dataType写成dateType(data写成date)
    一次隐蔽的while死循环
  • 原文地址:https://www.cnblogs.com/Losers-AFC/p/3325925.html
Copyright © 2011-2022 走看看