1 00:00:00,120 --> 00:00:07,950 [歌曲倒计时:7,6,5,4,3,2,1] 互联网:封包、路由和可靠度 2 00:00:07,950 --> 00:00:13,650 嗨,我的名字是林恩。我是Spotify的软件工程师 3 00:00:13,650 --> 00:00:18,970 我会第一个承认,我经常认为互联网的可靠性是理所当然的。 4 00:00:18,970 --> 00:00:23,170 然而,互联网的信息量巨大,要如何可靠地将每个数据传递给你呢? 5 00:00:23,170 --> 00:00:29,080 假设您想播放Spotify的歌曲,你的计算机 6 00:00:29,080 --> 00:00:33,989 似乎是直接连接到Spotify服务器,Spotify会在专用线路上直接向你发送歌曲。 7 00:00:33,989 --> 00:00:39,410 但实际上这不是互联网的运作方式。如果互联网是由直接的专用连接构成, 8 00:00:39,410 --> 00:00:43,640 那么随着数百万用户的加入,就不可能保持工作。 9 00:00:43,640 --> 00:00:48,050 特别是不能保证每根电线和电脑都能正常工作。 10 00:00:48,050 --> 00:00:53,350 相反地,数据是以更不直接的方式在互联网上传播。 11 00:00:53,350 --> 00:01:01,210 很多年前,在20世纪70年代早期,我的合作伙伴 12 00:01:01,210 --> 00:01:06,870 Bob Kahn和我开始着手设计我们现在称之为互联网的东西。 13 00:01:06,870 --> 00:01:14,790 Bob和我有责任和机会设计互联网协议及其架构。 14 00:01:14,790 --> 00:01:20,000 因此,我们始终坚持参与互联网的增长和发展,直到现在也在继续。 15 00:01:20,000 --> 00:01:25,500 信息从一台计算机传输到另一台计算机的方式非常有趣。它不需要 16 00:01:25,500 --> 00:01:30,900 遵循固定的路径,事实上,你的路径可能会在计算机中转换为计算机对话。 17 00:01:30,900 --> 00:01:36,100 互联网上的信息在我们所说的信息包中,从一台计算机传到 18 00:01:36,100 --> 00:01:42,050 另一台计算机,一个信息包在互联网上从一个地方传播到另一个地方, 19 00:01:42,050 --> 00:01:46,360 就像你在车里从一个地方到另一个地方一样。 20 00:01:46,360 --> 00:01:51,420 根据交通拥堵或道路状况,每次旅行时, 21 00:01:51,420 --> 00:01:59,000 您可能会选择或被迫采取不同的路线到达同一个地方。 22 00:01:59,000 --> 00:02:03,980 就像你可以在一辆车里传送各种各样的东西一样, 23 00:02:03,980 --> 00:02:10,359 很多数字信息可以用IP包发送,但也有一些限制。 24 00:02:10,359 --> 00:02:14,200 如果你需要将航天飞机从其建造地点移动到发射的位置,该怎么办? 25 00:02:14,200 --> 00:02:18,780 因为航天飞机不能装在一辆卡车里,所以需要将它分解成碎片,用一队卡车运输。 26 00:02:18,780 --> 00:02:23,099 他们都可以采取不同的路线,并可以在不同的时间到达目的地。 27 00:02:23,099 --> 00:02:28,109 但一旦所有的碎片都到达后,你就可以重新组装成完整的航天飞机并准备发射。 28 00:02:28,109 --> 00:02:34,329 在互联网上,细节同样起作用。 29 00:02:34,329 --> 00:02:40,090 如果你要将非常大的图像发送给朋友或上传到网站, 30 00:02:40,090 --> 00:02:44,819 图像可能由数以百万计的1和0比特组成,数量太大,无法在一个包中发送。 31 00:02:44,819 --> 00:02:49,810 由于它是计算机上的数据,图像可快速被分解成 32 00:02:49,810 --> 00:02:55,719 数百甚至数千个称为数据包的较小的部分。 33 00:02:55,719 --> 00:03:00,230 与汽车或卡车不同,这些数据包没有司机,也没有选择路线。 34 00:03:00,230 --> 00:03:04,650 每个包都有它的来源和去向的互联网地址。互联网上, 35 00:03:04,650 --> 00:03:09,430 称为路由器的特殊计算机就像流量管理器一样,可以使数据包顺利通过网络。 36 00:03:09,430 --> 00:03:15,239 如果一条线路拥堵,个别的数据包可能通过互联网通过不同的路线, 37 00:03:15,239 --> 00:03:20,370 它们可能在稍微不同的时间到达目的地,甚至出现故障。 38 00:03:20,370 --> 00:03:26,569 我们来谈谈“路由器”是如何工作的。作为互联网协议的一部分, 39 00:03:26,569 --> 00:03:31,169 每个路由器都跟踪用于发送数据包的多条路径, 40 00:03:31,169 --> 00:03:37,079 并且它根据数据包的目的IP地址为每个数据选择最便宜的可用路径。 41 00:03:37,079 --> 00:03:42,120 在这种情况下最便宜并不意味着成本,而是时间和政治等非技术因素和公司之间的关系。 42 00:03:42,120 --> 00:03:47,499 通常,数据传输的最佳路径并不一定是最直接的。 43 00:03:47,499 --> 00:03:53,150 具有路径的选项会使网络容错。这意味着 44 00:03:53,150 --> 00:03:57,700 这意味着即使出现可怕的错误,网络也可以继续发送数据包。 45 00:03:57,700 --> 00:04:04,849 这是互联网关键原则的基础:可靠性。 46 00:04:04,849 --> 00:04:09,349 现在,如果你想请求一些数据而不是所有的数据都交付了呢? 47 00:04:09,349 --> 00:04:14,829 假如你想听一首歌。你如何100%确定所有数据都将被传送,以便歌曲完美播放? 48 00:04:14,829 --> 00:04:21,440 这就需要介绍你最好的朋友TCP(传输控制协议)了。 49 00:04:21,440 --> 00:04:26,530 TCP以数据包的形式管理所有数据的发送和接收,可以把它想象成一个有保障的邮件服务。 50 00:04:26,530 --> 00:04:31,669 当你在设备上请求歌曲时,Spotify会将一首歌分解为多个数据包。 51 00:04:31,669 --> 00:04:37,210 当数据包到达时,TCP会进行完整清点并回复以确认收到每个数据包。 52 00:04:37,210 --> 00:04:42,840 如果所有数据包都在那里,TCP会签收您的交付,您就成功收到了歌曲。 53 00:04:42,840 --> 00:04:54,819 如果TCP发现某些数据包丢失,它将不会签收 54 00:04:54,819 --> 00:04:59,930 否则你的歌听起来不会悦耳,或者歌曲的某些部分可能会丢失。 55 00:04:59,930 --> 00:05:05,930 对于每个丢失或不完整的数据包,Spotify将重新发送它们。 56 00:05:05,930 --> 00:05:13,370 一旦TCP验证了该歌曲请求的多个数据包的传递,您的歌曲就会开始播放。 57 00:05:13,370 --> 00:05:19,220 TCP 和路由器系统的优点在于它们是可扩展的。他们可以使用8到80亿台设备。 58 00:05:19,220 --> 00:05:23,449 实际上,由于这些容错和冗余原则, 59 00:05:23,449 --> 00:05:28,069 我们添加的路由器越多,互联网就越可靠。 60 00:05:28,069 --> 00:05:34,379 更棒的是我们还可以在不中断它服务的情况下增长和扩展互联网。 61 00:05:34,379 --> 00:05:39,280 互联网由数十万个网络和数十亿台物理连接的计算机和设备组成。 62 00:05:39,280 --> 00:05:44,360 这些组成互联网的不同系统相互连接,相互通信, 63 00:05:44,360 --> 00:05:51,289 并协同工作,这是因为在互联网上传输数据的方式是一致的。 64 00:05:51,289 --> 00:05:56,000 计算机设备,或者互联网上的路由器,帮助所有的数据包到达目的地, 65 00:05:56,000 --> 00:06:02,789 如果有必要的话,在那里重新组装。这种情况每天发生数十亿次, 66 00:06:02,789 --> 00:06:08,889 你和其他人是否正在发送电子邮件,访问网页,进行视频聊天, 67 00:06:08,889 --> 00:06:13,870 使用移动应用程序,或互联网上的传感器或设备 68 00:06:13,870 --> 00:06:14,910 相互通信时。