49、万维网之四(应用层)

本文深入探讨了HTTP协议在Web应用中的核心作用,包括其连接管理、方法(GET、POST等)以及缓存策略。随着移动Web的发展,文章分析了移动设备访问Web的挑战和解决方案,如移动友好的内容和协议转换。最后,文章讨论了Web搜索的重要性,搜索引擎的工作原理以及深层Web的搜索难题,强调了广告在Web搜索经济中的角色和相关问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、HTTP——超文本传输协议
  • 既然我们已经理解了Web 内容和应用,现在是时候考察在Web 服务器和客户之间传输所有这些信息的协议了。这就是超文本传输协议( HTTP, HyperText Transfer Protocol),由RFC 2616 说明。HTTP 是一个简单的请求。响应协议,它通常运行在TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII 码形式给出,就像SMTP 一样:而消息内容则具有一个类似MIME 的格式,也像SMTP 一样。这个简单模型是早期Web 成功的有功之臣,因为它使得开发和部署是那么的直截了当。
  • 在本节,我们将着眼于时下使用HTTP 的一些更加重要的属性。然而,在进入HTTP的细节之前,我们注意到它在Internet 上的使用方式在不断地演化。HTTP 是一个应用层协议,因为它运行在TCP 之上,并且与Web 密切相关。这就是为什么我们在本章讨论它。然而,在另一种意义上, HTTP 变得越来越像一个传输层协议,因为它为进程之间跨越不同网络进行内容通信提供了一种方式。这些进程不一定必须是Web 浏览器和Web 服务器。媒体播放器也可以使用HTTP 与服务器通信并请求专辑信息。防病毒软件可以使用HTTP来下载最新的病毒库更新。开发人员可以使用HTTP 来获取项目文件。消费电子产品比如数码相框通常使用内嵌的HTTP 服务器作为与外界的接口。机器与机器之间的通信越来越多地通过HTTP 运行。例如,航空公司服务器可以使用SOAP( 一种运行在HTTP 之上的XMLRPC )联系一家汽车租赁服务器,并且进行汽车预订,所有这些都作为度假产品的一部分。这种趋势有可能继续下去,伴随着HTTP 的使用而不断扩大。

连接

  • 浏览器与服务器联系最常用的方法是与服务器机器上的端口80 建立一个TCP 连接,虽然这个过程并不是正式要求的。使用TCP 的意义在于浏览器和服务器都不需要担心如何处理长消息、可靠性或拥塞控制。所有这些事情都由TCP 实现负责处理。
  • 在Web 早期HTTP1.0 中,连接被建立起来以后浏览器只发送一个请求,之后一个响应消息被发回来,再然后TCP 连接就被释放了。那时,整个Web 页面通常只包含HTML文本,因此这种方法足够用了。很快, Web 页面发展成还含有大量的嵌入式内容链接,比如图标以及其他精美的东西。建立一个单独的TCP 连接来传输每个图标的操作方式代价太昂贵。这种现象导致了HTTP 1.1 的诞生,它支持持续连接(persistent connection )。有了这种连接,就有可能建立一个TCP 连接,在其上发送一个请求并得到一个响应,然后再发送额外的请求并得到额外的响应。这种策略也称为连接重用( connection reuse )。通过把TCP连接的建立、启动和释放等开销分摊到多个请求上,相对于每个请求的TCP 开销就被大大地降低了。而且,还可以发送流水线请求,也就是说在请求1的响应回来之前发送请求2。
  • 这3 种情况的性能差异如图所示。图(a)部分显示了3 个请求,一个接着一个,每一个都是一个单独的连接。让我们假设这表示一个Web 页面,其中有两个嵌入式图像在同一台服务器上。图像的URL 被确定为主页,并且己经获取,因此在主页之后这些图像也己经获取过来。如今,一个典型的页面大约有40 个对象。在图(b)中,通过一个持续连接来获取页面。也就是说, TCP 连接在启动后是开放的,然后发送相同的3个请求,一个接着一个,后一个跟前一个一样,然后才关闭连接。可以观察到页面的提取任务更快速地完成了。加速的原因有两个:首先,时间没有浪费在建立更多的连接上。每个TCP 连接至少需要一个往返时间才能建立:其次,相同图像的传输更加迅速。为什么会这样?这是因为TCP 的拥塞控制。在一个连接的开始阶段, TCP 使用慢启动过程来增加吞吐量,直到它了解网络路径的行为。这个预热期的后果是多个短TCP连接比一个长TCP 连接传输信息所需的时间更长。在这里插入图片描述
  • 最后,在图(c)中,有一个持久连接和请求流水线。具体来说,第二个和第三个要求尽快发送出去,一旦检索主页足够识别出必须预取图像就立即发送请求。这些请求的响应最终紧随其后。这种方法减少了服务器处于空闲状态的时间,因此进一步提高了性能。
  • 然而,持续连接不是免费的。一个新的问题出现了,那就是什么时候关闭连接。一个到服务器的连接在页面加载时应该保持开放。然后呢?对于用户来说有个很好的机会,他可以点击一个链接从服务器请求另一个页面。如果连接保持打开状态,那么下一个请求被立即发送出去。不过,谁也不能保证任意时间后客户将向服务器发出另一个请求。实际上,客户机和服务器通常将持续连接保持打开状态,直到它们己经闲置一小段时间(例如60秒),或者它们己经打开了大量的连接必须要关闭一些。
  • 细心的读者可能己经注意到还有一种组合,我们到目前为止还没有提及。那就是,在每个TCP 连接上发送一个请求,但同时并行打开多个TCP 连接。这种并行连接( parallel connection )方法在持续连接之前被浏览器广泛使用。它具有与顺序连接相同的缺点一一额外的开销,但性能比顺序连接的要好。这是因为建立和加大并行连接隐藏着一些延迟。在我们的例子中,两个嵌入式图像的连接可以在同一时间建立。然而,在同一台服务器上运行多个TCP 连接会令人沮丧。原因在于TCP 为每个连接单独执行拥塞控制。因此,连接之间彼此竞争,造成丢包率上升,而且聚合起来比单个连接的网络用户更具侵略性。持续连接则更优越,应该比并行连接优先使用,因为它们避免了开销,而且不会遭受流量拥塞问题。

方法

  • 尽管HTTP 是为Web 而设计的,但出于放眼未来面向对象的使用,它的设计有意识地比Web 所需要的更加通用。正是这个原因, HTTP 不仅支
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值