HTTP 仔 细 地 给 每 种 要 通 过 Web 传 输 的 对象 都 打 上 了 名 为 MIME 类 型(MIME type) 的 数 据 格 式 标 签
Web 服务器会为所有 HTTP 对象数据附加一个 MIME 类型
MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔
4.2.4 延迟确认
由于因特网自身无法确保可靠的分组传输(因特网路由器超负荷的话,可以随意丢
弃分组),所以 TCP 实现了自己的确认机制来确保数据的成功传输。
每个 TCP 段都有一个序列号和数据完整性校验和。每个段的接收者收到完好的段
时,都会向发送者回送小的确认分组。如果发送者没有在指定的窗口时间内收到确
认信息,发送者就认为分组已被破坏或损毁,并重发数据。
由于确认报文很小,所以 TCP 允许在发往相同方向的输出数据分组中对其进行“捎
带”。TCP 将返回的确认信息与输出的数据分组结合在一起,可以更有效地利用网
络。为了增加确认报文找到同向传输数据分组的可能性,很多 TCP 栈都实现了一种
“延迟确认”算法。延迟确认算法会在一个特定的窗口时间(通常是 100 ~ 200 毫
秒)内将输出确认存放在缓冲区中,以寻找能够捎带它的输出数据分组。如果在那
个时间段内没有输出数据分组,就将确认信息放在单独的分组中传送。
但是,HTTP 具有双峰特征的请求 - 应答行为降低了捎带信息的可能。当希望有相
反方向回传分组的时候,偏偏没有那么多。通常,延迟确认算法会引入相当大的时
延。根据所使用操作系统的不同,可以调整或禁止延迟确认算法。
在对 TCP 栈的任何参数进行修改之前,一定要对自己在做什么有清醒的认识。TCP
中引入这些算法的目的是防止设计欠佳的应用程序对因特网造成破坏。对 TCP 配置
进行的任意修改,都要绝对确保应用程序不会引发这些算法所要避免的问题。
4.2.5 TCP慢启动
TCP 数据传输的性能还取决于 TCP 连接的使用期(age)。TCP 连接会随着时间进行
自我“调谐”,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移
提高传输的速度。这种调谐被称为 TCP 慢启动(slow start),用于防止因特网的突
然过载和拥塞。
TCP 慢启动限制了一个 TCP 端点在任意时刻可以传输的分组数。简单来说,每成功
接收一个分组,发送端就有了发送另外两个分组的权限。如果某个 HTTP 事务有大
量数据要发送,是不能一次将所有分组都发送出去的。必须发送一个分组,等待确
认;然后可以发送两个分组,每个分组都必须被确认,这样就可以发送四个分组了,
以此类推。这种方式被称为“打开拥塞窗口”。
由于存在这种拥塞控制特性,所以新连接的传输速度会比已经交换过一定量数据的、
“已调谐”连接慢一些。由于已调谐连接要更快一些,所以 HTTP 中有一些可以重用
现存连接的工具。本章稍后会介绍这些 HTTP“持久连接”。
阅读(1330) | 评论(0) | 转发(0) |