WEBVTT 00:00:00.120 --> 00:00:07.230 網際網路:封包、路由和可靠度 00:00:07.950 --> 00:00:12.540 嗨,我是 Lynn 我是Spotify的軟體工程師 00:00:12.670 --> 00:00:17.297 我常常理所當然地認為網際網路是相當可靠的 00:00:17.850 --> 00:00:21.603 網際網路有著令人驚訝的龐大資訊量, 00:00:21.603 --> 00:00:25.357 如何能讓讓每一份資料都可靠地傳送給你呢? 00:00:26.460 --> 00:00:28.528 假定,你想從 Spoify 播放一首歌曲 00:00:28.630 --> 00:00:35.340 這看起來,好像是你的電腦直接連到 Spotify, 而且 Spotify 用專線將歌曲傳送給你 00:00:35.429 --> 00:00:37.809 不過,事實上,網際網路不是這樣的。 00:00:38.870 --> 00:00:42.018 如果網際網路是由直接、專屬的連線所構成, 00:00:42.018 --> 00:00:45.167 隨著數以百萬的使用者加入,這樣的方式是行不通的。 00:00:45.307 --> 00:00:49.611 特別是無法保證每一條線路、每一台電腦,在任何時間都是正常的。 00:00:49.810 --> 00:00:54.440 在網際網路上,資料多是以較不直接的方式來傳送的。 00:00:55.290 --> 00:00:59.280 很久很久以前,在 1970 年代初期... 00:00:59.280 --> 00:01:04.392 Bob Kahn和我(Vint Cerf),開始著手「網際網路」的設計 00:01:04.880 --> 00:01:12.810 Bob和我有了這個責任和機會,來設計網際網路的協定與架構 00:01:12.810 --> 00:01:20.767 因此,我們持續參與著網際網路的發展與演進,直到現在也還是如此。 00:01:21.910 --> 00:01:26.716 資訊從這台電腦傳送到另一台的方式是非常有意思的。 00:01:26.856 --> 00:01:29.369 它不需要走固定的路線 00:01:29.369 --> 00:01:34.256 事實上,這個路線在電腦與電腦通訊的過程中,可能是會改變的。 00:01:34.430 --> 00:01:40.277 網路上的資訊,是以資訊「封包」,在電腦之間來往 00:01:40.277 --> 00:01:47.156 封包在兩地之間傳送的方式,就很像你搭車從甲地到乙地 00:01:47.316 --> 00:01:50.010 根據交通擁塞與路況, 00:01:50.010 --> 00:01:56.520 每一次,你都可能(或被迫)選擇不同的路線,來抵達同一個目的地。 00:01:58.640 --> 00:02:02.117 此外,就像你使用汽車運送各式各樣的東西 00:02:02.117 --> 00:02:07.111 許多種類的數位資訊都能用 IP 封包來傳送,但也有些限制 00:02:08.359 --> 00:02:13.312 舉例來說,如果你要將太空梭由建造的地方移到發射基地 00:02:13.480 --> 00:02:19.769 太空梭無法裝進一台卡車,所以要將它拆解,並用一群卡車運送 00:02:19.900 --> 00:02:23.593 卡車們可以用不同的路線、也可能在不同的時間,抵達目的地 00:02:23.799 --> 00:02:30.495 不過,只要所有的零件都抵達了,你就可以重新組裝回完整的太空梭,來準備發射 00:02:31.479 --> 00:02:34.159 在網際網路上,也有類似的運作細節。 00:02:34.219 --> 00:02:39.621 如果你想要把一張很大的圖片寄給朋友或上傳到網站 00:02:39.870 --> 00:02:45.852 圖片可能是由數以千萬的位元(1 與 0)組成, 太龐大而無法用一個封包來傳送 00:02:46.009 --> 00:02:48.140 由於是電腦上的資料 00:02:48.180 --> 00:02:54.899 發送圖片的電腦 能夠很快將圖片拆分到數百或數千的更小的封包 00:02:54.899 --> 00:02:59.376 與汽車或卡車不同的是,這些封包沒有司機 也無法選擇路徑 00:02:59.390 --> 00:03:03.490 每個封包都具有「從何處來」、「到何處去」的網路位址 00:03:03.490 --> 00:03:06.250 在網路名為 「路由器」的特殊電腦 00:03:06.250 --> 00:03:11.168 就像是交通管理員, 它會維持讓封這ㄒㄧ包順暢地在網路上移動 00:03:11.499 --> 00:03:16.269 如果有一條路線是擁塞的, 個別封包可能會用不同的路線傳輸 00:03:16.274 --> 00:03:21.873 這些封包可能會在些微不同的時間抵達目的地,甚至缺乏前後次序 00:03:22.790 --> 00:03:24.689 我們來了解一下 00:03:24.879 --> 00:03:30.062 作為網際網路協定的一部分, 每一台路由器保存著許多用來傳送封包的路徑 00:03:30.062 --> 00:03:36.569 它會根據封包終點的 IP 位址, 替每一份資料片段選擇最便宜的可用路徑 00:03:36.839 --> 00:03:44.091 這裡的便宜並不意味著成本, 而是時間和非技術的因素(政治因素、公司之間的關係) 00:03:44.630 --> 00:03:48.570 往往,傳送資料的最佳路線,不一定就是最直接的那條 00:03:48.779 --> 00:03:52.664 當路徑有所選擇時,這讓網路變得能夠容忍錯誤 00:03:52.970 --> 00:03:57.295 這表示,即便發生了非常嚴重的錯誤,網路依然可以持續傳送著封包 00:03:57.635 --> 00:04:01.488 這就是網際網路的關鍵原則的根基:可靠性 00:04:03.888 --> 00:04:07.817 如果你想要取得一些資料,但不是所有資料都送達,會怎麼樣呢? 00:04:07.879 --> 00:04:14.587 你想要聽一首歌,但要如何100%確定所有資料都送達, 讓歌曲能夠完美播放呢? 00:04:14.829 --> 00:04:19.874 來介紹你的最新的最好的朋友:TCP (傳輸控制協定) 00:04:20.024 --> 00:04:23.970 TCP 管理著所有封包資料的傳送與接收 00:04:24.031 --> 00:04:26.392 你可以把它視為有保障的郵遞服務 00:04:26.770 --> 00:04:31.512 當你在設備上要求一首歌曲,Spotify會將歌曲分拆為許多封包來傳送 00:04:32.867 --> 00:04:38.724 當封包抵達時, TCP 會完整清點, 並且回覆確認每一個收到的封包 00:04:39.517 --> 00:04:43.211 如果全部封包都有,TCP 就會簽收這次配送, 你的要求就完成了 00:04:50.590 --> 00:04:54.089 如果 TCP 發現有些封包遺失了,就不會簽收 00:04:54.089 --> 00:04:58.810 否則,歌曲就不會好聽,歌曲的某些部分可能會消失 00:04:59.000 --> 00:05:02.604 對於每一個遺失或不完整的封包, Spotify 將會再次傳送 00:05:02.804 --> 00:05:09.090 當 TCP 確認某首歌曲的眾多封包都配送了, 你的歌曲就會開始播放 00:05:12.070 --> 00:05:15.075 關於 TCP 與路由器系統的優點是具有可擴充性。 00:05:15.075 --> 00:05:18.130 無論是 8台 或 80億台設備,都可以運作 00:05:18.630 --> 00:05:22.076 事實上,因為「容錯」、「冗餘」的特性, 00:05:22.076 --> 00:05:25.639 當我們加入更多的路由器,網際網路就會變得更為可靠 00:05:25.809 --> 00:05:30.565 另外很棒的一點,我們可以在不中斷任何人使用的狀況下,來增強和擴展網際網路 00:05:32.149 --> 00:05:38.363 網際網路是由幾十萬個網路與數十億台電腦與設備實際連結所組成 00:05:38.940 --> 00:05:45.406 這些組成網際網路的不同系統,之所以能互相連結、溝通、一起運作 00:05:45.410 --> 00:05:50.594 是因為對於資料在網際網路上如何傳送,有認同的標準 00:05:51.289 --> 00:05:56.799 網際網路上的電腦設備、路由器,都協助著所有封包能夠到達目的地 00:05:56.860 --> 00:06:00.107 在目的地,如果有必要的話, 封包就會依照順序再次重新組裝 00:06:01.489 --> 00:06:06.868 這些狀況,每天都會發生數十億次,不論你和他人發送著Email 00:06:06.882 --> 00:06:08.662 瀏覽著網頁 00:06:08.739 --> 00:06:11.318 視訊聊天、使用行動APP 00:06:11.318 --> 00:06:14.910 或是感測器或設備在網路上彼此溝通的時候