HTTP权威指南读书笔记(一)

媒体类型:

因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过WEB传输的对象都打上了名为MIME类型的数据格式标签。最初设计MIME(Multipurpose Internet Mail Extension 多用途的因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,因此HTTP也采纳了它,用它来描述并标记多媒体内容。

WEB服务器会为所有的HTTP对象数据附加一个MIME类型。当web浏览器从服务器取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种觉的对象类型:显示图片文件、解析并格式化HTML文件、通过计算机声卡播放音频文件,或者运行外部的软件来处理特殊格式数据。

MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。

  • HTML格式的文本文档 由text/html类型来标记
  • 普通的ASCII文本文档由text/plain类型来标记
  • JPEG格式的图片为image/gif类型

QQ图片20130721135951

 

URI

每一个web服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。

服务器资源名被称为綂一资源标识符(Uniform Resource Identifier),在世界范围内唯一标识并定位信息资源。

http://linuxsogood.org/linux/shell/493.html

这是我博客里的一个URI,URI有两种形式,分别称为URL和URN。

URL 统一资源定位符是资源标识符中最常见的形式。URL描述了一台特定服务器上某资源的特定位置。

大部分URL都遵循一种标准格式 ,这种模式包含三个部分

  • URL的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型,这部分通常就是HTTP协议(http://)
  • 第二部分给出了服务器的因特网地址,比如www.gm10861.com
  • 其余部分指定了Web服务器上的某个资源,比如/linux/shell/493.html

URL的语法: 大多数URL方案都建立在以下9个部分构成的通用格式上

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

几乎没有哪个URL中包含了以上所有的组件。URL最重要的3个部分是方案(scheme)、主机(host)、和路径(host)

  • 方案: 访问服务器以获取资源时要使用哪种协议
  • 用户:某些方案访问资源时需要的用户名
  • 密码:用户名后面可能要包含的密码,中间由冒号分隔
  • 主机:资源宿主服务器的主机名或点分IP地址
  • 端口:资源宿主服务器正在监听的端口号,很多方案都有默认端口号(HTTP默认端口号为80)
  • 路径:服务器上资源的本地名,由一个斜杠将其与前面的URL组件分隔开,路径组件的语法是与服务器和方案有关的。
  • 参数:某些方案会用这个组件来指定输入参数。参数为键/值对。URL中可以包含多个参数字段,它们相互之间以及与路径的其余部分用分号分隔
  • 查询:某些方案会用到这个组件传送参数以激活应用程序(比如数据库、公告板、搜索引擎以及其它)。查询组件的内容没有通用格式,用字符?将其与URL的其它组件分隔开来
  • 版段:一小片或一部分资源的名字。引用对象时,不会交接frag字段传送给服务器,这个字段是在客户端内部使用的。通过字符#将其与URL的其余部分分隔开来

URN

URI的第二种形式就是统一资源名(URN)。URL是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。比如,不论因特网标准文档RFC2141位于何处,都可以通过URN来命名它:

urn:ietf:rfc:2141

URN仍然处理试验阶段,还没大范围使用。为了更有效的工作,URN需要一个支撑架构来解析资源的位置。

事务

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

方法

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method)。每条HTTP请求报文都包含一个方法。这个方法告诉服务器执行什么动作。

常见的一些HTTP方法

  • GET            获取服务器端资源
  • PUT           向服器发送资源,并且存到服务器里
  • DELETE     从服务器端删除一个资源
  • POST          将数据从客户端发送到服务器端,一般用于表单提交
  • HEAD         仅发送命令资源响应中的HTTP首部,即只获取服务器响应的首部

状态码

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

比如:200 OK 、404 not found 等

报文

HTTP报文是由一行一行的简单字符串组成的,HTTP报文都是纯文本,不是二进制代码。

从WEB客户端发往WEB服务器的HTTP报文称为请求报文(request message)。

从服务器发往客户端的报文称为响应报文(response message)

此外没有其它类型的HTTP报文。请求报文和响应报文的格式非常类似

HTTP报文包括以下三个部分

起始行:报文的第一行就是起始行,在请求报文中来说明要做些什么,在响应报文中说明出现了什么情况

首部字段:起始行后面有零个或多个道部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号来分隔。

主体:主体包括了所有类型的数据。请求主体中包括了要发送给Web服务器的数据;响应主题中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的。而主体则不同,主体中可以包含任意的二进制数据,当然,主体也可以包含文本。

 连接

HTTP是个应用层协议。HTTP无需操心网络通信的具体细节; 它把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP

TCP提供了

  • 无差错的数据传输
  • 按序传输(数据总是会按照发送的顺序到达)
  • 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)

用网络术语来说,HTTP协议位于TCP的上层。HTTP使用TCP来传输其报文数据。与之类似,TCP则位于IP的上层。

一个完整的HTTP请求及响应过程如下

  1. 浏览器从URL中解析出服务器的主机名
  2. 浏览器将服务器的主机名转换为服务器的IP地址(通过DNS)
  3. 浏览器将端口号从URL中解析出来
  4. 浏览器建立一条与WEB服务器的TCP连接
  5. 浏览器向服务器发送一条HTTP请求报文
  6. 服务器向浏览器回头一条HTTP响应报文
  7. 关闭连接,浏览器显示文档

协议版本

  • HTTP/0.9  HTTP的1991原型版称为HTTP/0.9。这个协议有很多严重的设计缺陷,只应该于老客户端交互,HTTP/0.9只支持GET方法,不支持多媒体内容的MIME类型,各种HTTP首部,或者版本号。
  • HTTP/1.0   1.0是第一个得到广泛应用的HTTP版本。HTTP/1.0添加了版本号、各种HTTP首部、一些额外的方法,以及对多某体对象的处理。
  • HTTP/1.0+  在20世纪90年代中叶,很多流行的web客户端和服务器都在飞快地向HTTP中添加各种特性,以满足快速扩张且在商业上十分成功的万维网的需要。其中很多特性,包括持久的keep-alive连接、虚拟主机支持以及代理连接支持都被加入到HTTPp这中,并成为非官方的事实标准。这种非正式的HTTP扩展版通常称为HTTP/1.0+
  • HTTP/1.1    HTTP/1.1重点关注的是校正HTTP设计中的结构性缺陷,明确语义、引入重要的异能优化措施,并删除一些不好的特性。HTTP/1.1还包含了对20世纪90年代末正在发展中的更复杂的Web应用程序和部署方式的支持。HTTP/1.1是当前使用的HTTP版本
  • HTTP-NG(又名HTTP/2.0) HTTP-NG是HTTP/1.1后继结构的原型建议,它重点关注的是性能的大幅优化,以及更强大的服务逻辑远程执行框架。HTTP-NG的研究工作终止于1998年。

 

 

  1 comment for “HTTP权威指南读书笔记(一)

  1. 2019 年 4 月 17 日 at 06:20
    Your comment is awaiting moderation.

    Regards! Excellent information!
    http://canadianpharmacyntx.com/
    best online pharmacies canada canadian online pharmacies canada pharmacies online prescriptions canadian viagra
    mexican pharmacies online
    the canadian pharmacy
    trusted overseas pharmacies
    canada meds
    canadian pharmacy meds
    pharmacy canada

  2. 2019 年 4 月 17 日 at 04:07
    Your comment is awaiting moderation.

    Really tons of useful knowledge.
    http://canadianpharmacymim.com/
    canadian drug canada drugs online pharmacy no prescription needed london drugs canada
    canadian pharmacy 365
    canadian pharmacy reviews
    drug stores near me
    canada meds
    mail order pharmacy
    ed meds online

  3. 2019 年 4 月 17 日 at 03:40
  4. 2019 年 4 月 17 日 at 03:02
  5. 2019 年 4 月 17 日 at 02:15
  6. 2019 年 4 月 16 日 at 22:24
    Your comment is awaiting moderation.

    Regards! I like it!
    http://canadianpharmacysilo.com/
    pharmacy online mexico
    canadian pharcharmy
    online rx pharmacy
    canadian pharmacies

  7. Pingback: writeaessay

发表评论

电子邮件地址不会被公开。 必填项已用*标注