WEBVTT 00:00:00.120 --> 00:00:07.950 [歌曲倒计时:7,6,5,4,3,2,1] 互联网:封包、路由和可靠度 00:00:07.950 --> 00:00:13.650 嗨,我的名字是林恩。我是Spotify的软件工程师 00:00:13.650 --> 00:00:18.970 我会第一个承认,我经常认为互联网的可靠性是理所当然的。 00:00:18.970 --> 00:00:23.170 然而,互联网的信息量巨大,要如何可靠地将每个数据传递给你呢? 00:00:23.170 --> 00:00:29.080 假设您想播放Spotify的歌曲,你的计算机 00:00:29.080 --> 00:00:33.989 似乎是直接连接到Spotify服务器,Spotify会在专用线路上直接向你发送歌曲。 00:00:33.989 --> 00:00:39.410 但实际上这不是互联网的运作方式。如果互联网是由直接的专用连接构成, 00:00:39.410 --> 00:00:43.640 那么随着数百万用户的加入,就不可能保持工作。 00:00:43.640 --> 00:00:48.050 特别是不能保证每根电线和电脑都能正常工作。 00:00:48.050 --> 00:00:53.350 相反地,数据是以更不直接的方式在互联网上传播。 00:00:53.350 --> 00:01:01.210 很多年前,在20世纪70年代早期,我的合作伙伴 00:01:01.210 --> 00:01:06.870 Bob Kahn和我开始着手设计我们现在称之为互联网的东西。 00:01:06.870 --> 00:01:14.790 Bob和我有责任和机会设计互联网协议及其架构。 00:01:14.790 --> 00:01:20.000 因此,我们始终坚持参与互联网的增长和发展,直到现在也在继续。 00:01:20.000 --> 00:01:25.500 信息从一台计算机传输到另一台计算机的方式非常有趣。它不需要 00:01:25.500 --> 00:01:30.900 遵循固定的路径,事实上,你的路径可能会在计算机中转换为计算机对话。 00:01:30.900 --> 00:01:36.100 互联网上的信息在我们所说的信息包中,从一台计算机传到 00:01:36.100 --> 00:01:42.050 另一台计算机,一个信息包在互联网上从一个地方传播到另一个地方, 00:01:42.050 --> 00:01:46.360 就像你在车里从一个地方到另一个地方一样。 00:01:46.360 --> 00:01:51.420 根据交通拥堵或道路状况,每次旅行时, 00:01:51.420 --> 00:01:59.000 您可能会选择或被迫采取不同的路线到达同一个地方。 00:01:59.000 --> 00:02:03.980 就像你可以在一辆车里传送各种各样的东西一样, 00:02:03.980 --> 00:02:10.359 很多数字信息可以用IP包发送,但也有一些限制。 00:02:10.359 --> 00:02:14.200 如果你需要将航天飞机从其建造地点移动到发射的位置,该怎么办? 00:02:14.200 --> 00:02:18.780 因为航天飞机不能装在一辆卡车里,所以需要将它分解成碎片,用一队卡车运输。 00:02:18.780 --> 00:02:23.099 他们都可以采取不同的路线,并可以在不同的时间到达目的地。 00:02:23.099 --> 00:02:28.109 但一旦所有的碎片都到达后,你就可以重新组装成完整的航天飞机并准备发射。 00:02:28.109 --> 00:02:34.329 在互联网上,细节同样起作用。 00:02:34.329 --> 00:02:40.090 如果你要将非常大的图像发送给朋友或上传到网站, 00:02:40.090 --> 00:02:44.819 图像可能由数以百万计的1和0比特组成,数量太大,无法在一个包中发送。 00:02:44.819 --> 00:02:49.810 由于它是计算机上的数据,图像可快速被分解成 00:02:49.810 --> 00:02:55.719 数百甚至数千个称为数据包的较小的部分。 00:02:55.719 --> 00:03:00.230 与汽车或卡车不同,这些数据包没有司机,也没有选择路线。 00:03:00.230 --> 00:03:04.650 每个包都有它的来源和去向的互联网地址。互联网上, 00:03:04.650 --> 00:03:09.430 称为路由器的特殊计算机就像流量管理器一样,可以使数据包顺利通过网络。 00:03:09.430 --> 00:03:15.239 如果一条线路拥堵,个别的数据包可能通过互联网通过不同的路线, 00:03:15.239 --> 00:03:20.370 它们可能在稍微不同的时间到达目的地,甚至出现故障。 00:03:20.370 --> 00:03:26.569 我们来谈谈“路由器”是如何工作的。作为互联网协议的一部分, 00:03:26.569 --> 00:03:31.169 每个路由器都跟踪用于发送数据包的多条路径, 00:03:31.169 --> 00:03:37.079 并且它根据数据包的目的IP地址为每个数据选择最便宜的可用路径。 00:03:37.079 --> 00:03:42.120 在这种情况下最便宜并不意味着成本,而是时间和政治等非技术因素和公司之间的关系。 00:03:42.120 --> 00:03:47.499 通常,数据传输的最佳路径并不一定是最直接的。 00:03:47.499 --> 00:03:53.150 具有路径的选项会使网络容错。这意味着 00:03:53.150 --> 00:03:57.700 这意味着即使出现可怕的错误,网络也可以继续发送数据包。 00:03:57.700 --> 00:04:04.849 这是互联网关键原则的基础:可靠性。 00:04:04.849 --> 00:04:09.349 现在,如果你想请求一些数据而不是所有的数据都交付了呢? 00:04:09.349 --> 00:04:14.829 假如你想听一首歌。你如何100%确定所有数据都将被传送,以便歌曲完美播放? 00:04:14.829 --> 00:04:21.440 这就需要介绍你最好的朋友TCP(传输控制协议)了。 00:04:21.440 --> 00:04:26.530 TCP以数据包的形式管理所有数据的发送和接收,可以把它想象成一个有保障的邮件服务。 00:04:26.530 --> 00:04:31.669 当你在设备上请求歌曲时,Spotify会将一首歌分解为多个数据包。 00:04:31.669 --> 00:04:37.210 当数据包到达时,TCP会进行完整清点并回复以确认收到每个数据包。 00:04:37.210 --> 00:04:42.840 如果所有数据包都在那里,TCP会签收您的交付,您就成功收到了歌曲。 00:04:42.840 --> 00:04:54.819 如果TCP发现某些数据包丢失,它将不会签收 00:04:54.819 --> 00:04:59.930 否则你的歌听起来不会悦耳,或者歌曲的某些部分可能会丢失。 00:04:59.930 --> 00:05:05.930 对于每个丢失或不完整的数据包,Spotify将重新发送它们。 00:05:05.930 --> 00:05:13.370 一旦TCP验证了该歌曲请求的多个数据包的传递,您的歌曲就会开始播放。 00:05:13.370 --> 00:05:19.220 TCP 和路由器系统的优点在于它们是可扩展的。他们可以使用8到80亿台设备。 00:05:19.220 --> 00:05:23.449 实际上,由于这些容错和冗余原则, 00:05:23.449 --> 00:05:28.069 我们添加的路由器越多,互联网就越可靠。 00:05:28.069 --> 00:05:34.379 更棒的是我们还可以在不中断它服务的情况下增长和扩展互联网。 00:05:34.379 --> 00:05:39.280 互联网由数十万个网络和数十亿台物理连接的计算机和设备组成。 00:05:39.280 --> 00:05:44.360 这些组成互联网的不同系统相互连接,相互通信, 00:05:44.360 --> 00:05:51.289 并协同工作,这是因为在互联网上传输数据的方式是一致的。 00:05:51.289 --> 00:05:56.000 计算机设备,或者互联网上的路由器,帮助所有的数据包到达目的地, 00:05:56.000 --> 00:06:02.789 如果有必要的话,在那里重新组装。这种情况每天发生数十亿次, 00:06:02.789 --> 00:06:08.889 你和其他人是否正在发送电子邮件,访问网页,进行视频聊天, 00:06:08.889 --> 00:06:13.870 使用移动应用程序,或互联网上的传感器或设备 00:06:13.870 --> 00:06:14.910 相互通信时。