HTTP权威指南-1-2
2016-09-25
1 HTTP概述
资源
事务
- HTTP方法 常见的有: GET/PUT/DELETE/POST/HEAD
- 状态码: 200/302/404
报文
连接
HTTP |
应用层 |
TCP |
传输层 |
IP |
网络层 |
网络特有的链路借口层 |
数据链路层 |
物理网络硬件 |
物理层 |
Web的结构组件
- 代理: 位于客户端和服务器之间的HTTP中间实体,可能会对请求进行修改后转发。
- 代理缓存: HTTP的仓库,使常用的页面副本可以保存在离客户端更近的地方。
- 网关: 连接其他应用程序的特殊Web服务器,通常用于将HTTP流量转换成其他的协议进行通信 。
- 隧道: 对HTTP通信报文进行盲目转发的特殊代理,通常与SSL配合建立一条加密HTTP/SSL隧道。
- Agent代理: 发起自动HTTP请求的半智能Web客户端,指代表用户发起HTTP请求的客户端程序,通常指浏览器,还有很多其他类型的Agent代理,比如爬虫等。
2 URL与资源
- URL资源命名方式:
方案://服务器位置//资源路径
- URL语法:
<scheme>://<user>:<password>@<host>:<port>/><path>;<params>?<query>#<frag>
组件 |
描述 |
方案 |
访问服务器时使用的协议,http/ftp/… |
用户 |
某些方案访问资源时需要的用户名 |
密码 |
用户名后面可能包含的密码,中间由冒号(:)分隔 |
主机 |
资源宿主服务器的主机名或者IP地址 |
端口 |
资源宿主服务器正在监听的端口号,http 80 https 443 |
路径 |
服务器上资源的本地名 |
参数 |
某些方案用这个组件指定输入参数,参数为名/值对,多个时用’&’分隔 |
查询 |
使用’?’分隔与路径其余部分 |
片段 |
一小片或一部分资源的名字,引用对象时,不会将frag字段传送给服务器,这个字段是在客户端内部使用的,通过字符’#’将其与URL的其余部分分隔开来 |
frag举例: http://www.example.com/blog/#it 当点击这个连接时#it
不会发送给服务器,发送给服务器的是http://www.example.com,服务器将返回整个HTML页面,浏览器渲染后向下滚动并从名为#it
的片段处开始显示。
自动扩展URL
方案 |
描述 |
http |
超文本传输协议方案,默认端口80,格式http://<host>:<port>/<path>?<query>#<frag> |
https |
在http的基础上使用了SSL,默认端口443,格式https://<host>:<port>/<path>?<query>#<frag> |
mailto |
Mailto URL指向的是E-mail地址,与其它方案都有所不同,格式mailto:<RFC-822-addr-spec> |
ftp |
文本上传协议URL可以用来从FTP服务器上下载或者上传文件,并获取FTP的服务器的目录结构内容列表,格式ftp://<user>:<password>@<host>:<port>/<path>;<params> |
rtsp,rtspu |
RTSP URL是可以通过实时流传输协议(Real Time Streaming Protocol)解析的音/视频媒体资源的标识符。方案rtspu中的u表示使用的UDP 协议来获取资源的。格式rtsp://<user>:<password>@<host>:<port>/<path> rtspu就是方案名不同。 |
file |
此方案表示一台指定主机上可以直接访问文件,比如通常的文件共享功能。格式file:<host>/<path> |
news |
根据RFC1036定义,方案news用来访问一些特定文章或新闻组,它有独特性质,news URL自身包含的信息不足以对资源进行定位。格式news:<newgroup> 示例news:rec.arts.startrek |
telnet |
方案telnet用于访问交互业务,它表示的并不是对象自身,而是可通过telnet协议访问的交互式应用程序(资源)。格式telnet://<user>:<password>@<host>:<port>/ |
未来展望
- URN (uniform resource name)
- PURL (persistent uniform resource locators) 是用URL来实现URN功能的例子。基本思想是在搜索资源的过程中引入另一个中间层,通过一个中间资源定位符服务器对资源的实际URL进行登记和跟踪。客户端可以向定位符请求一个永久URL,定位符可以以一个资源作为响应,将客户端重定向到资源当前实际的URL上去。更多purl信息PURL
nc(metcat)