解讀必要的應(yīng)用層協(xié)議
應(yīng)用層協(xié)議是規(guī)定在網(wǎng)絡(luò)上應(yīng)用程序之間通信的一組規(guī)則和標(biāo)準(zhǔn)。它們在互聯(lián)網(wǎng)協(xié)議套件的最高層操作,負(fù)責(zé)端到端通信和用戶界面功能。
在本文中,我們將涵蓋所有核心通信、與電子郵件相關(guān)以及實時通信到系統(tǒng)設(shè)計面試中主要使用的文件傳輸協(xié)議的關(guān)鍵應(yīng)用協(xié)議。
理解客戶端-服務(wù)器模型
首先,讓我們了解客戶端-服務(wù)器模型,這是互聯(lián)網(wǎng)的基本架構(gòu),其中客戶端請求資源或服務(wù),而服務(wù)器提供它們。這個模型是網(wǎng)絡(luò)編程和Web應(yīng)用程序開發(fā)的核心。
當(dāng)然,服務(wù)器也可以與其他服務(wù)器通信,而客戶端并不總是最終用戶;它通常只是另一個程序?qū)で髷?shù)據(jù)。
這些數(shù)據(jù)傳輸規(guī)則由應(yīng)用協(xié)議設(shè)置,規(guī)定了數(shù)據(jù)在網(wǎng)絡(luò)上如何傳輸和接收。
核心通信協(xié)議
最常見的協(xié)議是HTTP,它代表超文本傳輸協(xié)議,建立在TCP/IP之上。
它是一種請求-響應(yīng)協(xié)議,但可以將其想象成一場沒有記憶的對話。每次交互都是分開的,沒有對過去的記憶 — 這意味著服務(wù)器不存儲請求之間的任何上下文;相反,每個請求包含所有必要的信息。
請注意,標(biāo)頭包含URL和方法等詳細(xì)信息,而正文攜帶請求或響應(yīng)的內(nèi)容。
每個響應(yīng)還包括狀態(tài)代碼,提供有關(guān)客戶端對服務(wù)器的請求結(jié)果的反饋。例如:
- 2xx 成功代碼 表示成功接收和處理請求。
- 3xx 重定向代碼:這表示用戶代理需要采取進一步的操作來滿足請求。
- 4xx 客戶端錯誤代碼:當(dāng)請求包含錯誤的語法或無法滿足時使用。
- 5xx 服務(wù)器錯誤代碼:服務(wù)器無法滿足有效請求。
最常用的HTTP方法包括GET、POST、PUT、PATCH和DELETE。
WebSockets:Web的活線
HTTP是一種單向連接,通常是從客戶端到服務(wù)器,但如果我們需要雙向連接怎么辦?
為了實現(xiàn)實時更新,我們使用WebSockets,它提供了在單個長連接上的全雙工通信通道,允許服務(wù)器向客戶端推送實時更新。
這對于需要持續(xù)數(shù)據(jù)更新而無需重復(fù)的HTTP請求-響應(yīng)循環(huán)的應(yīng)用程序至關(guān)重要。
比如聊天應(yīng)用、實時體育新聞或股票市場信息,這些場景中活動不停,對話也是如此。
與電子郵件相關(guān)的協(xié)議
在與電子郵件相關(guān)的協(xié)議中,SMTP是互聯(lián)網(wǎng)上的電子郵件傳輸?shù)臉?biāo)準(zhǔn)。
它是在服務(wù)器之間發(fā)送電子郵件消息的協(xié)議。大多數(shù)電子郵件客戶端使用SMTP發(fā)送電子郵件,并使用IMAP或POP3之一檢索它們。
?IMAP(Internet Message Access Protocol):IMAP從服務(wù)器檢索電子郵件,允許客戶端訪問和操作消息,就像它們存儲在本地一樣,這對于需要從多個設(shè)備訪問電子郵件的用戶非常理想。?POP3(郵局協(xié)議第3版):POP3用于從服務(wù)器下載電子郵件到本地客戶端,通常在從單個設(shè)備管理電子郵件時使用。
文件傳輸和管理協(xié)議
FTP是通過互聯(lián)網(wǎng)傳輸文件的傳統(tǒng)協(xié)議,通常用于網(wǎng)站維護和大數(shù)據(jù)傳輸。
它用于在客戶端和服務(wù)器之間傳輸文件,上傳文件到服務(wù)器或備份文件。
我們還有SSH(安全外殼),用于在不安全的網(wǎng)絡(luò)上安全地操作網(wǎng)絡(luò)服務(wù)。
它通常用于登錄到遠程計算機并執(zhí)行命令或傳輸文件。
實時通信協(xié)議
我們還有實時通信協(xié)議,比如WebRTC,它實現(xiàn)了瀏覽器對瀏覽器的應(yīng)用程序,用于語音通話、視頻聊天和文件共享,無需內(nèi)部或外部插件。
這對于視頻會議和實時流媒體等應(yīng)用程序至關(guān)重要。
一些其他流行的實時通信協(xié)議
包括:
- MQTT(消息隊列遙測傳輸):MQTT是一種輕量級的消息傳遞協(xié)議,適用于處理能力有限且需要低帶寬的設(shè)備,例如物聯(lián)網(wǎng)設(shè)備。它針對高延遲或不可靠網(wǎng)絡(luò)進行了優(yōu)化。
- AMQP(高級消息隊列協(xié)議):AMQP是面向消息的中間件的協(xié)議,為企業(yè)級消息通信提供了強大的穩(wěn)健性和安全性。例如,它與RabbitMQ等工具一起使用。
什么是RPC?
讓我們還談?wù)凴PC,即遠程過程調(diào)用,這是一種允許一臺計算機上的程序在服務(wù)器計算機上執(zhí)行代碼的協(xié)議。它是一種在實際上將過程(方法或函數(shù))調(diào)用為本地調(diào)用時抽象出網(wǎng)絡(luò)通信細(xì)節(jié)的方法。
因此,它抽象了網(wǎng)絡(luò)通信的細(xì)節(jié),使開發(fā)人員能夠與遠程功能無縫交互,就像它們是應(yīng)用程序的本地功能一樣。
許多應(yīng)用層協(xié)議可能使用RPC機制執(zhí)行其操作。例如:
- 在Web服務(wù)中,HTTP請求可能導(dǎo)致在后端執(zhí)行RPC調(diào)用以處理數(shù)據(jù)或代表客戶端執(zhí)行操作。
- SMTP服務(wù)器可能在內(nèi)部使用RPC調(diào)用來處理電子郵件消息或與數(shù)據(jù)庫交互。
總結(jié)
當(dāng)然,還有許多其他應(yīng)用層協(xié)議存在,但這里涵蓋的協(xié)議是在Web開發(fā)中最常用且最重要的。