资源
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描述了一台特定的服务器上某资源的特定位置。
一般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客户端
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。