俯視 HTTP 協(xié)議
生活中的各類電商系統(tǒng),學校的教務(wù)系統(tǒng),工作中的各種辦公軟件基本上都是 Web 網(wǎng)站。少部分的是桌面應(yīng)用,而這一部分的桌面軟件也都紛紛在往 Web 應(yīng)用上面遷移。因為桌面軟件還需要下載 APP 安裝到本地電腦,而 Web 網(wǎng)站你只要打開瀏覽器就可以直接訪問,在便利性方面 Web 網(wǎng)站是有巨大的優(yōu)勢。作為互聯(lián)網(wǎng)的從業(yè)者,我們需要了解這個表現(xiàn)背后的原理,那就是 Http 協(xié)議,它幫助我們將遠端服務(wù)器的數(shù)據(jù)信息傳輸?shù)轿覀優(yōu)g覽器的客戶端。本小節(jié),將會從歷史背景,實現(xiàn)原理,協(xié)議是什么,幾個方面讓你對 Http 有一個比較深刻的了解。
1. HTTP 的歷史背景
一個東西的產(chǎn)生可能有偶然因素,但是事物的興盛就必然有他客觀價值的存在。HTTP(hypertext transport protocol)超文本傳輸協(xié)議也是如此,下面我們來介紹它誕生的背景。
1.1 WEB網(wǎng)絡(luò)
WWW (World Wide Web),英文名 World 看出來這東西很宏大,顧名思義就是全世界都在一個網(wǎng)絡(luò)里,因為它世界的距離被拉近。但是這家伙最早也是從單細胞慢慢演變而來的,它是誕生于科學家的物理實驗室中用于檔案的存儲,后來慢慢演變成大學里知識交流的一個網(wǎng)絡(luò),再后來這個網(wǎng)絡(luò)的規(guī)模越變越大,突破層級構(gòu)架成了如今的互聯(lián)網(wǎng)。
Web 網(wǎng)絡(luò)方便了我們的信息傳遞,背后依托的就是 Http 這項協(xié)議。
1.2 HTTP 協(xié)議
Http 是一種協(xié)議,它制定了瀏覽器客戶端和 Web 服務(wù)端信息傳遞的規(guī)則,所有的瀏覽器廠商和所有的 Web 后臺服務(wù)都是遵從這個規(guī)則來實現(xiàn)信息的傳遞的。Web 服務(wù)的信息傳遞從最早期單一的文字,到后來有了圖片,音頻視頻,而 HTTP 協(xié)議隨著傳遞信息的變化也經(jīng)歷了以下幾個版本的變化:
- HTTP/0.9:于 1990 年問世,用于簡單文字的交換;
- HTTP/1.0:被正式列為 www 傳輸?shù)臉藴剩{入 RFC1945;
- HTTP/1.1:在 1.0 的基礎(chǔ)上新增了連接方式的規(guī)約;
- HTTP/2.0:隨著網(wǎng)絡(luò)的應(yīng)用越來越廣,內(nèi)容也越來越豐富。HTTP2.0 在安全,性能,交互場景都有了很大的改進。
目前市場上主流的還是 HTTP/1.1 ,隨便打開一個瀏覽器 F12 查看下網(wǎng)絡(luò),基本上都可以看到 版本:HTTP/1.1
。但是 HTTP/2.0 作為下一代的網(wǎng)絡(luò)協(xié)議,前景可期。因為我們現(xiàn)在的網(wǎng)絡(luò)都在追求加速,在硬件不斷疊加,程序不斷優(yōu)化,CDN資源加速,之后如果繼續(xù)優(yōu)化的話那就只有 HTTP 協(xié)議本身了。2.0 因為有了多路復用,協(xié)議壓縮等功能,所以性能上面是要比 1.1 高出不少的,普及只是時間問題。
2. 實現(xiàn)-TCP/IP 協(xié)議
Http 和 TCP/IP 都是協(xié)議,它們的不同之處在于:HTTP 是瀏覽器和后臺服務(wù)之間的語言,而 TCP/IP是電腦之間的語言(相同的語言才能互相理解雙方要表達的意思)。Http 本身只是約定了傳輸?shù)臅r候文字要是什么格式,具體文字如何轉(zhuǎn)成物理的高低電平穿越電腦實現(xiàn)傳輸?shù)倪^程它是不知道的。
所以它需要借助專業(yè)的人士 TCP/IP 來處理。TCP/IP 是專門解決主機之間信息傳輸?shù)?,它不局限于?Http 服務(wù),像發(fā)送郵件也有自己的郵件協(xié)議(SMTP),它的底層也需要借助 TCP/IP 來實現(xiàn)。(TCP/IP是整套完整的網(wǎng)絡(luò)傳輸框架模型,HTTP 也是屬于它里面的應(yīng)用層)。
3. 為什么要學習 HTTP 協(xié)議?
Http 協(xié)議是前后端 API 接口交互的橋梁,不管你是前端開發(fā),移動端開發(fā),后端開發(fā),它都是你工作必不可少的部分。在如今的生產(chǎn)環(huán)境中,為了快速實現(xiàn)邏輯業(yè)務(wù)的開發(fā),往往這部分是被框架封裝得很完整了,初學者就更加容易忽視它,以至于遇到問題無從下手。
- 為什么我資源更新了,界面還是舊的,可能是 Http 緩存了;
- 請求的參數(shù)該放路徑還是 Body 中;
- 接口報錯了,返回的狀態(tài)碼看不懂;
- 接口文檔如何編寫才是規(guī)范的;
- 讓 Http 協(xié)議規(guī)范自己的軟件開發(fā);
- 雖然 Http 工具封裝得很好用,但我必須搞懂它,要做工具的主人而不是奴隸,必要的時候自己造工具。
4. 本課程的學習基礎(chǔ)
本課程面向的是的入門小白,和初級開發(fā)人員。只要是計算機相關(guān)專業(yè)的即可,對于非計算機專業(yè)的學生,建議先去學習下計算機組成原理再來看該系列的文章會更容易吸收。
5. 小結(jié)
Http 并不單單應(yīng)用在 Web 網(wǎng)站中,桌面軟件/移動應(yīng)用這些客戶端要想與服務(wù)器交互數(shù)據(jù),也同樣可以借助 Http 協(xié)議。它是一種輕量級,跨語言,使用范圍很廣的傳輸協(xié)議。