今天我們來聊聊網(wǎng)絡(luò)協(xié)議。
1. OSI模型
網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)中兩臺計算機之間傳輸數(shù)據(jù)的標(biāo)準(zhǔn)語言。各種計算機系統(tǒng)使用 OSI(Open Systems Interconnection)模型規(guī)定的標(biāo)準(zhǔn)相互通信。OSI 模型有七個抽象層,每個層都有不同的職責(zé)和協(xié)議。
下圖顯示了 OSI 模型中每一層的功能。每一層都為其上層提供一類功能,并由其下層為其提供服務(wù)。
應(yīng)用層
應(yīng)用層最接近終端用戶。大多數(shù)應(yīng)用程序都位于這一層。我們從后端服務(wù)器請求數(shù)據(jù),無需了解數(shù)據(jù)傳輸?shù)木唧w細(xì)節(jié)。這一層的協(xié)議包括 HTTP、SMTP、FTP、DNS 等。
表現(xiàn)層
這一層處理數(shù)據(jù)編碼、加密和壓縮,為應(yīng)用層準(zhǔn)備數(shù)據(jù)。例如,HTTPS 利用 TLS(Transport Layer Security)實現(xiàn)客戶端與服務(wù)器之間的安全通信。
會話層
該層用于打開和關(guān)閉兩個設(shè)備之間的通信。如果數(shù)據(jù)量較大,會話層就會設(shè)置檢查點,避免從頭開始重新發(fā)送。
傳輸層
該層處理兩個設(shè)備之間的端到端的通信。它在發(fā)送方將數(shù)據(jù)分解成段,然后在接收方重新組裝。這一層有流量控制,以防止擁塞。這一層的主要協(xié)議是 TCP 和 UDP。
網(wǎng)絡(luò)層
這一層實現(xiàn)不同網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸。它進一步將網(wǎng)段或數(shù)據(jù)報分解成更小的數(shù)據(jù)包,并使用 IP 地址找到通往最終目的地的最佳路由。
數(shù)據(jù)鏈路層
這一層允許在同一網(wǎng)絡(luò)的設(shè)備之間傳輸數(shù)據(jù)。數(shù)據(jù)包被分解成幀,這些幀被限制在局域網(wǎng)內(nèi)。
物理層
這一層通過電纜和交換機發(fā)送比特流,因此與設(shè)備之間的物理連接密切相關(guān)。
與 OSI 模型相比,TCP/IP 模型只有 4 層。在討論網(wǎng)絡(luò)協(xié)議的層次時,必須明確上下文。
2. OSI 封裝
既然我們已經(jīng)了解了每一層的職責(zé),那就讓我們用下圖來總結(jié)一下數(shù)據(jù)傳輸過程。這就是所謂的封裝(encapsulation)和去封裝(decapsulation)。封裝是指在數(shù)據(jù)向目的地傳輸?shù)倪^程中為數(shù)據(jù)添加報頭。解封裝會移除這些報頭,以獲取原始數(shù)據(jù)。
步驟 1:
當(dāng)設(shè)備 A 使用 HTTP 通過網(wǎng)絡(luò)向設(shè)備 B 發(fā)送數(shù)據(jù)時,最初會在應(yīng)用層添加一個 HTTP 報頭。
步驟 2:
在數(shù)據(jù)中添加 TCP 或 UDP 報頭。它在傳輸層被封裝成 TCP 段。報頭包含源端口、目的端口和序列號。
步驟 3:
然后在網(wǎng)絡(luò)層用 IP 報頭對這些段落進行封裝。IP 報頭包含源 IP 地址和目的 IP 地址。
步驟 4:
在數(shù)據(jù)鏈路層為 IP 數(shù)據(jù)報添加 MAC 報頭,其中包含源 MAC 地址和目的 MAC 地址。
步驟 5:
封裝幀被發(fā)送到物理層,并作為比特流在網(wǎng)絡(luò)上發(fā)送。
步驟 6-10:
設(shè)備 B 從網(wǎng)絡(luò)接收到比特流后,會啟動去封裝過程,這與封裝過程相反。報頭逐層去除,直到設(shè)備 B 可以訪問原始數(shù)據(jù)。
請注意,每一層都使用報頭來處理指令,而不需要解封上一層的數(shù)據(jù)。
3. 常用網(wǎng)絡(luò)協(xié)議
下面的動圖展示了常用的一些網(wǎng)絡(luò)協(xié)議及其使用場景。
HTTP
HTTP 是一種用于獲取 HTML 文檔等資源的協(xié)議。它是網(wǎng)絡(luò)數(shù)據(jù)交換的基礎(chǔ),也是一種客戶端-服務(wù)器協(xié)議。
HTTP/3
HTTP/3 是 HTTP 的下一個重要修訂版本。它在 QUIC 上運行。QUIC 是一種新的傳輸協(xié)議,專為移動互聯(lián)網(wǎng)而設(shè)計。它依賴于 UDP 而不是 TCP,這使得網(wǎng)頁響應(yīng)速度更快。VR 應(yīng)用程序需要更多帶寬來迅速呈現(xiàn)虛擬場景的復(fù)雜細(xì)節(jié),因此遷移到由 QUIC 支持的 HTTP/3 會從中受益。
HTTPS
HTTPS 擴展了 HTTP,并使用加密技術(shù)實現(xiàn)安全通信。
WebSocket
WebSocket 是一種通過 TCP 提供全雙工通信的協(xié)議??蛻舳送ㄟ^建立 WebSocket 從后端服務(wù)接收實時更新。與總是 "拉取 "數(shù)據(jù)的 REST 不同,WebSocket 可以 "推送 "數(shù)據(jù)。在線游戲、股票交易和消息應(yīng)用程序等都利用 WebSocket 進行實時通信。
TCP
TCP 設(shè)計用于在互聯(lián)網(wǎng)上發(fā)送數(shù)據(jù)包,確保數(shù)據(jù)和信息在網(wǎng)絡(luò)上成功傳遞。許多應(yīng)用層協(xié)議都建立在 TCP 協(xié)議之上。
UDP
UDP 直接向目標(biāo)計算機發(fā)送數(shù)據(jù)包,無需先建立連接。UDP 通常用于對時間敏感的通信,因為這種情況下偶爾丟棄數(shù)據(jù)包比等待更好。語音和視頻應(yīng)用通常使用此協(xié)議發(fā)送數(shù)據(jù)。
SMTP
SMTP 是一種標(biāo)準(zhǔn)協(xié)議,用于將電子郵件從一個用戶傳輸?shù)搅硪粋€用戶。
FTP
FTP 用于在客戶端和服務(wù)器之間傳輸計算機文件。它有獨立的控制通道和數(shù)據(jù)通道連接。
我們來把這些網(wǎng)絡(luò)協(xié)議放到分布式系統(tǒng)中看看它們的典型應(yīng)用。
-
網(wǎng)絡(luò)協(xié)議
+關(guān)注
關(guān)注
3文章
267瀏覽量
21534 -
OSI
+關(guān)注
關(guān)注
0文章
81瀏覽量
15412 -
網(wǎng)絡(luò)模型
+關(guān)注
關(guān)注
0文章
44瀏覽量
8425
原文標(biāo)題:面試官:你背誦一下,OSI七層網(wǎng)絡(luò)模型
文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論