網路與通訊端
網路與通訊協定(network and protocol)
想像兩個人想交談,卻待在不同房間。首先他們需要一條能在房間之間傳遞聲音的途徑——一條電話線。其次,他們需要對如何使用它有個約定:誰先開口、共用什麼語言、怎麼說「我沒聽清楚,再說一次」。網路就是在機器之間搬運訊息的線路;通訊協定則是關於那些訊息代表什麼、以及以什麼順序傳送的約定。
更精確地說,網路是一群相連的機器,使位元組能從一台傳到另一台——透過銅線、光纖或無線電。通訊協定則是雙方以完全相同方式實作的成文規則書:它固定了每則訊息的確切格式(哪些位元組代表什麼)、訊息必須遵循的順序,以及每一方該如何回應。因為兩端都遵守同一本規則書,某家公司製造的筆電才能與另一家從未謀面的伺服器交談。網際網路之所以能運作,正是因為大家都同意採用同一小組通訊協定。
為何重要:在網路裡,幾乎沒有什麼事在你把「線路」和「規則」分開之前是說得通的。線路只搬運位元;它根本不知道這些位元代表什麼。所有意義——「這是一個請求」、「這是訊息的結尾」、「把那一段重傳」——都住在通訊協定裡,而協定是你和對方都在執行的軟體。這個領域大部分內容,其實都在談你正在說哪一種協定,以及它的規則書承諾了什麼。
當你的瀏覽器抓取一個頁面時,網路(你的 wifi、路由器、橫越城市的光纖)搬運位元組;通訊協定(HTTP 騎在 TCP 上、TCP 騎在 IP 上)則決定這些位元組代表「GET 這個頁面」以及「頁面在此,共 8421 位元組長」。
同一條線可以載送任何協定;賦予位元組意義的是規則書,而不是電纜。
通訊協定不是你下載的某個程式,而是許多程式共同實作的一份規格。同一協定的兩個正確實作,即使不共用任何程式碼,也必須能互通。
又稱
另見