ISP 是否缓存所有数据?

Fri*_*Kim 4 networking internet cache

为了清楚地表明我的问题,我将使用相当高的数字。文件服务器通过 1 gbps 线路连接到 Internet。服务器正在向客户端发送一个 100 GB 的文件。该文件被分割成数据包并以 1 gbps 的速度发送到客户端 ISP。但是,客户端通过 1 mbps 线路连接到 ISP。这意味着 ISP 必须保存/缓存从文件服务器发送给它的所有数据,直到客户端接收到所有数据。

这是如何完成的,还是服务器以与服务器和客户端之间最慢的线路相同的速率发送数据包?

小智 12

Internet 不只使用一种协议。它甚至不是一次只使用一种协议:它实际上同时使用多种协议,它们相互叠加以做各种不同的事情。如果我们把事情简单化一点,你可以说它使用了四个。

  • 链路层:一种协议,可让您将信号(或无线电波、闪光或其他任何东西)通过电线推送到另一端的另一台机器。示例包括 PPP、WiFi 和以太网。
  • 网络层:一种允许您通过一系列机器推送信号的协议,以便您可以在不直接连接的机器之间获取数据。这是 IP 和 IPv6 存在的地方。
  • 传输层:一种协议,可让您从该信号中获得一些基本意义。有些,如 TCP,在两台机器之间建立“虚拟连接”,就好像它们之间有一条直线。其他的,比如 UDP,只是将一些数据从一台机器发送到另一台机器。不同的协议有不同的优点和缺点,这就是为什么有这么多协议的部分原因。
  • 应用层:这些是我们通常认为的“协议”。它们专门用于某些类型的数据,用于特定目的。一些示例包括 FTP、HTTP 和 BitTorrent,它们都传输文件。

我提到的那些文件传输协议通常堆叠在 TCP 之上(它本身堆叠在 IP 之上),这是我们解决您的特定问题的地方。TCP 尽其所能地尝试像机器之间的直接线路一样工作:当服务器发送数据包时,它可以确保客户端收到它,并且可以确保客户端以相同的顺序收到它的数据包服务器发送了它们。它执行此操作的部分方法是服务器发送的每个数据包都必须由客户端确认:它会发送一个小信号,说“好的,我收到了你发送的那个数据包;我已经准备好迎接下一个了。” 如果服务器没有得到那个确认,它会一直发送数据包直到它收到(或者决定这永远不会工作并放弃)。

这是回答你的问题的关键。直到它知道包1打通,这是不可能发生的,直到数据包1得到确认,且服务器不能发送数据包2不可能发生的,直到数据包1真的完了。链中间的服务器不必缓存任何数据(无论如何一次不超过一个数据包),因为当一台机器甚至看到数据包 2 时,它就知道它不再需要数据包 1 .

最后一点:从技术上说,这只是意味着互联网不具有高速缓存数据你谈论的方式。如果有人真的想缓存所有这些数据,他们可以;协议中没有任何内容可以真正阻止它的发生。但是 Internet不需要这些缓存来工作。

  • 一件事 - TCP 支持(并且几乎每个连接都使用)窗口功能,该功能允许服务器发送大量数据包而无需响应。客户端可以一次确认多个数据包。这可以大大加快慢速或长距离链接的速度。 (3认同)