傳輸層
端對端原則(end-to-end principle)
假設你想寄一個易碎的花瓶,並確保它完好送達。你可以要求沿途每個郵局和卡車都格外小心——或者你和收件人在兩端約好做檢查:她打開箱子,若有破損就打電話給你,你再重寄。第二種做法讓郵政系統保持簡單,卻仍給了你保證。端對端原則就是把這個想法用在網路上:把聰明的功能放在端主機,讓中間的網路盡量保持簡單而通用。
更精確地說,像「可靠、依序、無錯誤的傳遞」這類功能,往往無法單靠網路完整而正確地實作——端點無論如何都得自己檢查,因為錯誤可能在網路之上(在記憶體裡、在應用程式裡)悄悄出現。既然兩端反正都得檢查,把同樣的功能深埋進每台路由器通常是多餘的,對於不需要它的應用程式甚至有害。所以這類功能主要該放在兩端。這正是為什麼 TCP 的可靠性住在你的電腦和伺服器裡,而不在它們之間的路由器;也是為什麼 UDP 可以替偏好速度的應用程式直接跳過可靠性。
為什麼重要:這個原則塑造了網際網路的設計。一個簡單、笨拙、只負責轉送封包的核心是便宜、可擴展、又易於延伸的——新的傳輸協定(TCP、UDP、QUIC)和新的應用程式可以在邊緣部署,而不必升級中間。這個原則是準則,不是鐵律:真實網路為了實務理由加入了 NAT、防火牆、快取等網路內功能,這些中間盒有時會打破乾淨的端對端模型。但核心洞見——讓網路保持通用、把專門化推向邊緣——仍是電腦網路中最具影響力的觀念之一。
較新的傳輸協定 QUIC 完全在邊緣(瀏覽器與伺服器)部署與改良,做法是跑在 UDP 之上。中間沒有任何路由器需要升級——這正是端對端原則的直接回報。
笨拙而通用的核心,讓新的傳輸協定能在邊緣出現。
常見誤讀:它不是說網路什麼都不能做。它說的是:如果兩端反正都得做某件事,就別把那件事放進網路。像快取這類效能輔助,合理地存在於網路之內。
又稱
另見