目錄
一. 協議的分層
二. OSI七層網絡協議
三. TCP/IP五層網絡協議
四. 網絡設備所在分層
五. 封裝
六. 分用
七. 傳輸中的封裝和分用
?八. 數據單位術語
一. 協議的分層
常見的分層為兩種OSI七層模型和TCP/IP五層模型
為什么要協議分層?
在網絡通信中,存在設計很多的細節和規則,如果這些規則依靠一個協議來說明,那么這個協議肯定會非常的復雜,如果把這一份協議根據某種要求分割成多個小份協議,為了讓這些小份協議更好的相互配合,于是就引出了協議分層(上層調用下層提供的功能,下層為上次提供服務)的概念
協議分層的好處
- 上層協議直接調用下層協議提供的接口即可,不需要了解下層協議具體的實現細節
- 某一層協議被替換掉后,不會對其他層造成影響
參考打電話,1.只需要會說漢語就可以打電話,不需要知道電話是如何工作的? 2.電話從無線電話變成有線電話,對你打電話沒有任何的影響
二. OSI七層網絡協議
?OSI七層網絡協議將網絡分為七層:應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層
- 應用層:提供應用程序之間的通信服務(電子郵件——電子郵件協議)
- 表示層:負責數據的格式化和轉換
- 會話層:負責建立、管理和終止會話
- 傳輸層:負責數據(起點和終點)兩個節點之間的數據傳輸(端到端的傳輸)
- 網絡層:負責起點和終點之間的道路(路徑規劃)
- 數據鏈路層:負責兩個相鄰節點之間的通信
- 物理層:負責在一條物理通信線路上傳輸比特
這是最初設計的七層網絡協議,后來在實施的過程中,發現太麻煩了,于是進行了簡化,現在最常用的是TCP/IP五層網絡協議
三. TCP/IP五層網絡協議
?TCP/IP五層網絡協議將網絡分為了五層:應用層,傳輸層,網絡層,數據鏈路層,物理層
- 應用層:明白數據要用來干什么,實現什么功能 (安排數據在應用程序中如何使用)
- 傳輸層:負責數據(起點和終點)兩個節點之間的數據傳輸(端到端的傳輸)
- 網絡層:負責起點和終點之間的道路(路徑規劃)
- 數據鏈路層:負責兩個相鄰節點之間的通信
- 物理層:負責在一條物理通信線路上傳輸比特
對于程序員來說,下面四層已經被操作系統內核和硬件實現好了,程序員只需要關注傳輸層提供的接口調用和具體代碼要實現怎么樣的功能即可
四. 網絡設備所在分層
設備 | 工作層級 | 核心功能 |
---|---|---|
中繼器、集線器 | 物理層 | 放大電信號、擴展物理傳輸距離,廣播信號 |
網橋、交換機 | 數據鏈路層 | 基于 MAC 地址轉發數據幀,隔離沖突域(網橋)或提供高效局域網通信(交換機)。 |
路由器 | 網絡層 | 基于 IP 地址路由數據包,連接不同網絡,選擇最優路徑。 |
負載均衡器 | 傳輸層 | 分配流量、提高系統可用性和性能,處理TCP/UDP數據段 |
網關 | 應用層 | 用于連接不同類型的網絡,處理應用層協議轉換 |
?事實上,很多的交換機和路由器功能更強大,更復雜,交換機具有路由器的一些功能(可以工作在網絡層),路由器也具有交換機的一些功能(可以工作在數據鏈路層)
五. 封裝
發送方發送數據,當數據從應用層傳遞到物理層時(從上到下),每一層都會在數據上添加自己的協議頭(或尾),形成新的數據單元。
1)應用層
- 應用層使用應用層協議,將用戶的數據封裝成應用層數據單元
- 應用程序調用操作系統提供的API,將這個數據單元交給傳輸層
- 應用層主要使用的協議:HTTP協議,HTTPS協議,根據實際情況自己定義協議
2)傳輸層
- 傳輸層使用傳輸層協議,將應用層數據單元添加TCP/UDP報頭封裝成TCP/UDP數據報
- 下層(網絡層)提供API,傳輸層調用API將數據報傳給網絡層,這樣下層就可以處理這個數據
- 傳輸層主要使用的協議:UDP協議和TCP協議
3)網絡層
- ?網絡層使用IP協議,將TCP/UDP數據報添加IP報頭并封裝成IP數據包
- 下層(數據鏈路層)提供API,網絡層調用下層API將IP數據包傳給下層,這樣數據鏈路層就可以處理數據
- 網絡層主要使用的協議:IP協議
4)數據鏈路層
- ?數據鏈路層使用以太網協議,將IP數據報添加以太網幀頭和幀尾并封裝成以太網數據幀
- 下層(物理層)提供API,數據鏈路層調用API將以太網數據幀傳給下層,這樣物理層可以處理數據
- 數據鏈路層主要使用的協議:以太網協議
5)物理層?
- ?將以太網數據幀,二進制結構的數據轉換成光信號/電信號/電磁波,然后進行發送?
添加報頭的過程就是封裝,報頭雖然起不到保護數據的操作,但是可以承載一些關鍵信息用來轉發數據信息??
上述這些一系列的操作,數據從你的電腦發送了出去(剛出家門),具體路上怎么走的,我們不管,假設數據到接收端了,數據怎么處理,處理的過程就是分用
六. 分用
1)物理層
- ?將接受到的光信號/電信號/電磁波信號,這些物理信號轉換成數字信號(二進制信號)
- 調用上層協議提供的API,將這些數據傳輸給上層, 這樣數據鏈路層就可以處理數據
2)數據鏈路層
- 得到下層傳來的二進制數據,根據以太網協議,按照以太網數據幀的格式對二進制數據進行解析,去除幀頭和幀尾,取出其中的載荷部分
- 通過調用上層(網絡層)提供的API,將載荷部分交給上層協議,網絡層就可以處理數據
3)網絡層
- 得到下層傳來的IP數據包,根據IP協議,按照IP數據包的格式進行解析,去除IP報頭,取出載荷部分
- 通過調用上層(傳輸層)提供的API,將載荷部分交給上層,傳輸層就可以處理數據
4)傳輸層
????
- ?得到下層傳來的UDP數據報,根據UDP協議,按照UDP數據報的格式進行解析,去除UDP報頭,取出其中的載荷部分
- 通過調用上層(應用層)提供的API,將載荷部分交給上層,應用層就可以處理數據
5)應用層
- ?得到下層傳來的數據,按照應用層協議,根據對應的格式來解析數據,得到這些數據后,根據自己要實現的功能來處理這些數據
七. 傳輸中的封裝和分用
在現實情況中,兩臺主機一般不是通過網線直連的?,而是通過一系列的交換機或者路由器進行網絡傳輸
- 在經過交換機或者路由器的過程中,也需要進行封裝和分用的過程
- 在封裝和分用的過程中,得到載荷部分和關鍵信息
- 由于網絡設備的不同,導致分層的程度也不同
1)交換機
?如果是交換機,則封裝分用到數據鏈路層
- 物理層得到光電信號,將光電信號轉換成二進制數據,交給數據鏈路層
- 交換機的數據鏈路層會對得到太網數據幀進行解析,
(1)取出載荷部分(2)解析幀頭中的關鍵信息
根據幀頭中的關鍵信息,決定數據往哪里發送,再進一步構建出新的以太網數據幀
?將這個新的以太網數據幀通過物理層發送出去
2)路由器?
?如果是路由器,則封裝分用到網絡層
- 物理層得到光電信號,將光電信號轉換成二進制數據,交給數據鏈路層
- 數據鏈路層得到以太網數據幀,根據數據幀拿到載荷,將載荷(IP數據包)交給網絡層
- 網絡層得到IP數據包,網絡層將會對IP數據包進行解析
(1)取出載荷部分(2)解析幀頭中的關鍵信息
根據報頭中的關鍵信息,決定數據往哪里發送,再進一步構建出新的IP數據包
將這個新的IP數據包交給數據鏈路層(加上幀頭幀尾),再交給物理層(二進制數據轉換成光電信號)繼續傳輸
?八. 數據單位術語
?常見的單位有:包(packet)段(segment)報(datagram)幀(frame)
?IP數據包,TCP數據段,UDP數據報,以太網數據幀
?點贊的寶子今晚自動觸發「躺贏錦鯉」buff!