基礎:網路是什麼

通訊協定(protocol)

兩個素未謀面的人仍能講電話,因為雙方都知道一套不言而喻的腳本:一方說「喂?」,另一方回應,兩人輪流講,並在掛斷前說「再見」。那套共用的腳本——說什麼、以什麼順序、每一步做什麼——就是協定。網路通訊協定對機器而言是同一個概念:一份協議,讓由陌生人打造的裝置得以合作。

關鍵是,協定不只是一種資料格式。它定義三件事:所交換訊息的格式(哪些位元組代表什麼)、訊息可被傳送與接收的順序,以及每一方在傳送或接收訊息時所採取的動作(包含遇到錯誤或逾時時該怎麼辦)。一個精確的例子是建立 TCP 連線:用戶端送出 SYN,伺服器回覆 SYN-ACK,用戶端再送 ACK(三向交握)。格式規定 SYN 長什麼樣;順序規定 SYN 在 ACK 之前;動作規定「收到 SYN 時,配置狀態並回覆 SYN-ACK」。三者合起來才是協定。

協定無所不在,而且會堆疊:HTTP 承載你的網頁請求,跑在提供可靠性的 TCP 之上,TCP 跑在負責定址的 IP 之上,IP 又跑在負責實際連結的乙太網路或 Wi-Fi 之上。每一個都是各自獨立、有完整文件的協議(許多寫成 IETF 的 RFC)。正因為規則公開而精確,任何人都能打造可互通的裝置——這正是為何某家公司做的手機,能跨越十多家公司擁有的網路,與另一家公司做的伺服器對話。

建立 TCP 連線的三向交握——SYN、SYN-ACK、ACK——就是一個小型協定:它固定了訊息格式、順序(SYN 在 ACK 之前),以及每一方收到各訊息時所採取的動作。

格式 + 順序 + 動作——三者俱全,而不只是資料的排列方式。

常見誤解:把協定等同於檔案格式。格式只是其中三分之一;排序規則與收送時的動作同樣是協議的一部分。

又稱
network protocolcommunication protocol協定協定/通訊協定