各類概念
HTTP
HTTP(HyperText Transfer Protocol) —— 超文本傳輸協議html
- 它能夠拆成三個部分:「超文本」、「傳輸」、「協議」
- 協議必需要有兩個或多個參與者,也就是「協」
HTTP是一個用在計算機世界裏的協議。它使用計算機可以理解的語言確立了一種計算機之間交流 通訊的規範,以及相關的各類控制和錯誤處理方式。nginx
- HTTP是一個「傳輸協議」,所謂「傳輸(Transfer)」,就是把一堆東西從A點搬到B點,或者從B點搬到A點,即「A<===>B」。其中間也能夠存在多個「中間人」。
HTTP是一個在計算機世界裏專門用來在兩點之間傳輸數據的約定和規範。後端
- 所謂「文本(Text)」,就表示HTTP傳輸的不是TCP/UDP這些底層協議裏被切分的雜亂無章的二進制包(datagram),而是完整的、有意義的數據,能夠被瀏覽器、服務器這樣的上層應用程序處理。
所謂「超文本」,就是「超越了普通文本的文本」,它是文字、圖片、音頻和視頻等的混合體,最關 鍵的是含有「超連接」,可以從一個「超文本」跳躍到另外一個「超文本」,造成複雜的非線性、網狀的 結構關係。瀏覽器
總結:緩存
HTTP是什麼?安全
HTTP是一個在計算機世界裏專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數據的約定和規範。服務器
瀏覽器(Web Browser)
瀏覽器本質是一個HTTP協議中的請求方,使用HTTP協議獲取網絡上的各類資源。網絡
在HTTP協議中,瀏覽器的角色被稱爲「User Agent」即「用戶代理」,意思是做爲訪問者的「代理」來發起HTTP請求,一般都簡單地稱之爲「客戶端」。架構
Web服務器(Web Server)
它是HTTP協議裏響應請求的主體,一般也把控着絕大多數的網絡資源。談及「Web服務器」,會涉及兩個層面的含義:硬件和軟件。app
- 硬件含義就是物理形式或「雲」形式的機器,在大多數狀況下它可能不是一臺服務器,而是利用反向代理、負載均衡等技術組成的龐大集羣。
- 軟件含義就是提供Web服務器的應用程序,一般會運行在硬件含義的服務器上。
CDN
CDN,全稱是「Content Delivery Network」,即內容分發網絡。它應用可HTTP協議裏的緩存和代理技術,代替源站響應客戶端的請求。
HTML/WebService/WAF
HTML是HTTP協議傳輸的主要內容之一,它描述了超文本頁面,用各類「標籤」定義文字、圖片等資源和排版佈局,最終由瀏覽器「渲染」出可視化頁面。
Web Service是一種由W3C定義的應用服務開發規範,使用client-server主從架構,一般使用WSDL定義服務接口,使用HTTP協議傳輸XML或SOAP消息,也就是說,它是一個基於Web(HTTP)的服務架構技術,既能夠運行在內網,也能夠在適當保護後運行在外網。
WAF,即「網絡應用防火牆」。與硬件「防火牆」相似,它是應用層的「防火牆」,專門檢測HTTP流量,是防禦Web應用的安全技術。
TCP/IP
TCP/IP協議其實是一系列網絡通訊協議的統稱,其中最核心的兩個協議是TCP和IP,其餘的還有UDP、ICMP、ARP等等,共同構成了一個複雜但有層次的協議棧。
這個協議棧有四層,最上層是「應用層」,最下層是「連接層」,TCP和IP則在中間:TCP屬於「傳輸層」,IP屬於「網際層」。
- IP協議主要目的是解決尋址和路由問題,以及如何在兩點間傳送數據包。
- TCP協議,意思是「傳輸控制協議」,它位於IP協議之上,基於IP協議提供可靠的、字節流形式的通訊,是HTTP協議得以實現的基礎。
- 「可靠」是指保證數據不丟失,「字節流」是指保證數據完整,因此TCP協議的兩端能夠如同操做文件同樣訪問傳輸的數據,就像是讀寫在一個密閉的管道里「流動」的字節。
DNS 域名系統
在DNS中,「域名」又稱爲「主機名」。域名用「.」分割成多個單詞,級別從左到右逐級升高。最右邊的被稱爲「頂級域名」。
域名轉換爲IP地址的過程即爲「域名解析」。
DNS的核心繫統是一個三層的樹狀、分佈式服務,基本對應域名的結構:
- 根域名服務器(Root DNS Server):管理頂級域名服務器,返回"com"、"net"、"cn"等頂級域名服務器的IP地址;
- 頂級域名服務器(Top-level DNS Server):管理各自域名下的權威域名服務器,好比com頂級域名服務器能夠返回apple.com域名服務器的IP地址;
- 權威域名服務器(Authoritative DNS Server):管理本身域名下主機的IP地址,好比apple.com權威域名服務器能夠返回www.apple.com的IP地址。
Ex:
訪問「www.apple.com」,就要進行下面的三次查詢:
- 訪問根域名服務器,它會告訴你「com」頂級域名服務器的地址;
- 訪問「com」頂級域名服務器,它再告訴你「apple.com」域名服務器的地址;
- 最後訪問「apple.com」域名服務器,就獲得了「www.apple.com」的地址。
但若是全世界都往這個系統擠,即便系統不癱瘓,訪問速度也會很慢。所以,常有兩種手段減輕域名解析的壓力,基本思路就是「緩存」。
- 公司或網絡運行商簡歷本身的DNS服務器,做爲用戶DNS查詢的代碼,代替用戶訪問核心DNS系統。
- 操做系統也會對DNS解析結果作緩存。
- 操做系統裏還有一個特殊的「主機映射」文件。
URI/URL
URI(Uniform Resource Identifier)統一資源標識符,可以惟一標識互聯網上資源。
URI另外一個更經常使用的表現形式是URL(Uniform Resource Locator),統一資源定位符,也就是俗稱的「網址」,它其實是URI的一個子集。
Ex:
http://nginx.org/en/download.html
URI主要由三個基本部分構成:
- 協議名:即訪問該資源應當使用的協議,例子中爲「http」;
- 主機名:即互聯網上主機的標記,能夠是域名或IP地址,例子中爲「nginx.org」;
- 路徑:即資源在主機上的位置,使用「/」分割多級目錄,例子中爲「/en/download.html」。
![截屏2020-09-18上午10.19.32.png 截屏2020-09-18上午10.19.32.png](http://static.javashuo.com/static/loading.gif)
URI第一個組成部分叫scheme,即「方案名」或者「協議名」,表示自願應該使用哪一種協議來訪問;
在scheme以後,必須是三個特定字符:「://」,它把scheme和後面的部分分離開;
在「://」以後,是被稱爲「authority」的部分,表示資源所在的主機名,一般表現爲:"host:port",即主機名加端口號;其中,端口號可省略。
這以後標記資源所在位置的path,就能夠訪問服務器資源了。
狀態碼
RFC標準把狀態碼分紅了五類,用數字的第一位表示分類。
- 1XX:提示信息,表示目前是協議處理的中間狀態,仍是須要後續的操做;
- 2XX:成功,報文已經收到並被正確處理;
- 200 OK:最多見的成功狀態碼,表示一切正常。
- 204 No Content:與200 OK 基本相同,但響應頭後沒有body數據。
- 206 Partial Content:HTTP分塊下載或斷點續傳的基礎,在客戶端發送「範圍請求」、要求獲取資源的部分數據時出現;一般會伴隨着頭字段:「Content-Range」,表示響應報文裏body數據的具體範圍,供客戶端確認,例如:「Content-Range:bytes 0-99/2000」,意思是這次獲取的是總計2000個字節的前100個字節
- 3XX:重定向,資源位置發生變更,須要客戶端從新發送請求;
- 301 Moved Permanently:俗稱「永久重定向」,指這次請求的資源已經不存在了,須要改用新的URI再次訪問。
- 302 Found:俗稱「臨時重定向」,意思是請求的資源還在,但須要暫時用另外一個URI來訪問。
- 304 Not Modified:用於If-Modified-Since等條件請求,表示資源未修改,用於緩存控制。(緩存重定向)
- 4XX:客戶端錯誤,請求報文有誤,服務器沒法處理;
- 400 Bad Request:通用的錯誤碼,表示請求報文有錯誤。
- 403 Forbidden:服務器禁止訪問資源。
- 404 Not Found:資源在本服務器上未找到,因此沒法提供給客戶端。
![截屏2020-09-21下午3.11.02.png 截屏2020-09-21下午3.11.02.png](http://static.javashuo.com/static/loading.gif)
- 5XX:服務器錯誤,服務器在處理請求時內部發生了錯誤。
- 500 Internal Sever Error:通用的錯誤碼,服務器究竟發生了什麼錯誤咱們是不知道的。
- 501 Not Implemented:客戶端請求的功能還不支持。
- 502 Bad Gateway:服務器做爲網關或者代理時返回的錯誤碼,表示服務器自身工做正常,訪問後端服務器時發生了錯誤。
- 503 Service Unavailable:服務器當時很忙,暫時沒法響應服務。它是一個「臨時」的狀態,響應報文裏一般還會有一個「Retry-After」字段,指示客戶端能夠在多久之後嘗試
HTTPS
HTTPS,全稱是「HTTP over SSL/TLS」,也就是運行在SSL/TLS協議上的HTTP。
SSL/TLS,是一個負責加密通訊的安全協議,創建在TCP/IP之上,是個可靠的傳輸協議,能夠被用做HTTP的下層。
代理
代理(Proxy)是HTTP協議中請求方和應答方中間的一個環節,做爲「中轉站」,既能夠轉發客戶端的請求,也能夠轉發服務器的應答。常見的代理有:
- 匿名代理:徹底「隱蔽」了被代理的機器,外界看到的只是代理服務器;
- 透明代理:在傳輸過程當中是「透明開放」的,外界既知道代理,也知道客戶端;
- 正向代理:靠近客戶端,表明客戶端向服務器發送請求;
- 反向代理:靠近服務器端,表明服務器響應客戶端的請求。