基礎:網路是什麼
分層(layering)
分層是網路的重大組織性概念,而且在整個工程界處處可見:把一件難事拆成一疊層,每一層把一件事做好、為上一層提供一個整潔的服務、並使用下一層的服務——而不需要知道下層是怎麼做事的。想想層層巢狀的信封,或想想你怎麼能用方向盤和踏板開車、卻不必懂引擎:一個乾淨的介面把底下凌亂的細節藏了起來。
具體而言,分層意味著定義清楚的界線。應用層只操心網頁與電子郵件;它把資料往下交、並信任傳輸層可靠地送達;傳輸層信任網路層找到一條路;網路層信任連結層跨過一跳;連結層信任實體層把位元推出去。每一層在邏輯上與另一台機器上的對等層對話(HTTP 對 HTTP、TCP 對 TCP),而在實體上永遠只把資料傳給上下緊鄰的鄰居。層與層之間的契約是一個服務介面;某層如何履行它,是它自己的私事。
為何要這樣做?模組化與演進。因為各層彼此獨立,你可以替換或升級其中一層而不必重寫其他層——光纖能在實體層取代銅線,QUIC 能在傳輸層取代 TCP,上層照常運作。代價是一些低效(每層加上自己的標頭、有時重複工作),以及為了效能偶爾違反嚴格分層的事實。但其好處——一個由無數獨立團隊打造、卻仍能互通的全球網路——正是分層所換來的。
當 Wi-Fi 取代有線乙太網路時,你的瀏覽器、TCP 與 IP 一行都沒改——只有連結層與實體層變了。這就是分層帶來的回報。
每一層都是一個藏在乾淨介面後、自成一體的工作——換掉一層,其餘照常運作。
分層以一點點效率(額外標頭、偶爾重複工作)換取巨大的模組化。知道真實系統何時會刻意破壞分層(NAT、TLS 終結)是更深入理解的徵象,而非這個概念的瑕疵。
又称
另见