篇2介紹了URI和URL的含義,以及HTTP協議的一些特性,這些特性經常在面試中被問到。
1- URI 和 URL
URI(Uniform Resource Identifier):統一資源標識符。URI 是由某個協議方案表示的資源的定位標識符,協議方案是指訪問資源所使用的協議類型名稱。協議方案有 http、ftp、mailto、telnet、file,所以http 協議也只是 URI 眾多協議中的一種。
URL(Uniform Resource Locator):統一資源定位符有時也被俗稱為網頁地址。URI 用字符串標識某一互聯網資源,而 URL 表示資源的地點(互聯網上所處的位置),URL 是 URI 的子集,在充分理解的基礎上,可以用 URL 替換 URI 。
2 - HTTP 協議
HTTP 協議規定,請求從客戶端發出,最后服務端響應該請求并返回。
2.1 - HTTP的無狀態
HTTP是一種不保存狀態,即無狀態協議。這指的是,HTTP協議不對請求和響應之間的通信狀態進行保存。所以使用HTTP協議,每當有新的請求發送,就會有對應的新響應產生。這樣做的好處是更快地處理大量事務,確保協議的可伸縮性。
但是隨著業務的發展,有時需要對用戶之前的HTTP通信狀態進行保存,比如執行一次登陸操作,在30分鐘內所有的請求都不需要再次登陸。于是引入了Cookie技術,之后也會介紹。
2.2 - HTTP的持久連接
HTTP協議初試版本中,每進行一次HTTP通信就要斷開一次TCP連接。但是當瀏覽器請求一個包含多張圖片的HTML頁面時,會增加通信量的開銷。為了解決這個問題,HTTP/1.1相處了持久連接(HTTP keep-alive)方法。其特點是,只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態,在請求首部字段中的Connection: keep-alive即為表明使用了持久連接。
2.3 - HTTP的管線化
管線化是基于持久連接的。在沒有持久連接之前,發送請求后需等待并收到響應,才能發送下一個請求。管線化技術出現后,不用等待響應亦可直接發送下一個請求。這樣就能夠做到同時并行發送多個請求,不需要一個接一個地等待響應了。
2.4 - Cookie
在實際業務場景中,會要求用戶在頁面A進行賬號登陸,然后在頁面B進行訪問時,識別出該用戶已經登陸的身份。所以需要把之前在頁面A登陸的信息保存起來,而HTTP協議并沒有該功能,所以就引入狼人Cookie技術。
Cookie會根據從服務端發送的響應報文內的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文中加入Cookie值后發送出去。
服務端發現客戶端發送過來的Cookie后,會去檢查究竟是從哪一個客戶端發來的連接請求,然后對比服務器上的記錄(Session),最后得到之前的狀態信息。所以這里你可以知道Cookie和Session的區別,首先是存放位置,其次是安全性和持久性(存放在服務端的Session更為安全和持久)
大家好,我是彬彬醬,目前在騰訊從事Web后端開發。
菜鳥必知的 http 知識專題整理了關于網絡的基礎知識,適合大家進行入門級學習,這個專題現包含下列文章:
菜鳥必知的 http 知識(一)—— TCP 握手協議
菜鳥必知的 http 知識(二)—— HTTP 協議特點
菜鳥必知的 http 知識(三)—— 請求和響應報文
菜鳥必知的 http 知識(四)—— HTTP 和 HTTPS
菜鳥必知的 http 知識(五)—— 新技術的出現
菜鳥必知的 http 知識(六)—— web的結構組件