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