什麼是網路?#

先從最基本的問題開始:什麼是網路?網路(network)是兩台以上的電腦連接在一起以分享資訊的集合。 我們習慣把每一台連上網路的裝置稱為節點(node),因為這樣的說法能涵蓋更廣的裝置類型,而不只是「電腦」。

想像一個由三個節點組成的簡單網路:每個節點的作業系統或硬體可能都不同,但只要它們都遵守同一套規則,就能彼此溝通。這套規則就是網路協定(network protocol)

圖表 1-1:由三個節點組成的簡單網路

節點之間能否溝通,關鍵不在硬體或作業系統是否相同,而在於是否理解同一種網路協定。網路上的所有節點必須共用相同協定,才能正確通訊。

協定負責哪些事#

一個網路協定通常會承擔以下一項或多項功能:

  • 維持工作階段狀態(maintaining session state):提供建立新連線與終止既有連線的機制。
  • 透過定址識別節點(addressing):資料必須送到正確的節點,因此協定常實作一套定址機制,用來指認特定節點或節點群組。
  • 控制流量(controlling flow):網路能傳輸的資料量有上限,協定可藉由管理資料流來提升吞吐量、降低延遲。
  • 保證資料順序:許多網路不保證送出順序等於接收順序,協定可重新排序資料以確保正確遞送。
  • 偵測與更正錯誤:網路並非百分之百可靠,資料可能損毀;協定需要偵測損毀,理想上還能加以更正。
  • 格式化與編碼資料:資料不一定是適合在網路上傳輸的格式,協定可規範編碼方式,例如把英文文字編成二進位值。

不是每個協定都得包辦以上全部功能。實務上,這些職責常被拆分到不同協定、由不同分層各司其職——這正是下一節「網際網路協定套組」分層設計的動機。