5月阅读周·HTTP权威指南:重定向与负载均衡之因特网缓存协议篇

举报
叶一一 发表于 2025/05/21 22:50:01 2025/05/21
【摘要】 引言HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对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畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。