TCP/IP 其實是兩個協定#
TCP/IP 是現代網路事實上的標準協定。雖然我們常把 TCP/IP 當成單一協定看待,它其實是兩個協定的組合:傳輸控制協定(Transmission Control Protocol, TCP) 與網際網路協定(Internet Protocol, IP)。這兩者同屬網際網路協定套組(Internet Protocol Suite, IPS)——一個描述網路流量如何在網際網路上傳送的概念模型,它把網路通訊拆成四層。

圖表 1-2:網際網路協定套組的分層
四層協定堆疊#
這四層構成一個協定堆疊(protocol stack),由下而上如下:
| 層 | 名稱 | 職責 | 代表協定 |
|---|---|---|---|
| 1 | 連結層(Link layer) | 描述在區域網路上,於節點間傳遞資訊的實體機制 | Ethernet(有線與無線)、PPP |
| 2 | 網際層(Internet layer) | 為網路節點提供定址機制,節點不必位於同一區域網路 | IPv4、IPv6 |
| 3 | 傳輸層(Transport layer) | 負責用戶端與伺服器間的連線,有時確保封包順序並提供服務多工 | TCP、UDP |
| 4 | 應用層(Application layer) | 承載各種網路應用協定 | HTTP、SMTP、DNS |
傳輸層的服務多工(service multiplexing),是讓單一節點能同時支援多種服務:每個服務分配一個號碼,這個號碼就是連接埠(port)。本書後續會把重心主要放在應用層。
分層之間如何互動#
每一層只與它上面和下面的層互動,但整個堆疊仍必須和外部世界打交道。堆疊有兩個外部連接點:
- 底部:連結層對接實體網路連線,用電流或光脈衝等實體介質傳輸資料。
- 頂部:應用層對接使用者應用程式(application)——一組相關功能的集合,用來提供服務給使用者。
以一個處理電子郵件的應用程式為例,它提供的服務就是透過網路收送訊息。這類應用程式通常包含三個元件:
- 網路通訊:負責透過網路收送與處理資料,郵件應用多半採用 SMTP 或 POP3 這類標準協定。
- 內容剖析器(content parser):把網路傳來的內容抽取並處理,內容可能是文字(如信件內文),也可能是圖片或影片。
- 使用者介面(UI):讓使用者檢視收到的信件、撰寫新信件,例如以 HTML 在瀏覽器中顯示郵件。

圖表 1-3:郵件應用程式範例
和 UI 互動的「使用者」不一定是人。它也可以是另一支透過命令列工具自動收送郵件的程式。分析協定時記得把這種自動化情境也納入考量。