通訊和網絡傳輸數據和像,都是傳輸數據,因此用通訊作類比,方便理解和記憶。node
好比 Alice 想知道 xxx老師的種子,向種子網站 Bob 要(pull)。這種通訊的方式就是我問,你答,也就是 HTTP 方式。git
再好比 Alice 和 Bob 是一我的寫信,一我的收,也就是說 Alice 向 Bob 發信息(push),Bob 接收,這個交流方式,就是 SMTP。github
應用層是爲用戶提供的接口,定義了用戶之間的交流方式。網絡
既然是交流,就要解決語言的問題,總不能一個講英語,一個講漢語,這個就是編碼。網站
表示層解決編碼、加密等問題。編碼
既然兩我的要通訊,如何開始?過了一段時間,不想繼續通訊了,如何結束?這些都是會話層要處理的。加密
會話層控制兩臺電腦之間的連接。htm
兩我的要通訊了,因爲傳輸途徑的限制,一封信會被切割爲一個一個段落(segment)。那麼其中一個段落傳丟了怎麼辦?要不要重傳?每一個段落,要順訊到達嗎?這些就是 TCP/UDP 的區別。傳輸層用來解決這些問題。blog
傳輸層解決主機間的數據傳輸(能夠是不一樣網絡)和傳輸質量的問題。接口
通訊前,選好了對話的姿式(應用層),有了傳輸內容的表示形式(表示層),傳輸的質量有了保證(傳輸層)。
那怎麼標識 Bob 呢?固然是地址了,好比 xxx 市 xxx 小區 : 100-505 室。
也就是小區 :門牌號,小區比如主機,小區的地址就是 IP ,門牌號就是端口號。
有了地址,選擇怎樣的路徑呢?
一個地方到另外一個地方的方式有不少種。好比深圳到北京,能夠先從深圳 - 廣州 - 北京,
也能夠是 深圳 - 鄭州 - 北京。
有遠有近,有快有慢,要走哪條路的事情。既路由(routing)和傳輸控制(subnet traffic control)。
網絡層解決的是不一樣網絡間數據傳輸問題。
咱們知道了,從深圳到北京,能夠在廣州中轉。但北京傳到深圳的信息是正確的嗎(error detect)?不正確怎麼更正error correct)?這些問題,都由數據鏈路層解決。
數據鏈路層接解決直接相連的兩個節點(node)數據傳輸的問題。
物理硬件和物理硬件有是怎麼鏈接的呢?網線是什麼?頻率等物理特性是什麼,這些都是物理層所要解決的。
OSI 7-Layer Model and the role of each layer
The OSI Model's Seven Layers Defined and Functions Explained