解讀必要的應用層協(xié)議

應用層協(xié)議是規(guī)定在網(wǎng)絡上應用程序之間通信的一組規(guī)則和標準。它們在互聯(lián)網(wǎng)協(xié)議套件的最高層操作,負責端到端通信和用戶界面功能。
在本文中,我們將涵蓋所有核心通信、與電子郵件相關以及實時通信到系統(tǒng)設計面試中主要使用的文件傳輸協(xié)議的關鍵應用協(xié)議。
理解客戶端-服務器模型
首先,讓我們了解客戶端-服務器模型,這是互聯(lián)網(wǎng)的基本架構,其中客戶端請求資源或服務,而服務器提供它們。這個模型是網(wǎng)絡編程和Web應用程序開發(fā)的核心。
當然,服務器也可以與其他服務器通信,而客戶端并不總是最終用戶;它通常只是另一個程序尋求數(shù)據(jù)。

這些數(shù)據(jù)傳輸規(guī)則由應用協(xié)議設置,規(guī)定了數(shù)據(jù)在網(wǎng)絡上如何傳輸和接收。
核心通信協(xié)議
最常見的協(xié)議是HTTP,它代表超文本傳輸協(xié)議,建立在TCP/IP之上。
它是一種請求-響應協(xié)議,但可以將其想象成一場沒有記憶的對話。每次交互都是分開的,沒有對過去的記憶 — 這意味著服務器不存儲請求之間的任何上下文;相反,每個請求包含所有必要的信息。

請注意,標頭包含URL和方法等詳細信息,而正文攜帶請求或響應的內容。
每個響應還包括狀態(tài)代碼,提供有關客戶端對服務器的請求結果的反饋。例如:
- 2xx 成功代碼 表示成功接收和處理請求。
- 3xx 重定向代碼:這表示用戶代理需要采取進一步的操作來滿足請求。
- 4xx 客戶端錯誤代碼:當請求包含錯誤的語法或無法滿足時使用。
- 5xx 服務器錯誤代碼:服務器無法滿足有效請求。
最常用的HTTP方法包括GET、POST、PUT、PATCH和DELETE。

WebSockets:Web的活線
HTTP是一種單向連接,通常是從客戶端到服務器,但如果我們需要雙向連接怎么辦?
為了實現(xiàn)實時更新,我們使用WebSockets,它提供了在單個長連接上的全雙工通信通道,允許服務器向客戶端推送實時更新。
這對于需要持續(xù)數(shù)據(jù)更新而無需重復的HTTP請求-響應循環(huán)的應用程序至關重要。

比如聊天應用、實時體育新聞或股票市場信息,這些場景中活動不停,對話也是如此。
與電子郵件相關的協(xié)議
在與電子郵件相關的協(xié)議中,SMTP是互聯(lián)網(wǎng)上的電子郵件傳輸?shù)臉藴省?/p>
它是在服務器之間發(fā)送電子郵件消息的協(xié)議。大多數(shù)電子郵件客戶端使用SMTP發(fā)送電子郵件,并使用IMAP或POP3之一檢索它們。
?IMAP(Internet Message Access Protocol):IMAP從服務器檢索電子郵件,允許客戶端訪問和操作消息,就像它們存儲在本地一樣,這對于需要從多個設備訪問電子郵件的用戶非常理想。?POP3(郵局協(xié)議第3版):POP3用于從服務器下載電子郵件到本地客戶端,通常在從單個設備管理電子郵件時使用。

文件傳輸和管理協(xié)議
FTP是通過互聯(lián)網(wǎng)傳輸文件的傳統(tǒng)協(xié)議,通常用于網(wǎng)站維護和大數(shù)據(jù)傳輸。
它用于在客戶端和服務器之間傳輸文件,上傳文件到服務器或備份文件。
我們還有SSH(安全外殼),用于在不安全的網(wǎng)絡上安全地操作網(wǎng)絡服務。
它通常用于登錄到遠程計算機并執(zhí)行命令或傳輸文件。

實時通信協(xié)議
我們還有實時通信協(xié)議,比如WebRTC,它實現(xiàn)了瀏覽器對瀏覽器的應用程序,用于語音通話、視頻聊天和文件共享,無需內部或外部插件。
這對于視頻會議和實時流媒體等應用程序至關重要。

一些其他流行的實時通信協(xié)議
包括:
- MQTT(消息隊列遙測傳輸):MQTT是一種輕量級的消息傳遞協(xié)議,適用于處理能力有限且需要低帶寬的設備,例如物聯(lián)網(wǎng)設備。它針對高延遲或不可靠網(wǎng)絡進行了優(yōu)化。
- AMQP(高級消息隊列協(xié)議):AMQP是面向消息的中間件的協(xié)議,為企業(yè)級消息通信提供了強大的穩(wěn)健性和安全性。例如,它與RabbitMQ等工具一起使用。
什么是RPC?
讓我們還談談RPC,即遠程過程調用,這是一種允許一臺計算機上的程序在服務器計算機上執(zhí)行代碼的協(xié)議。它是一種在實際上將過程(方法或函數(shù))調用為本地調用時抽象出網(wǎng)絡通信細節(jié)的方法。
因此,它抽象了網(wǎng)絡通信的細節(jié),使開發(fā)人員能夠與遠程功能無縫交互,就像它們是應用程序的本地功能一樣。
許多應用層協(xié)議可能使用RPC機制執(zhí)行其操作。例如:
- 在Web服務中,HTTP請求可能導致在后端執(zhí)行RPC調用以處理數(shù)據(jù)或代表客戶端執(zhí)行操作。
- SMTP服務器可能在內部使用RPC調用來處理電子郵件消息或與數(shù)據(jù)庫交互。

總結
當然,還有許多其他應用層協(xié)議存在,但這里涵蓋的協(xié)議是在Web開發(fā)中最常用且最重要的。




















