antony@notes:~/networking$ cat "Networking-Introduction.md"
Networking Introduction
1. Networking Introduction
「在證明無罪之前有罪」。這是網路和監督網路的工程師的口頭禪。在本開篇章節中,我們會涉獵網路技術與標準的發展、簡介網路的主流理論,並介紹我們的 Golang 網路伺服器,它將是整本書中 Kubernetes 與雲端中網路範例的基礎。
1.1. Networking History
我們今天所認識的網際網路非常廣大,電纜橫跨海洋和高山,以前所未有的低延遲連接城市。Barrett Lyon 的 「Mapping the Internet」(如圖 1-1 所示)展示了互聯網的真正廣闊程度。該圖片說明了組成網際網路的網路之間的所有連接。網路的目的是將資訊從一個系統交換到另一個系統。這是一個分散式全球系統的巨大要求,但網際網路並非一直都是全球性的;它一開始只是一個概念模型,隨著時間的推移慢慢地建立起來,成為 Lyon 這幅視覺震撼的藝術作品中的龐然大物。在學習網路時有許多因素需要考慮,例如最後一英里(last mile)、客戶家與網路服務供應商網路之間的連線,一直到擴大到網際網路的地緣政治版圖。網際網路已融入我們的社會結構。在本書中,我們將討論網路如何運作,以及 Kubernetes 如何為我們抽象網路。
1.2. OSI Model
OSI 模型是描述兩個系統如何透過網路進行通訊的概念架構。OSI 模型將跨網路傳送資料的責任細分為不同層級。這對於描述每層責任之間的關係以及資料如何透過網路傳送的教育目的非常有效。有趣的是,它本來是用來為網路提供電力的通訊協定套件,但卻因為 TCP/IP 而失敗。
以下是概述 OSI 模型和通訊協定的 ISO 標準:
- ISO/IEC 7498-1,「The Basic Model (基本模式)」
- ISO/IEC 7498-2,「Security Architecture (安全架構)」
- ISO/IEC 7498-3,「Naming and Addressing (命名和定址)」
- ISO/IEC 7498-4,「Management Framework (管理架構)」。
ISO/IEC 7498-1 描述了 OSI 模型嘗試傳達的內容:
OSI 模型的描述是一種複雜而精確的方式,說明網路有如蛋糕或洋蔥般分層。如下圖所示,OSI 模型將網路的責任分成七個不同的層級,每個層級都有不同的功能,以協助資訊從一個系統傳輸到另一個系統。各層封裝來自其下一層的資訊;這些層分別是 Application (應用程式層)、Presentation (呈現層)、Session (會話層)、Transport (傳輸層)、Network (網路層)、Data Link (資料連結層)和 Physical (實體層)。在接下來的幾頁中,我們將介紹每一層的功能,以及它如何在兩個系統之間傳送資料。

每層從上一層取得資料,並將其封裝成其 Protocol Data Unit (通訊協定資料單元 PDU)。PDU 用於描述各層的資料。PDU 也是 TCP/IP 的一部分。會話層的應用程式被視為 PDU 的「資料」,為通訊準備應用程式資訊。傳輸層使用連接埠(ports)來區分本機系統上哪個進程負責資料。網路層的 PDU 是封包。封包是在網路之間路由的獨特資料片段。資料連線層是訊框或段。每個封包被分割成訊框,檢查是否有錯誤,然後在本端網路上傳送出去。物理層在媒體上以位元傳輸訊框。接下來我們將詳細介紹每一層: