5月阅读周·HTTP权威指南:重定向与负载均衡之因特网缓存协议篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
重定向与负载均衡
因特网缓存协议
ICP(因特网缓存协议)允许缓存在其兄弟缓存中查找命中内容。如果某个缓存中没有HTTP报文所请求的内容,它可以查明内容是否在附近的兄弟缓存中,如果在,就从那里获取内容,以避免查询原始服务器而带来的更多开销。可以把ICP当作一个缓存集群协议。HTTP请求报文的最终目的地可以通过一系列的ICP查询确定,从这个角度来说,它就是一个重定向协议。
ICP是一个对象发现协议。它会同时去询问附近的多个缓存,看看它们的缓存中是否有特定的URL。附近的缓存如果有那个URL的话,就会返回一个简短的报文HIT,如果没有,就返回MISS。然后,缓存就可以打开一条到拥有此对象的邻居缓存的HTTP连接了。
ICP是很简单直接的。ICP报文是一个以网络字节序表示的32位封装结构,这样更便于进行解析。为了提高效率,可以由UDP数据报承载其报文。UDP是一种不可靠的因特网协议,说明在传输的过程中数据可能会被破坏,因此使用ICP的程序要具有超时功能,以检测丢失的数据报。
下面简要描述一下ICP报文中的部分信息。
· Opcode(操作码)Opcode是个8位的二进制值,用以描述ICP报文的含义。基本的opcode包括ICP OP QUERY请求报文和ICP OP HIT和ICP OP MISS响应报文。
· 版本8位的版本号描述了ICP协议的版本编号。Squid使用的ICP版本记录在RFC 2186第2版中。
· 报文长度以字节为单位的ICP报文总长。因为只有16位,所以ICP报文的长度不能超过16383字节。URL通常都小于16 KB,如果超过这个长度,很多Web应用程序就无法处理它了。
· 请求编号支持ICP的缓存会用请求编号来记录多个同时发起的请求和响应。ICP应答报文数必须与触发应答的ICP请求报文数相同。
· 选项32位的ICP选项字段是个包含了若干标记的位矢量,这些标记可用来修改ICP的行为。ICPv2定义了两个标记,这两个标记都会修改ICP OP QUERY请求。ICP FLAG HIT OBJ标记用来启动或禁止在ICP响应中返回文档数据。ICP FLAG SRC RTT标记请求由兄弟缓存测量的、到原始服务器的环回时间的估计值。
· 可选数据保留了32位的可选数据用于可选特性。ICPv2使用了可选数据的低16位来装载从兄弟缓存到原始服务器的可选环回时间的估计值。
· 发送端主机地址承载了报文发送端32位IP地址的著名字段。实际中并未使用。
· 净荷净荷内容的变化取决于报文的类型。对ICP OP QUERY来说,净荷是一个4字节的原始请求端主机地址,后面跟着一个由NUL结尾的URL。对ICP OP HIT OBJ来说,净荷是一个由NUL结尾的URL,后面跟着一个16位的对象长度,接着是对象数据。
总结
HTTP并不是独自运行在网上的。很多协议都会在HTTP报文的传输过程中对其数据进行管理。HTTP只关心旅程的端点(发送者和接收者),但在包含有镜像服务器、Web代理和缓存的网络世界中,HTTP报文的目的地不一定是直接可达的。
重定向技术涉及网络工具、重定向技术细节以及判定HTTP报文最终目的地的协议。重定向技术通常可以用来确定报文是否终结于某个代理、缓存或服务器集群中某台特定的服务器。重定向技术可以将报文发送到客户端没有显式请求的地方去。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)