關於HTTP的一些概念

各類概念

HTTP

HTTP(HyperText Transfer Protocol) —— 超文本傳輸協議html

  • 它能夠拆成三個部分:「超文本」「傳輸」「協議」
  1. 協議必需要有兩個或多個參與者,也就是「協」

HTTP是一個用在計算機世界裏的協議。它使用計算機可以理解的語言確立了一種計算機之間交流        通訊的規範,以及相關的各類控制和錯誤處理方式。nginx

  1. HTTP是一個「傳輸協議」,所謂「傳輸(Transfer)」,就是把一堆東西從A點搬到B點,或者從B點搬到A點,即「A<===>B」。其中間也能夠存在多個「中間人」。

HTTP是一個在計算機世界裏專門用來在兩點之間傳輸數據的約定和規範。後端

  1. 所謂「文本(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協議其實是一系列網絡通訊協議的統稱,其中最核心的兩個協議是TCPIP,其餘的還有UDP、ICMP、ARP等等,共同構成了一個複雜但有層次的協議棧。

 

這個協議棧有四層,最上層是「應用層」,最下層是「連接層」,TCP和IP則在中間:TCP屬於「傳輸層」,IP屬於「網際層」

  • IP協議主要目的是解決尋址和路由問題,以及如何在兩點間傳送數據包。
  • TCP協議,意思是「傳輸控制協議」,它位於IP協議之上,基於IP協議提供可靠的、字節流形式的通訊,是HTTP協議得以實現的基礎。
    • 「可靠」是指保證數據不丟失,「字節流」是指保證數據完整,因此TCP協議的兩端能夠如同操做文件同樣訪問傳輸的數據,就像是讀寫在一個密閉的管道里「流動」的字節。

 

DNS 域名系統

在DNS中,「域名」又稱爲「主機名」。域名用「.」分割成多個單詞,級別從左到右逐級升高。最右邊的被稱爲「頂級域名」。

域名轉換爲IP地址的過程即爲「域名解析」

DNS的核心繫統是一個三層的樹狀、分佈式服務,基本對應域名的結構:

  1. 根域名服務器(Root DNS Server):管理頂級域名服務器,返回"com"、"net"、"cn"等頂級域名服務器的IP地址;
  2. 頂級域名服務器(Top-level DNS Server):管理各自域名下的權威域名服務器,好比com頂級域名服務器能夠返回apple.com域名服務器的IP地址;
  3. 權威域名服務器(Authoritative DNS Server):管理本身域名下主機的IP地址,好比apple.com權威域名服務器能夠返回www.apple.com的IP地址。

Ex:

訪問「www.apple.com」,就要進行下面的三次查詢:

  1. 訪問根域名服務器,它會告訴你「com」頂級域名服務器的地址;
  2. 訪問「com」頂級域名服務器,它再告訴你「apple.com」域名服務器的地址;
  3. 最後訪問「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

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

  • 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協議中請求方和應答方中間的一個環節,做爲「中轉站」,既能夠轉發客戶端的請求,也能夠轉發服務器的應答。常見的代理有:

  1. 匿名代理:徹底「隱蔽」了被代理的機器,外界看到的只是代理服務器;
  2. 透明代理:在傳輸過程當中是「透明開放」的,外界既知道代理,也知道客戶端;
  3. 正向代理:靠近客戶端,表明客戶端向服務器發送請求;
  4. 反向代理:靠近服務器端,表明服務器響應客戶端的請求。
相關文章
相關標籤/搜索