2

资源

Web服务器是Web资源的容器。Web资源是Web内容的源头。内容资源既可以是静态的Html,图片,js也可以是动态的脚本程序生成的内容。

媒体类型

Web服务器会为所以Http对象类型附加一个MIME类型,当Web浏览器从服务器中取回一个对象时,会先查看其相关的MIME的类型,查看是否可以处理这个对象,浏览器能处理常见的数百种对象类型,例如,显示图片,播放音乐或者使用外部的软件来处理特殊的格式

MIME类型是一种文本标记,表示【主要对象/子类型】,中间通过斜杠来区分

  • html格式为text/html

  • 普通的ascii文本文档为text/plain

  • jpeg图片为image/jpeg类型

  • gif图片为image/gif类型

  • 潘哥的QuickTime视频文件为video/quicktime类型

  • 微软的PowerPoint演示文件为application/vnd.ms-powerpoint类型

URI(统一资源标识符)

主要用来在互联网上标识资源存在的路径为知的,类似显示生活中的地址一样
URI又分为URL和URN

URL 统一资源定位符,URL描述了一台特定的服务器上某资源的特定位置。

cd923a5a-87b4-4883-bebf-ba12b2e56dbc.jpg
一般URL都遵循如下格式

  • URL第一部分称为方案,说明访问资源使用的协议类型,例如:http://

  • 第二部分给出在互联网上的位置,例如:www.joes-hardware.com

  • 剩下的部分指定了在该服务器上的某个资源,例如:/specials/saw-blade.gif

URN统一资源名,作为特定的名称访问特定的内容,与资源地址无关,URN处于试验阶段,本文大部分试验URL来做说明。

事务

一个HTTP事务由一条访问请求命令和响应结果组成,简单理解就是一次请求的往返。
图片描述

方法

http支持几种不同的请求命令,这些命令统称为http方法(http method),某个请求都包含一个方法,这些请求会告诉服务器执行什么类型的动作。
常见的http方法

  • GET方法 从服务器向客户端发送命名资源

  • PUT 将来自客户端的数据存储到一个命名服务器资源中去

  • DELETE 从服务器删除命名资源

  • POST 将客户端的发送的数据发送到一个服务器的网关应用程序(即PHP)

  • HEAD 仅发送命名资源响应中的HTTP头部

状态码

每条http响应报文返回都会携带一个响应状态码,告知客户端此次请求服务端处理的状态
常见http的状态码
200 OK,请求成功,返回资源
302 Redirect(重定向),到其他地方获取数据资源
404 Not Found(招不到),无法找到该资源

解释性短语,每个状态码都会附带一条解释性的文本短语,该短语主要用于描述而已

常见短语,下列短语不一样,但是都是200的状态描述

  • 200 ok

  • 200 Document attached

  • 200 Success

  • All`s cool, dude

Web页面由多个对象组成

即一个Web页面统称由多个资源组成,即一个Web页面有html、js、图片、视频等, 所以一个Web页面不是简单的当个资源,而是多个资源的集合

图片描述

报文

http报文由纯文本构成,不是二进制码,所以非常方便人们阅读(前提是学习http协议)

图片描述
客户端向服务器发送的http报文称为请求报文
从服务器想客户端发送的http报文称为响应报文
除了上面两种,没有其他的了
http请求报文和响应报文很类似,都包括下面三个部分

  • 起始行

    报文的第一行就是起始行,在`请求报文`中说明要做什么,在`响应报文`中说明出现了什么情况
  • 首部字段

    起始行后面接零个或多个字段,每个字段都带有一个名字和值,形成键值对形式(key:value),首部由一个空行结束
  • 主体

    空行之后就是可选的报文主体了,包含了所有的数据类型。`请求主体`中包含了要发给服务器的数据,`响应主体`中装载了要返回给客户端的数据。
    起始行和首部字段都是由文本形式且都是结构化的数据,而主体不一样,可以包含`二进制`数据(例如图片、视频、音频、程序),主体也可以包含文本
    

简单报文实例

下图是一个简单的报文请求实例,可以看到请求报文中的请求中的请求起始行,请求首部,和响应报文中的响应起始行,响应首部和响应主体。

注意,这个请求报文使用的get方式,所以没有请求主体!
注意,响应报文中Content-type: text/html即告诉浏览器该返回数据的主要对象(text)和子类型(html)

图片描述

关于tcpip

tcpip的篇章很大,http权威只是简单说了几点,这里就说下tcpip的特点,更多资料要查询专门讲tcpip的书籍

  • 无差错的数据传输

  • 按序传输(数据总是按照发发送的顺序到达)

  • 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)

http的协议版本

  • HTTP/0.9
    只支持GET方法,不支持多媒体MIME类型,各种HTTP首部或版本号,只是为了实现获取简单HTML对象而已

  • HTTP/1.0
    第一个广泛使用的HTTP版本,新增了版本号,各种HTTP首部、额外的方法,及多媒体处理等

  • HTTP/1.0+(非官方的标准)
    新增了keep-alive连接,虚拟主机,代理连接支持

  • HTTP/1.1
    1.1的版本修正了HTTP设计的各种缺陷,引入重要的性能优化等,当前互联网主流的版本

  • HTTP-NG(又名HTTP/2.0)
    继1.1原型的建议,重点关注性能及强大的服务逻辑远程执行框架,未来再说

Web的结构组件

上面说的都是两个Web应用程序(客户端浏览器和服务端Web服务器)二者相互发报文来实现基本事务处理。其实在互联网上要和很多Web应用程序交互,还有其他的应用程序

  • 代理
    位于客户端和服务器之间的http中间实体

  • 缓存
    http仓库,使经常被访问的网页可以保存在离客户端更近的地方

  • 网关
    连接其他应用程序的特殊Web服务器

  • 隧道
    对http报文进行盲装发的特殊代理

  • Agent代理
    发起自动http请求的半智能web客户端


甄城
1.2k 声望34 粉丝