網路與通訊端

TCP/IP 模型與其分層(TCP/IP model and layers)

寄一封信牽涉到好幾項層層相疊的工作:你寫下文字、把它放進寫好地址的信封、郵局把信封從一個城市轉送到另一個城市、郵車再實際把它送到某條路上。沒有人會一步做完這一切——每一層只處理一件事,其餘交給下層。TCP/IP 模型以同樣方式組織網路軟體,成為一疊四層的堆疊,每一層只需做好自己的工作,並信任下層去搬運它的資料。

由下往上:連結層(link layer)在單一實體跳躍上搬移位元組(你的 wifi 或乙太網路卡驅動程式與電纜)。網際網路層(IP)把一個封包經過許多跳躍,從任一台機器送到任何另一台,並選擇路徑,但不保證它會抵達。傳輸層(TCP 或 UDP)在兩個程式之間端對端運行,補上 IP 所缺的特質——TCP 加上可靠與順序,UDP 則保持簡單。應用層則是你真正的協定(HTTP、DNS、或你自己的),用對人有意義的語彙交談。每一層把上層的資料包進自己的標頭,就像層層相套的信封,接收端再以相反順序拆開。

為何重要:正是這種分層,讓你能寫出一個聊天程式,卻不必知道它跑在 wifi 還是光纖上;也讓網際網路在設計數十年後,能加入無線傳輸而不必把一切重寫。身為通訊端程式設計者,你大多活在傳輸層與應用層——你挑選 TCP 或 UDP、說你的協定——並信任 IP 與連結層把資料送達。著名的 OSI 模型有七層;實務上的網際網路則跑在這四層上。

你在聊天程式裡打的「hello」會變成:應用層說這是一則聊天訊息,TCP 用連接埠與序號把它包起來,IP 再用來源與目的 IP 位址包住那個,連結層再用硬體位址包住、並把位元推上線路。對端以相反順序剝開信封,把「hello」交給它的聊天程式。

每一層在往下時加上自己的標頭、往上時把它移除——層層相套的信封。

這些層是一個模型,不是各自獨立的機器。它們大多是同一台電腦上不同的軟體(與部分硬體);「線路上的封包」其實就是所有標頭層層相套、把你的資料包在最中央。

又称
internet protocol suitenetwork layers網路分層網際網路協定族