
HTTP
文章平均质量分 65
gzf6
这个作者很懒,什么都没留下…
展开
-
2.5 方案/协议列表
已定义的 URI 方案有很多,但常用的并不多。一般来说,有相关的 RFC 对其解释说明的 URI 方案更常用一些,但确实也有少数由主导软件公司(特别是 Netscape 和Microsoft)开发,但未被正式发布的方案得到了广泛应用。W3C 维护的URI列表:http://www.w3.org/Addressing/schemes.htmlIANA 维护的URI列表:http://www.ian原创 2017-10-17 16:53:21 · 353 阅读 · 0 评论 -
2.6 URN(供了解)
URL 是一种强有力的工具。它可以用来命名所有现存对象,而且可以很方便地包含一些新格式。URL 还提供了一种可以在各种因特网协议间共享的统一命名机制。但 URL 并不完美。它们表示的是实际的地址,而不是准确的名字。这就意味着 URL 会告诉你资源此时处于什么位置。它会为你提供特定端口上特定服务器的名字,告诉你在何处可以找到这个资源。这种方案的缺点在于如果资源被移走了,URL 也就不再有效了。那时,原创 2017-10-17 16:55:03 · 1075 阅读 · 1 评论 -
3.3 HTTP 方法
下面对一些基本 HTTP 方法进行更为深入的讨论。注意,并不是每个服务器都实现了所有的方法。如果一台服务器要与 HTTP 1.1 兼容,那么只要为其资源实现 GET 方法和 HEAD 方法就可以了。即使服务器实现了所有这些方法,这些方法的使用很可能也是受限的。例如,支持 DELETE 方法或 PUT 方法(本节稍后介绍)的服务器可能并不希望任何人都能够删除或存储资源。这些限制通常都是在服务器的配置原创 2017-10-18 19:08:12 · 500 阅读 · 0 评论 -
3.1 报文流
HTTP 报文的基本概念见1.4 报文HTTP 报文是在 HTTP 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文在客户端、服务器和代理之间流动。1. 报文流入源端服务器HTTP 使用术语流入(inbound)和流出(outbound)来描述事务处理(transaction)原创 2017-10-18 18:57:29 · 723 阅读 · 0 评论 -
3.2 报文的组成部分
HTTP 报文是简单的格式化数据块。它们由三个部分组成: 对报文进行描述的起始行(start line);包含属性的首部(header)块;可选的、包含数据的主体(body)部分。 起始行和首部就是由行分隔的 ASCII 文本。每行都以一个由两个字符组成的“行终止序列”作为结束,其中包括一个回车符(ASCII 码 13)和一个换行符(ASCII 码 10)。 这个行终止序列可以写做 CRLF。原创 2017-10-18 19:01:50 · 4922 阅读 · 0 评论 -
3.4 HTTP 状态码
状态码分类: 整体范围 已定义范围 分类 100 ~ 199 100 ~ 101 信息提示 200 ~ 299 200 ~ 206 成功 300 ~ 399 300 ~ 305 重定向 400 ~ 499 400 ~ 415 客户端错误 500 ~ 599 500 ~ 505 服务器错误1. 100~199——信息性状态码HT原创 2017-10-18 21:39:01 · 294 阅读 · 0 评论 -
3.5 首部
HTTP 首部字段向请求和响应报文中添加了一些附加信息。本质上来说,它们只是一些名 / 值对的列表。首部分类: 通用首部:既可以出现在请求报文中,也可以出现在响应报文中。可以在客户端、服务器和其他应用程序之间提供一些非常有用的通用功能。请求首部:提供更多有关请求的信息。为服务器提供信息。响应首部:提供更多有关响应的信息。为客户端提供信息。实体首部:描述主体的长度和内容,或者资源自身。扩展原创 2017-10-18 21:44:11 · 328 阅读 · 0 评论 -
4.1 TCP 连接
基本概念见1.5 连接世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的,TCP/IP 是全球计算机及网络设备都在使用的一种常用的分组交换网络分层协议集。一旦连接建立起来了,在客户端和服务器的计算机之间交换的报文就永远不会丢失、受损或失序。尽管报文不会丢失或受损,但如果计算机或网络崩溃了,客户端和服务器之间的通信仍然会被断开。在这种情况下,会通知客户端和服务器通信中断了。建立连接步骤原创 2017-10-19 17:08:24 · 250 阅读 · 0 评论 -
4.2 TCP 性能特点
HTTP 紧挨着 TCP,位于其上层,所以 HTTP 事务的性能在很大程度上取决于底层 TCP 通道的性能。TCP 是个很复杂的话题, 所以这里我们只能提供对 TCP 性能的简要概述。1. HTTP 事务的时延HTTP 事务主要的连接、传输以及处理时延: 注意,与建立 TCP 连接,以及传输请求和响应报文的时间相比,事务处理时间可能是很短的。除非客户端或服务器超载,或正在处理复杂的动态资源,否原创 2017-10-19 17:11:26 · 310 阅读 · 0 评论 -
4.3 HTTP 连接的处理
之前对 TCP 连接及其性能含义进行了精要的介绍,现在切回到 HTTP 上来。1. Connection 首部HTTP 允许在客户端和最终的源端服务器之间存在一串 HTTP 中间实体(代理、高速缓存等)。可以从客户端开始,逐跳将 HTTP 报文经过这些中间设备,转发到源端服务器上去(或者进行反向传输)。Connection: 类型:通用首部注释:虽然 RFC 2616 没有专门声明将 ke原创 2017-10-19 17:13:20 · 264 阅读 · 0 评论 -
4.4 并行连接
HTTP 允许客户端打开多条连接,并行地执行多个 HTTP 事务。在下面这个例子中,并行加载了四幅嵌入式图片,每个事务都有自己的 TCP 连接。嵌入的组件不一定都在同一台 Web 服务器上,可以同多台服务器建立并行的连接。 1. 并行连接可能会提高页面的加载速度包含嵌入对象的组合页面如果能通过并行连接克服单条连接的空载时间和带宽限制,加载速度也会有所提高。时延可以重叠起来,而且如果单条连接没有充分原创 2017-10-19 17:15:15 · 2255 阅读 · 0 评论 -
4.5 持久连接
站点局部性(site locality):Web 客户端经常会打开到同一个站点的连接,初始化了对某服务器 HTTP 请求的应用程序很可能会在不久的将来对那台服务器发起更多的请求(比如,获取在线图片)。因此,HTTP/1.1(以及 HTTP/1.0 的各种增强版本)允许 HTTP 设备在事务处理结束之后将 TCP 连接保持在打开状态,以便为未来的 HTTP 请求重用现存的连接。持久连接:在事务处理原创 2017-10-19 17:20:10 · 478 阅读 · 0 评论 -
4.6 管道化连接
HTTP/1.1 允许在持久连接上可选地使用请求管道。这是相对于 keep-alive 连接的又一性能优化。在响应到达之前,可以将多条请求放入队列。当第一条请求通过网络流向地球另一端的服务器时,第二条和第三条请求也可以开始发送了。在高时延网络条件下,这样做可以降低网络的环回时间,提高性能。下图显示了:持久连接是怎样消除 TCP 连接时延,管道化请求是如何消除传输时延的 管道化连接(pipelin原创 2017-10-19 17:26:10 · 1168 阅读 · 2 评论 -
4.7 关闭连接
1. “任意”解除连接所有 HTTP 客户端、服务器或代理都可以在任意时刻关闭一条 TCP 传输连接。通常会在一条报文结束时关闭连接(除非服务器怀疑出现了客户端或网络故障,否则就不应该在请求的中间关闭连接)。出错的时候,也可能在首部行的中间,或其他奇怪的地方关闭连接。对管道化持久连接来说,这种情形是很常见的。HTTP 应用程序可以在经过任意一段时间之后,关闭持久连接。比如,在持久连接空闲一段时间原创 2017-10-19 17:28:54 · 339 阅读 · 0 评论 -
12.1 认证
既要保证访问方便,又要保证只有特定的人能看到我们的敏感信息并且能够执行我们的特权事务。并不是所有的信息都能够公开发布的。认证就意味着要证明你是谁。通常是通过提供用户名和密码来进行认证的。HTTP 为认证提供了一种原生工具。尽管我们可以在 HTTP 的认证形式和 cookie 基础之上“运行自己的”认证工具,但在很多情况下,HTTP 的原生认证功能就可以很好地满足要求。最常见的 HTTP 认证机原创 2017-10-27 11:37:39 · 213 阅读 · 0 评论 -
12.2 基本认证
基本认证是最流行的 HTTP 认证协议。几乎每个主要的客户端和服务器都实现了基本认证机制。基本认证最初是在 HTTP/1.0 规范中提出的,但此后被移到了 RFC 2617 中,它详细介绍了 HTTP 的认证机制。1. 基本认证流程在基本认证中: 用户发出请求,请求服务器上某个安全域中的文件。服务器会返回 401 状态码来初始化认证质询,并回送 WWW-Authenticate 响应首部,原创 2017-10-27 11:39:34 · 314 阅读 · 0 评论 -
12.3 基本认证的安全缺陷
基本认证简单便捷,但并不安全。只能用它来防止非恶意用户无意间进行的访问,或将其与 SSL 这样的加密技术配合使用。基本认证存在下列安全缺陷: 基本认证会通过网络发送用户名和密码,这些用户名和密码都是以一种很容易解码的形式表示的。实际上,密码是以明文形式传输的,任何人都可以读取并将其捕获。虽然 Base-64 编码通过隐藏用户名和密码,致使友好的用户不太可能在进行网络观测时无意中看到密码,但 Ba原创 2017-10-27 11:40:11 · 461 阅读 · 0 评论 -
5.1 Web 服务器简介
Web 服务器会对 HTTP 请求进行处理并提供响应。术语“Web 服务器”可以用来表 示 Web 服务器的软件,也可以用来表示提供 Web 页面的特定设备或计算机。1. Web服务器的实现Web 服务器实现了 HTTP 和相关的 TCP 连接处理。负责管理 Web 服务器提供的资源,以及对 Web 服务器的配置、控制及扩展方面的管理。Web 服务器逻辑:实现了 HTTP 协议、管理着 We原创 2017-10-20 14:58:16 · 224 阅读 · 0 评论 -
5.2 最小的Perl Web服务器
(供了解)下例代码显示了一个名为 type-o-serve 的小型 Perl 程序。这个程序是个很有用的诊断工具,可以用来测试与客户端和代理的交互情况。与所有 Web 服务器一样,type-o-serve 会等待 HTTP 连接。只要 type-o-serve 收到了请求报文,就会将报文打印在屏幕上,然后等待用户输入(或粘贴)一条响应报文,并将其回送给客户端。通过这种方式,type-o-serve原创 2017-10-20 15:06:25 · 1694 阅读 · 0 评论 -
5.3 实际 Web 服务器工作流程
建立连接——接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭。接收请求——从网络中读取一条 HTTP 请求报文。 处理请求——对请求报文进行解释,并采取行动。 访问资源——访问报文中指定的资源。构建响应——创建带有正确首部的 HTTP 响应报文。 发送响应——将响应回送给客户端。记录事务处理过程——将与已完成事务有关的内容记录在一个日志文件中。 1. 第一步——接受客户原创 2017-10-20 15:20:16 · 2376 阅读 · 2 评论 -
13.1 摘要认证的改进
本章只需了解摘要认证的基本概念和流程即可,关于 HTTP 的安全问题,重点关注下一章。基本认证便捷灵活,但极不安全。用户名和密码都是以明文形式传送的,也没有采取任何措施防止对报文的篡改。安全使用基本认证的唯一方式就是将其与 SSL 配合使用。摘要认证与基本认证兼容,但却更为安全。摘要认证进行了如下改进: 永远不会以明文方式在网络上发送密码。可以防止恶意用户捕获并重放认证的握手过程。 可以原创 2017-10-28 14:23:16 · 377 阅读 · 0 评论 -
13.2 摘要的计算
摘要认证的核心就是对公共信息、保密信息和有时限的随机值这个组合的单向摘要。1. 摘要算法的输入数据摘要是根据以下三个组件计算出来的: * 由单向散列函数 H(d) 和摘要 KD(s,d) 组成的一对函数,其中 s 表示密码,d 表示数据。 * 一个包含了安全信息的数据块,包括密码,称为 A1。 * 一个包含了请求报文中非保密属性的数据块,称为 A2。H 和 KD 处理两块数据 A1 和 A2原创 2017-10-28 14:24:49 · 1268 阅读 · 0 评论 -
13.3 增强保护质量
可以在三种摘要首部中提供 qop 字段:WWW-Authenticate、Authorization 和 Authentication-Info。通过 qop 字段,客户端和服务器可以对不同类型及质量的保护进行协商。比如,即便会严重降低传输速度,有些事务可能也要检查报文主体的完整性。服务器首先在 WWW-Authenticate 首部输出由逗号分隔的 qop 选项列表。然后客户端从中选择一个它支原创 2017-10-28 14:27:06 · 553 阅读 · 0 评论 -
13.4 注意的问题
1. 多重质询服务器可以对某个资源发起多重质询。比如,如果服务器不了解客户端的能力,就可以既提供基本认证质询,又提供摘要认证质询。客户端面对多重质询时,必须以它所支持的最强的质询机制来应答。质询自身可能会包含由逗号分隔的认证参数列表。如果 WWW-Authenticate 或 Proxy-Authenticate 首部包含了多个质询,或者提供了多个 WWW-Authenticate 首部,用户原创 2017-10-28 14:28:05 · 232 阅读 · 0 评论 -
13.5 安全性考虑
1. 首部篡改为了提供一个简单明了的防首部篡改系统,要么就得进行端到端的加密,要么就得对首部进行数字签名——最好是两者的结合。摘要认证的重点在于提供一种防篡改认证机制,但并不一定要将这种保护扩展到数据上去。具有一定保护级别的首部只有 WWW-Authenticate 和 Authorization。2. 重放攻击重放攻击指的就是有人将从某个事务中窃取的认证证书用于另一个事务。尽管对 GET原创 2017-10-28 14:28:39 · 268 阅读 · 0 评论 -
14.1 保护HTTP的安全
前面介绍的安全技术,在友好环境中可以很好地工作,但在充满各种利益驱动和恶意对手的环境中,它们并不足以保护那些重要的事务处理。本章提供了一种更复杂,更安全的技术,通过数字密码来保护 HTTP 事务免受窃听和篡改的侵害。前面的章节讨论了一些提供认证(基本认证和摘要认证)和报文完整性检查(摘要 qop=”auth-int”)的轻量级方法。对很多网络事务来说,这些方法都是很好用的,但对大规模的购物、银行事原创 2017-10-29 14:54:34 · 300 阅读 · 0 评论 -
14.2 数字加密简介
在详细探讨 HTTPS 之前,我们先介绍一些 SSL 和 HTTPS 用到的加密编码技术的背景知识。在这个数字加密技术的入门介绍中,我们会讨论以下内容: 密码:对文本进行编码,使偷窥者无法识别的算法。密钥:改变密码行为的数字化参数。对称密钥加密系统:编/解码使用相同密钥的算法。不对称密钥加密系统:编/解码使用不同密钥的算法。公开密钥加密系统:一种能够使数百万计算机便捷地发送机密报文的系统。原创 2017-10-29 14:58:37 · 866 阅读 · 0 评论 -
14.3 HTTPS 细节
HTTPS 是最常见的 HTTP 安全版本。HTTPS 将 HTTP 协议与一组强大的对称、非对称和基于证书的加密技术结合在一起,使得 HTTPS 不仅很安全,而且很灵活,很容易在处于无序状态的、分散的全球互联网上进行管理。1. HTTPS 概述HTTPS 就是在安全的传输层上发送的 HTTP。它在将 HTTP 报文发送给 TCP 之前,先将其发送给了一个安全层,对其进行加密。现在,HTTP原创 2017-10-29 15:00:25 · 817 阅读 · 0 评论 -
14.4 HTTPS 客户端实例
SSL 是个复杂的二进制协议。除非你是密码专家,否则就不应该直接发送原始的 SSL 流量。幸运的是,借助一些商业或开源的库,编写 SSL 客户端和服务器并不十分困难。1. OpenSSLOpenSSL 是 SSL 和 TLS 最常见的开源实现。OpenSSL 项目由一些志愿者合作开发,目标是开发一个强壮的、具有完备功能的商业级工具集,以实现 SSL 和 TLS 协议以及一个全功能的通用加密库。可原创 2017-10-29 15:01:21 · 991 阅读 · 0 评论 -
14.5 HTTPS 与代理
客户端通常会用 Web 代理服务器代表它们来访问 Web 服务器。比如,很多公司都会在公司网络和公共因特网的安全边界上放置一个代理。代理是防火墙路由器唯一允许进行 HTTP 流量交换的设备,它可能会进行病毒检测或其他的内容控制工作。 但只要客户端开始用服务器的公开密钥对发往服务器的数据进行加密,代理就再也不能读取 HTTP 首部了。代理不能读取 HTTP 首部,就无法知道应该将请求转向何处了。 为了原创 2017-10-29 15:03:13 · 4139 阅读 · 1 评论 -
20.4 缓存的重定向方法
1. WCCP 重定向Cisco 系统公司开发的 WCCP 可以使路由器将 Web 流量重定向到代理缓存中去。WCCP 负责路由器和缓存服务器之间的通信,这样路由器就可以对缓存进行验证(确保它们已启动且正在运行),在缓存之间进行负载均衡,并将特定类型的流量发送给特定的缓存了。WCCP 版本 2(WCCP2)是个开放的协议。这里我们会探讨 WCCP2。1. WCCP 重定向工作流程启动包含了一些支持原创 2017-11-07 11:12:31 · 779 阅读 · 0 评论 -
21.1 记录内容
几乎所有的服务器和代理都会记录下它们所处理的 HTTP 事务摘要。这么做出于一系列的原因:跟踪使用情况、安全性、计费、错误检测,等等。大多数情况下,日志的记录出于两种原因: 查找服务器或代理中存在的问题(比如,哪些请求失败了);生成 Web 站点访问方式的统计信息。统计数据对市场营销、计费和容量规划(比如,决定是否需要增加服务器或带宽)都非常有用。不应该记录实际上你并不感兴趣,甚至从来都不会原创 2017-11-07 11:59:14 · 303 阅读 · 0 评论 -
21.2 日志格式
大部分商用和开源的 HTTP 应用程序都支持以一种或多种常用格式进行日志记录。很多这样的应用程序都支持管理者配置日志格式,创建自定义的格式。应用程序支持管理者使用这些更标准的格式的主要好处之一就在于,可以充分利用那些已构建好的工具处理这些日志,并产生基本的统计信息。有很多开源包和商用包都可用来压缩日志,以进行汇报。使用标准格式,应用程序及其管理员就都可以利用这些包了。1. 常见日志格式现在,最原创 2017-11-07 12:05:26 · 4340 阅读 · 0 评论 -
21.3 命中率测量
原始服务器通常会出于计费的目的保留详细的日志记录。内容提供者需要知道 URL 的受访频率,广告商需要知道广告的出现频率,网站作者需要知道所编写的内容的受欢迎程度。客户端直接访问 Web 服务器时,日志记录可以很好地跟踪这些信息。缓存服务器位于客户端和服务器之间,用于防止服务器同时处理大量访问请求(这正是缓存的目的)。缓存要处理很多 HTTP 请求,并在不访问原始服务器的情况下满足它们的请求,服务器原创 2017-11-07 12:06:34 · 497 阅读 · 0 评论 -
6.1 代理的概念
Web 代理(proxy)服务器是网络的中间实体。代理位于客户端和服务器之间,扮演“中间人”的角色,在各端点之间来回传送 HTTP 报文。HTTP 的代理服务器既是 Web 服务器又是 Web 客户端。如果要创建自己的 HTTP 代理,就要认真地遵循为 HTTP 客户端和 HTTP 服务器制定的规则。 1. 公共和私有代理公共代理:众多客户端共享的代理。大多数代理都是公共的共享代理。集中式代理的原创 2020-07-06 01:12:12 · 395 阅读 · 0 评论 -
6.2 代理的应用
这里给出了几种代理使用方法的示例:1. 儿童过滤器小学在为教育站点提供无阻碍访问的同时,可以利用过滤器代理来阻止学生访问成人内容。代理应该允许学生无限制地访问教育性内容,但对不适合儿童的站点要强行禁止访问。 2. 文档访问控制可以用代理服务器在大量 Web 服务器和 Web 资源之间实现统一的访问控制策略,创建审核跟踪机制。这在大型企业环境或其他分布式机构中是很有用的。为防止一些经验丰富的用户原创 2017-10-21 22:57:38 · 272 阅读 · 0 评论 -
6.3 代理的部署位置
1. 代理服务器的部署可以根据其目标用途,将代理放在任意位置,比如:出口代理: 可以将代理固定在本地网络的出口点,以便控制本地网络与大型因特网之间的流量。可以在公司网络中使用出口代理(下图a),提供针对公司外部恶意黑客的防火墙保护,或降低带宽费用,提高因特网流量的性能。小学可能会使用过滤出口代理来防止早熟的学生浏览不恰当的内容。访问(入口)代理: 代理常被放在 ISP 访问点上,用以处理来自原创 2017-10-21 23:01:44 · 571 阅读 · 0 评论 -
6.4 客户端的代理设置
手工配置 显式地设置要使用的代理。预先配置浏览器 浏览器厂商或发行商会在将浏览器发送给其客户之前预先对浏览器(或所有其他 Web 客户端)的代理设置进行手工配置。代理的自动配置(Proxy Auto-Configuration,PAC) 提供一个 URI,指向一个用 JavaScript 语言编写的代理自动配置文件;客户端会取回这个 JavaScript 文件,并运行它以决定是否应该使用一原创 2017-10-21 23:02:54 · 971 阅读 · 0 评论 -
6.5 与代理请求有关的问题
代理请求中的 URI 和服务器请求中的 URI 有何不同;拦截和反向代理是如何将服务器主机信息隐藏起来的;修改 URI 的规则;代理是怎样影响浏览器的智能 URI 自动完成机制,或主机名扩展特性的。1. 代理URI与服务器URI的区别Web 服务器报文和 Web 代理报文的语法是一样的,除了HTTP 请求报文中的 URI 。客户端向 Web 服务器发送请求时,请求行中只包含部分 URI(原创 2017-10-21 23:06:56 · 438 阅读 · 0 评论 -
6.6 追踪报文
现在,在将 Web 请求从客户端传送到服务器的路径上,经过两个或多个代理是很常见的。同时,出于性能原因,把内容复制到遍布全球的替代物缓存库中的情形也越来越常见了。代理是由不同厂商开发的。它们有不同的特性和缺陷,由各种不同的组织负责管理。随着代理的逐渐流行,我们要能够追踪经过代理的报文流,以检测出各种问题,其重要性就跟追踪经过不同交换机和路由器传输的 IP 分组流一样。1. Via 首部Via原创 2017-10-21 23:09:56 · 977 阅读 · 0 评论