HTTP权威指南:HTTP概述与URL资源详解
2016-09-25
1 min read
CS
Executive Summary
核心观点(金字塔原理)
结论先行: HTTP是Web的基础通信协议,通过URL定位资源、MIME标识类型、TCP/IP传输数据,形成完整的Web资源访问体系。
支撑论点:
- 资源标识体系:MIME类型标记资源格式,URI(URL/URN)统一定位资源位置
- HTTP事务机制:通过方法(GET/POST等)和状态码(200/404等)实现请求-响应交互
- Web架构组件:代理、缓存、网关、隧道、Agent构成完整的HTTP生态系统
SWOT 分析
| 维度 |
分析 |
| S 优势 |
URL提供统一资源定位标准;MIME实现跨平台内容类型识别;基于TCP/IP保证可靠传输 |
| W 劣势 |
URN尚处实验阶段未普及;URL依赖位置导致资源迁移困难 |
| O 机会 |
PURL等技术尝试解决URL位置依赖问题;可扩展的URL方案支持多种协议 |
| T 威胁 |
URL结构暴露服务器路径存在安全隐患;片段标识符不发送服务器可能导致状态不一致 |
适用场景
- Web开发入门者理解HTTP协议基础架构
- 需要设计RESTful API时理解URL规范
- 排查网络请求问题时理解报文结构
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)