網際網路:封包、路由和可靠度
嗨,我是 Lynn
我是Spotify的軟體工程師
我常常理所當然地認為網際網路是相當可靠的
網際網路有著令人驚訝的龐大資訊量,
如何能讓讓每一份資料都可靠地傳送給你呢?
假定,你想從 Spoify 播放一首歌曲
這看起來,好像是你的電腦直接連到 Spotify,
而且 Spotify 用專線將歌曲傳送給你
不過,事實上,網際網路不是這樣的。
如果網際網路是由直接、專屬的連線所構成,
隨著數以百萬的使用者加入,這樣的方式是行不通的。
特別是無法保證每一條線路、每一台電腦,在任何時間都是正常的。
在網際網路上,資料多是以較不直接的方式來傳送的。
很久很久以前,在 1970 年代初期...
Bob Kahn和我(Vint Cerf),開始著手「網際網路」的設計
Bob和我有了這個責任和機會,來設計網際網路的協定與架構
因此,我們持續參與著網際網路的發展與演進,直到現在也還是如此。
資訊從這台電腦傳送到另一台的方式是非常有意思的。
它不需要走固定的路線
事實上,這個路線在電腦與電腦通訊的過程中,可能是會改變的。
網路上的資訊,是以資訊「封包」,在電腦之間來往
封包在兩地之間傳送的方式,就很像你搭車從甲地到乙地
根據交通擁塞與路況,
每一次,你都可能(或被迫)選擇不同的路線,來抵達同一個目的地。
此外,就像你使用汽車運送各式各樣的東西
許多種類的數位資訊都能用 IP 封包來傳送,但也有些限制
舉例來說,如果你要將太空梭由建造的地方移到發射基地
太空梭無法裝進一台卡車,所以要將它拆解,並用一群卡車運送
卡車們可以用不同的路線、也可能在不同的時間,抵達目的地
不過,只要所有的零件都抵達了,你就可以重新組裝回完整的太空梭,來準備發射
在網際網路上,也有類似的運作細節。
如果你想要把一張很大的圖片寄給朋友或上傳到網站
圖片可能是由數以千萬的位元(1 與 0)組成,
太龐大而無法用一個封包來傳送
由於是電腦上的資料
發送圖片的電腦
能夠很快將圖片拆分到數百或數千的更小的封包
與汽車或卡車不同的是,這些封包沒有司機
也無法選擇路徑
每個封包都具有「從何處來」、「到何處去」的網路位址
在網路名為 「路由器」的特殊電腦
就像是交通管理員,
它會維持讓封這ㄒㄧ包順暢地在網路上移動
如果有一條路線是擁塞的,
個別封包可能會用不同的路線傳輸
這些封包可能會在些微不同的時間抵達目的地,甚至缺乏前後次序
我們來了解一下
作為網際網路協定的一部分,
每一台路由器保存著許多用來傳送封包的路徑
它會根據封包終點的 IP 位址,
替每一份資料片段選擇最便宜的可用路徑
這裡的便宜並不意味著成本,
而是時間和非技術的因素(政治因素、公司之間的關係)
往往,傳送資料的最佳路線,不一定就是最直接的那條
當路徑有所選擇時,這讓網路變得能夠容忍錯誤
這表示,即便發生了非常嚴重的錯誤,網路依然可以持續傳送著封包
這就是網際網路的關鍵原則的根基:可靠性
如果你想要取得一些資料,但不是所有資料都送達,會怎麼樣呢?
你想要聽一首歌,但要如何100%確定所有資料都送達,
讓歌曲能夠完美播放呢?
來介紹你的最新的最好的朋友:TCP (傳輸控制協定)
TCP 管理著所有封包資料的傳送與接收
你可以把它視為有保障的郵遞服務
當你在設備上要求一首歌曲,Spotify會將歌曲分拆為許多封包來傳送
當封包抵達時, TCP 會完整清點,
並且回覆確認每一個收到的封包
如果全部封包都有,TCP 就會簽收這次配送,
你的要求就完成了
如果 TCP 發現有些封包遺失了,就不會簽收
否則,歌曲就不會好聽,歌曲的某些部分可能會消失
對於每一個遺失或不完整的封包, Spotify 將會再次傳送
當 TCP 確認某首歌曲的眾多封包都配送了,
你的歌曲就會開始播放
關於 TCP 與路由器系統的優點是具有可擴充性。
無論是 8台 或 80億台設備,都可以運作
事實上,因為「容錯」、「冗餘」的特性,
當我們加入更多的路由器,網際網路就會變得更為可靠
另外很棒的一點,我們可以在不中斷任何人使用的狀況下,來增強和擴展網際網路
網際網路是由幾十萬個網路與數十億台電腦與設備實際連結所組成
這些組成網際網路的不同系統,之所以能互相連結、溝通、一起運作
是因為對於資料在網際網路上如何傳送,有認同的標準
網際網路上的電腦設備、路由器,都協助著所有封包能夠到達目的地
在目的地,如果有必要的話,
封包就會依照順序再次重新組裝
這些狀況,每天都會發生數十億次,不論你和他人發送著Email
瀏覽著網頁
視訊聊天、使用行動APP
或是感測器或設備在網路上彼此溝通的時候