做網(wǎng)站賺錢嗎 怎么賺it培訓(xùn)機構(gòu)
發(fā)展歷程-http組成-http是什么-相關(guān)的應(yīng)用-相關(guān)的協(xié)議
參考來源:
極客時間-透視HTTP協(xié)議(作者:羅劍鋒);
01-HTTP的發(fā)展歷程
1989 年,任職于歐洲核子研究中心(CERN)的蒂姆·伯納斯 - 李(Tim Berners-Lee)發(fā)
表了一篇論文,提出了在互聯(lián)網(wǎng)上構(gòu)建超鏈接文檔系統(tǒng)的構(gòu)想。這篇論文中他確立了三項關(guān)
鍵技術(shù)。
- URI:即統(tǒng)一資源標識符,作為互聯(lián)網(wǎng)上資源的唯一身份;
- HTML:即超文本標記語言,描述超文本文檔;
- HTTP:即超文本傳輸協(xié)議,用來傳輸超文本
HTTP/1.0 版本在 1996 年正式發(fā)布。
它在多方面增強了 0.9 版,形式上已經(jīng)和我們現(xiàn)在的 HTTP 差別不大了,例如:
- 增加了 HEAD、POST 等新方法;
- 增加了響應(yīng)狀態(tài)碼,標記可能的錯誤原因;
- 引入了協(xié)議版本號概念;
- 引入了 HTTP Header(頭部)的概念,讓 HTTP 處理請求和響應(yīng)更加靈活;
- 傳輸?shù)臄?shù)據(jù)不再僅限于文本。
但 HTTP/1.0 并不是一個“標準”,只是記錄已有實踐和模式的一份參考文檔,不具有實際
的約束力,相當于一個“備忘錄”。
1999 年,HTTP/1.1 發(fā)布了 RFC 文檔,編號為 2616,正式確立了延續(xù)十余年的傳
奇。
- 增加了 PUT、DELETE 等新的方法;
- 增加了緩存管理和控制;
- 明確了連接管理,允許持久連接;
- 允許響應(yīng)數(shù)據(jù)分塊(chunked),利于傳輸大文件;
- 強制要求 Host 頭,讓互聯(lián)網(wǎng)主機托管成為可能。
不過由于 HTTP/1.1 太過龐大和復(fù)雜,所以在 2014 年又做了一次修訂,原來的一個大文檔
被拆分成了六份較小的文檔,編號為 7230-7235,優(yōu)化了一些細節(jié),但此外沒有任何實質(zhì)
性的改動。
在 2015 年發(fā)布了 HTTP/2,
RFC 編號 7540。
HTTP/2 的制定充分考慮了現(xiàn)今互聯(lián)網(wǎng)的現(xiàn)狀:寬帶、移動、不安全,在高度兼容
HTTP/1.1 的同時在性能改善方面做了很大努力,主要的特點有:
- 二進制協(xié)議,不再是純文本;
- 可發(fā)起多個請求,廢棄了 1.1 里的管道;
- 使用專用算法壓縮頭部,減少數(shù)據(jù)傳輸量;
- 允許服務(wù)器主動向客戶端推送數(shù)據(jù);
- 增強了安全性,“事實上”要求加密通信。
2018 年,互聯(lián)網(wǎng)標準化組織 IETF 提議將“HTTP over QUIC”更名
為“HTTP/3”并獲得批準
02-http(超文本傳輸協(xié)議)的組成
協(xié)議:
第一點,協(xié)議必須要有兩個或多個參與者,也就是“協(xié)”。
第二點,協(xié)議是對參與者的一種行為約定和規(guī)范,也就是“議”。
協(xié)議意味著有多個參與者為了達成某個共同的目的而站在了一起,除了要無疑義地溝通交流
之外,還必須明確地規(guī)定各方的“責(zé)、權(quán)、利”,約定該做什么不該做什么,先做什么后做
什么,做錯了怎么辦,有沒有補救措施等等。
傳輸
第一點,HTTP 協(xié)議是一個“雙向協(xié)議”。
有兩個最基本的參與者 A 和 B,從 A 開始到 B 結(jié)束,數(shù)據(jù)在 A 和 B 之間雙向
而不是單向流動。通常我們把先發(fā)起傳輸動作的 A 叫做請求方,把后接到傳輸?shù)?B 叫做應(yīng)
答方或者響應(yīng)方。
第二點,數(shù)據(jù)雖然是在 A 和 B 之間傳輸,但并沒有限制只有 A 和 B 這兩個角色,允許中
間有“中轉(zhuǎn)”或者“接力”。
這樣,傳輸方式就從“A<===>B”,變成了“A<=>X<=>Y<=>Z<=>B”,A 到 B 的
傳輸過程中可以存在任意多個“中間人”,而這些中間人也都遵從 HTTP 協(xié)議,只要不打
擾基本的數(shù)據(jù)傳輸,就可以添加任意的額外功能,例如安全認證、數(shù)據(jù)壓縮、編碼轉(zhuǎn)換等
等,優(yōu)化整個傳輸過程。
超文本
所謂“文本”(Text),就表示 HTTP 傳輸?shù)牟皇?TCP/UDP 這些底層協(xié)議里被切分的雜
亂無章的二進制包(datagram),而是完整的、有意義的數(shù)據(jù),可以被瀏覽器、服務(wù)器這
樣的上層應(yīng)用程序處理。
所謂“超文本”,就是“超越了普通文本的文本”,它是文字、圖片、音頻和視頻等的混合
體,最關(guān)鍵的是含有“超鏈接”,能夠從一個“超文本”跳躍到另一個“超文本”,形成復(fù)
雜的非線性、網(wǎng)狀的結(jié)構(gòu)關(guān)系。
03-http是什么
HTTP 是一個在計算機世界里專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數(shù)據(jù)的約定和規(guī)范。
它不是瀏覽器、手機 APP 那樣的應(yīng)用程序,也不是 Windows、Linux 那樣的操作系統(tǒng),更不是 Apache、Nginx、Tomcat 那樣的 Web 服務(wù)器。
HTTP 不是 HTML,單論次數(shù),在互聯(lián)網(wǎng)上
HTTP 傳輸最多的可能就是 HTML,但要是論數(shù)據(jù)量,HTML 可能要往后排了,圖片、音頻、視頻這些類型的資源顯然更大。
HTTP 不是一個孤立的協(xié)議
在互聯(lián)網(wǎng)世界里,HTTP 通常跑在 TCP/IP 協(xié)議棧之上,依靠 IP 協(xié)議實現(xiàn)尋址和路由、TCP
協(xié)議實現(xiàn)可靠數(shù)據(jù)傳輸、DNS 協(xié)議實現(xiàn)域名查找、SSL/TLS 協(xié)議實現(xiàn)安全通信。此外,還
有一些協(xié)議依賴于 HTTP,例如 WebSocket、HTTPDNS 等。這些協(xié)議相互交織,構(gòu)成了
一個協(xié)議網(wǎng),而 HTTP 則處于中心地位。
04-與HTTP相關(guān)的各種應(yīng)用
CDN,全稱是“Content Delivery Network”,翻譯過來就是“內(nèi)容分發(fā)網(wǎng)絡(luò)”。它應(yīng)用
了 HTTP 協(xié)議里的緩存和代理技術(shù),代替源站響應(yīng)客戶端的請求。
05-各種HTTP相關(guān)協(xié)議
代理(Proxy)是 HTTP 協(xié)議中請求方和應(yīng)答方中間的一個環(huán)節(jié),作為“中轉(zhuǎn)站”,既可以
轉(zhuǎn)發(fā)客戶端的請求,也可以轉(zhuǎn)發(fā)服務(wù)器的應(yīng)答。
代理有很多的種類,常見的有:
- 匿名代理:完全“隱匿”了被代理的機器,外界看到的只是代理服務(wù)器;
- 透明代理:顧名思義,它在傳輸過程中是“透明開放”的,外界既知道代理,也知道客
戶端; - 正向代理:靠近客戶端,代表客戶端向服務(wù)器發(fā)送請求;
- 反向代理:靠近服務(wù)器端,代表服務(wù)器響應(yīng)客戶端的請求;
由于代理在傳輸過程中插入了一個“中間層”,所以可以在這個環(huán)節(jié)做很多有意思的事情,
比如:
5. 負載均衡:把訪問請求均勻分散到多臺機器,實現(xiàn)訪問集群化;
6. 內(nèi)容緩存:暫存上下行的數(shù)據(jù),減輕后端的壓力;
7. 安全防護:隱匿 IP, 使用 WAF 等工具抵御網(wǎng)絡(luò)攻擊,保護被代理的機器;
8. 數(shù)據(jù)處理:提供壓縮、加密等額外的功能。
URI(Uniform Resource Identifier),中文名稱是 統(tǒng)一資源標識符,使用
它就能夠唯一地標記互聯(lián)網(wǎng)上資源。
URI 另一個更常用的表現(xiàn)形式是 URL(Uniform Resource Locator), 統(tǒng)一資源定位
符,也就是我們俗稱的“網(wǎng)址”,它實際上是 URI 的一個子集,不過因為這兩者幾乎是相
同的,差異不大,所以通常不會做嚴格的區(qū)分。
你可以看到,URI 主要有三個基本的部分構(gòu)成:
- 協(xié)議名:即訪問該資源應(yīng)當使用的協(xié)議,在這里是“http”;
- 主機名:即互聯(lián)網(wǎng)上主機的標記,可以是域名或 IP 地址,在這里是“nginx.org”;
- 路徑:即資源在主機上的位置,使用“/”分隔多級目錄,在這里是“/en/download.html”。