應用層
這一層由應用程式實作,根據TCP協定或UP協定編寫實際的可應用程式。比如TCP提供可靠的端對端資料傳輸,那麼應用層就可以利用其性質,實作簡單的聊天程式。TCP不管傳輸内容的編碼格式,而應用層則需要有一定的編碼格式進而保證資料對應用層的可讀性。
傳輸控制層
這一層由作業系統實作。作業系統負責實作TCP或UDP協定,進而為上層的應用層提供資料收發的接口。具體表現就是,OS提供socket類及相關的系統api,使用者調用相應的方法就可以實作相關的設計。比如使用
socket.listen(),socket.bind(),socket.connect(),socket.send(),socket.accept(),socket.write()
等相關系統方法就可以完成基于TCP的連接配接和收發消息。而底層的三次握手連接配接、四次揮手斷開、擁塞控制,滑動視窗等協定内容,全由OS實作。
網絡層
網絡層的協定除了IP協定,還有ARP,RARP等,是以實作裝置也相對較多,常見的有路由、交換機、網橋、中繼器等。網絡層想要實作的就是,盡可能(盡可能不丢失,極低機率出錯)保證消息可以在端對或一對多的IP位址中準确送達目标位址主機。
資料鍊路層
資料鍊路層跟硬體打交道,主要完成的任務就是利用相應的實體裝置,傳輸IP封包到相連的下一跳。實作的裝置有網卡,路由、交換機等(由這其實可以看出,要實作網絡層的實體裝置,一般底層都實作了資料鍊路層和實體層,不然資料沒法傳輸啊……)。
實體層
實體層負責實作在實體線路的端對端完成位的可靠傳輸。至于怎麼可靠,有相應的以太或者無線協定來保證。然後這兒給上層(資料鍊路層)提供接口。實體層隻要與無線或有線直接打交道的裝置都會實作。
綜述
- 實體層和資料鍊路層是所有的肉眼可看見的實體裝置都會實作的,包括網卡、路由、交換機等一些網絡裝置(不包括PC)。
- IP層由常見物裝置和PC實作(不包括網卡)。
- 傳輸控制層由作業系統實作。
- 應用層由應用程式實作。