??作者:一只愛打拳的程序猿,Java領域新星創(chuàng)作者,CSDN、阿里云社區(qū)優(yōu)質創(chuàng)作者。
??專欄收錄于:計算機網絡原理
本期講解協(xié)議、OSI七層模型、TCP/IP五層模型、網絡設備所在的分層、數(shù)據(jù)的封裝和分傭。
目錄
1. 什么要有協(xié)議?
2. 協(xié)議的分層
2.1 協(xié)議分層的好處
3. OSI七層模型
4. TCP/IP協(xié)議五層模型
5、網絡設備所在分層
6、封裝和分用
6.1?封裝
6.1 分用
1. 什么要有協(xié)議?
假如網絡通信過程中,我給別人發(fā)一條信息“你吃飯了嗎?緊接著發(fā)了一個動圖表情包。有一個問題,接收者是如何區(qū)分我發(fā)的是文字還是圖片呢?
我們知道,數(shù)據(jù)傳輸?shù)倪^程是通過 0和1 這樣的二進制數(shù)據(jù)進行發(fā)送的。那么發(fā)送者和接受者如何區(qū)分傳輸?shù)?0和1 二進制數(shù)據(jù)是關于文字的還是圖片的呢?因此,我們可以通過協(xié)議來規(guī)定相應的格式。
2. 協(xié)議的分層
TCP/IP協(xié)議分層模型有:TCP/IP四層模型、TCP/IP五層模型、OSI七層模型。
對于我們程序猿來說,我們需要搞懂 TCP/IP五層協(xié)議 中的前四種協(xié)議即可。因為物理層主要是一些傳輸介質(網線等)類似于電腦的硬件部分,我們軟件開發(fā)無需深入了解。
網絡編程是通過應用層進行的,因此我們在后期 網絡編程 的學習中,把應用層的一些規(guī)范與使用深入學習即可,而其他層我們只需要了解它們是什么就足夠了。
2.1 協(xié)議分層的好處
分層最大的好處,類似于面向接口編程:定義好兩層間的接口規(guī)范,讓雙方遵循這個規(guī)范來對接。
調用方,當調用方使用這些接口時候不關心接口具體是怎么實現(xiàn)的。
提供方,提供方利用封裝的特性,隱藏了協(xié)議實現(xiàn)的細節(jié),只需要開放接口即可。
3. OSI七層模型
OSI:即Open System Interconnection,開放系統(tǒng)互連。它分為:物理層、數(shù)據(jù)鏈路層、網絡層、傳輸層、會話層、表示層、應用層(由低到高)。
應用層:針對特定引用的協(xié)議。
表示層:設備固有數(shù)據(jù)格式和網絡標準數(shù)據(jù)格式的轉換。
會話層:通信管理,負責建立和斷開通信連接,管理傳輸層以下的分層。
傳輸層:管理兩個節(jié)點之間的數(shù)據(jù)傳輸,負責可靠的數(shù)據(jù)傳輸。
網絡層:地址管理與路由選擇。
數(shù)據(jù)鏈路層:互聯(lián)設備之間傳送和識別數(shù)據(jù)幀。
物理層:傳輸 0、1 這樣的代表高低電平數(shù)據(jù),通過特定的傳輸介質來傳輸。
OSI七層模型是教科書級別的。我們作為一名程序猿,只需要掌握TCP/IP五層協(xié)議即可。
4. TCP/IP協(xié)議五層模型
作為一名程序猿,對于TCP/IP五層協(xié)議,應掌握應用層和熟悉傳輸層,特別是以下兩層對應協(xié)議:
- 應用層:HTTP協(xié)議、FTP協(xié)議、SMTP協(xié)議和POP3協(xié)議等。這些協(xié)議是應用程序與網絡的接口,程序猿需要了解其通信過程和數(shù)據(jù)格式,從而編寫適合的程序進行數(shù)據(jù)交互。
- 傳輸層:TCP和UDP協(xié)議。TCP協(xié)議可確保傳輸?shù)臄?shù)據(jù)完整性和順序性,使用范圍較廣;UDP協(xié)議傳輸速度更快,但無法保證數(shù)據(jù)的完整性和順序性。
應用層:負責程序之間的溝通,簡單的電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網絡遠程訪問協(xié)議等(Telent)等。我們程序員網絡編程就是針對應用層來進行的。
傳輸層:負責兩臺主機之間的數(shù)據(jù)傳輸。如傳輸控制協(xié)議 (TCP),能夠確保數(shù)據(jù)可靠的從源主機發(fā)
送到目標主機。
網絡層:負責地址管理和路由選擇。例如在IP協(xié)議中,通過IP地址來標識一臺主機,并通過路由表
的方式規(guī)劃出兩臺主機之間的數(shù)據(jù)傳輸?shù)木€路(路由)。路由器(Router)工作在網路層。
數(shù)據(jù)鏈路層:負責設備之間的數(shù)據(jù)幀的傳送和識別。例如網卡設備的驅動、幀同步(就是說從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就自動重發(fā))、數(shù)據(jù)差錯校驗等工作。有以太網、令牌環(huán)網,無線LAN等標準。交換機(Switch)工作在數(shù)據(jù)鏈路層。
物理層:負責光/電信號的傳遞方式。比如現(xiàn)在以太網通用的網線(雙絞 線)、早期以太網采用的的同軸電纜(現(xiàn)在主要用于有線電視)、光纖,現(xiàn)在的wifi無線網使用電磁波等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)工作在物理層。
舉例說明:我在網上買一個物品,需要賣家信息(源IP地址)、我的信息(目的IP地址)。物流(協(xié)議)要歷經廣州,長沙,武漢。運輸路徑可以是空運(廣州直達武漢)、慢達(廣州、長沙、武漢)。
應用層:告訴快遞站,賣家要快遞給我的貨物是什么,根據(jù)貨物的類型好用相應的包裝發(fā)送。
應用層負責程序之間的溝通,規(guī)定使用的格式。
傳輸層:我和賣家都不關注中間是怎么傳輸?shù)?,只關心起點和終點對應的就是源IP地址與目的IP地址。
傳輸層主要關注源IP地址與目的IP地址,不考慮中間路徑。
網絡層:發(fā)貨地址是長沙,收獲地址是武漢。長沙到武漢可以空運、火車,網絡層可選擇合適的路徑進行運輸。
網絡層主要負責兩個遙遠節(jié)點之間的路徑規(guī)劃。
?數(shù)據(jù)鏈路層:運輸路徑選擇了慢達,廣州到長沙使用的是貨車,長沙再到武漢使用的火車。
數(shù)據(jù)鏈路層主要負責兩個相鄰節(jié)點之間的傳輸。
物理層:網絡通信的基礎設施,也就是一些網線、光纖、網絡接口,也就是網絡上的告訴公路。?
5、網絡設備所在分層
何為網絡設備,就是聯(lián)網所需要的設備,如電腦主機、路由器、交換機、集線器等。
主機:主機,它的操作系統(tǒng)內核實現(xiàn)了從傳輸層到物理層的內容,對應的TCP/IP五層模型的下四層即:傳輸層、網絡層、數(shù)據(jù)鏈路層、物理層。
路由器:?路由器,它實現(xiàn)了從網絡層到物理層,對應的是TCP/IP五層模型的下三層即:網絡層、數(shù)據(jù)鏈路層、物理層。
交換機:交換機,它實現(xiàn)從了從數(shù)據(jù)鏈路層到物理層,對應的是TCP/IP五層模型的下兩層。
集線器:集線器,只實現(xiàn)了物理層。
我們日常生活中所說的交換機也稱為?二層交換機?工作在 TCP/IP五層模型中的下兩層(數(shù)據(jù)鏈路層、物理層)。
路由器也稱為 三層路由器?工作在 TCP/IP五層模型中的下三層(網絡層、數(shù)據(jù)鏈路層、物理層)。
6、封裝和分用
在協(xié)議被分層好的情況下,數(shù)據(jù)是怎樣通過網絡傳輸?shù)牡哪??答案是通過封裝和分用。
發(fā)送方發(fā)送數(shù)據(jù),要把數(shù)據(jù)從上到下,依次交給對應層次的協(xié)議,進行封裝。
接收方收到數(shù)據(jù),要把數(shù)據(jù)從下到上,依次也交給對應層次的協(xié)議,進行分用(解封裝)。
假設我給張三發(fā)一條信息:“你吃飯了嗎?”。模擬這條信息,在各個層次進行封裝與分用的效果。
6.1?封裝
(1)?應用層
應用層拿到“你吃飯了嗎?”這條信息,進行封裝,封裝成應用層數(shù)據(jù)包。一個應用層數(shù)據(jù)包大概分為發(fā)送方,接收方,時間,發(fā)送內容這四個模塊。
當然,以上的信息會變成一個字符串。通過 + 號進行連接。如1234;6698;2023061510503;"你吃飯了嗎?",分別對應的是發(fā)送方、接收方、時間、發(fā)送內容?。真實開發(fā)中,這些數(shù)據(jù)包可能封裝得更難,在此大家理解即可。
(2) 傳輸層
傳輸層在拿到應用層的數(shù)據(jù)包后,把該數(shù)據(jù)包再次封裝成傳輸層對應的數(shù)據(jù)包。傳輸層對應的協(xié)議比較多,最典型的是 TCP 和 UDP。
在本篇博文中以 UDP 協(xié)議為例,UDP 會提供一個 UDP 數(shù)據(jù)報頭里面包含源端口和目的端口。源端口即發(fā)送方程序的端口號,目的端口即接收方程序的端口號。
本質上,加上了UDP數(shù)據(jù)報頭也相當于字符串拼接。
(3)網絡層
傳輸層已經把數(shù)據(jù)封裝成帶有 UDP 數(shù)據(jù)報頭的數(shù)據(jù)包了,接下來網絡層就要把數(shù)據(jù)包加上 IP 協(xié)議報頭。
源IP地址就是表示這次傳輸過程中的起點,目的IP就是表示這次傳輸過程中的終點。加上了 IP 協(xié)議報頭,也是通過字符串拼接的。
?(4)數(shù)據(jù)鏈路層
網絡層把數(shù)據(jù)包交給數(shù)據(jù)鏈路層,此時會用到以太網幀,此時涉及到mac地址。mac地址也叫做物理地址,描述的是主要在網絡中的位置,跟IP地址很像,但比IP地址更詳細。
IP地址是兩個較遠節(jié)點之間交互,mac地址是相鄰節(jié)點之間交互。在本文 4. TCP/IP協(xié)議五層模型中有詳細介紹。
注意,以太網幀分為幀頭和幀尾,目前我們只需要掌握幀頭即可。幀頭包括源mac地址和目的mac地址。mac地址是和網卡進行綁定的,每個設備都會有一個唯一標識的 mac 地址(理論上)。?
(5)物理層
物理層在接受到上層以太網的數(shù)據(jù)幀后,就把數(shù)據(jù)包所拼接的字符串 0和1 這樣的二進制數(shù)據(jù)轉換為光信號/電信號等信號進行傳輸了。
6.1 分用
通過上述講解,我們知道了封裝是從應用層到物理層,而分用恰好相反,從物理層到應用層。
(1)物理層
把光信號/電信號進行解析,還原成 0和1 的二進制序列。交給數(shù)據(jù)鏈路層。
(2)數(shù)據(jù)鏈路層
把得到 0和1 二進制序列當作一個以太網幀。把以太網幀頭、幀尾去掉,得到中間的載荷再往上把數(shù)據(jù)包交給網絡層。
以太網數(shù)據(jù)幀頭有一個消息類型,根據(jù)這個類型,網絡層就能知道數(shù)據(jù)包開頭是IP協(xié)議了。?
(3)網絡層
網絡層得到數(shù)據(jù)包后,也是進行去IP報頭,以及取出剩余載荷,把數(shù)據(jù)包上傳給傳輸層。
?IP報頭也有一個消息類型,標識當前數(shù)據(jù)包對應的是傳輸層的哪個協(xié)議。
(4)傳輸層
傳輸層得到是 UDP 報頭,因此去掉 UDP 報頭,得到載荷把數(shù)據(jù)包傳給應用層。
傳輸層會標識端口號,這樣應用層就能區(qū)分程序所在位置。
(5)應用層
最后應用層的工作,就是把數(shù)據(jù)包放到對應的程序當中。取出數(shù)據(jù)包中的信息,顯示在界面中。
注意:
- 不同的協(xié)議層對數(shù)據(jù)包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數(shù)據(jù)報(datagram),在鏈路層叫做幀(frame)。
- 應用層數(shù)據(jù)通過協(xié)議棧發(fā)到網絡上時,每層協(xié)議都要加上一個數(shù)據(jù)首部(header),稱為封裝(Encapsulation)。
- 首部信息中包含了一些類似于首部有多長,載荷(payload)有多長,上層協(xié)議是什么等信息。
- 數(shù)據(jù)封裝成幀后發(fā)到傳輸介質上,到達目的主機后每層協(xié)議再剝掉相應的首部,根據(jù)首部中的 "上層協(xié)議字段" 將數(shù)據(jù)交給對應的上層協(xié)議處理。?
關于封裝和分用在程序上,實際各層就是把數(shù)據(jù)用字符串拼接的方式進行傳輸。在現(xiàn)實傳輸中更為復雜,涉及到模電以及物理相關知識。在我們程序猿的眼中,知道知道傳輸?shù)倪^程大致是什么樣即可。
文章來源:http://www.zghlxwxcb.cn/news/detail-478897.html
?本編博文到這里就結束了,感謝點贊、評論、收藏、關注~文章來源地址http://www.zghlxwxcb.cn/news/detail-478897.html
到了這里,關于【網絡原理】TCP/IP協(xié)議五層模型的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!