篇2介紹了URI和URL的含義,以及HTTP協(xié)議的一些特性,這些特性經(jīng)常在面試中被問到。
1- URI 和 URL
URI(Uniform Resource Identifier):統(tǒng)一資源標識符。URI 是由某個協(xié)議方案表示的資源的定位標識符,協(xié)議方案是指訪問資源所使用的協(xié)議類型名稱刊棕。協(xié)議方案有 http、ftp待逞、mailto甥角、telnet、file识樱,所以http 協(xié)議也只是 URI 眾多協(xié)議中的一種嗤无。
URL(Uniform Resource Locator):統(tǒng)一資源定位符有時也被俗稱為網(wǎng)頁地址震束。URI 用字符串標識某一互聯(lián)網(wǎng)資源,而 URL 表示資源的地點(互聯(lián)網(wǎng)上所處的位置)当犯,URL 是 URI 的子集垢村,在充分理解的基礎(chǔ)上,可以用 URL 替換 URI 嚎卫。
2 - HTTP 協(xié)議
HTTP 協(xié)議規(guī)定嘉栓,請求從客戶端發(fā)出,最后服務(wù)端響應(yīng)該請求并返回拓诸。
2.1 - HTTP的無狀態(tài)
HTTP是一種不保存狀態(tài)侵佃,即無狀態(tài)協(xié)議。這指的是奠支,HTTP協(xié)議不對請求和響應(yīng)之間的通信狀態(tài)進行保存馋辈。所以使用HTTP協(xié)議,每當有新的請求發(fā)送倍谜,就會有對應(yīng)的新響應(yīng)產(chǎn)生首有。這樣做的好處是更快地處理大量事務(wù),確保協(xié)議的可伸縮性枢劝。
但是隨著業(yè)務(wù)的發(fā)展,有時需要對用戶之前的HTTP通信狀態(tài)進行保存卜壕,比如執(zhí)行一次登陸操作您旁,在30分鐘內(nèi)所有的請求都不需要再次登陸。于是引入了Cookie技術(shù)轴捎,之后也會介紹鹤盒。
2.2 - HTTP的持久連接
HTTP協(xié)議初試版本中,每進行一次HTTP通信就要斷開一次TCP連接侦副。但是當瀏覽器請求一個包含多張圖片的HTML頁面時侦锯,會增加通信量的開銷。為了解決這個問題秦驯,HTTP/1.1相處了持久連接(HTTP keep-alive)方法尺碰。其特點是,只要任意一端沒有明確提出斷開連接译隘,則保持TCP連接狀態(tài)亲桥,在請求首部字段中的Connection: keep-alive即為表明使用了持久連接。
2.3 - HTTP的管線化
管線化是基于持久連接的固耘。在沒有持久連接之前题篷,發(fā)送請求后需等待并收到響應(yīng),才能發(fā)送下一個請求厅目。管線化技術(shù)出現(xiàn)后番枚,不用等待響應(yīng)亦可直接發(fā)送下一個請求法严。這樣就能夠做到同時并行發(fā)送多個請求,不需要一個接一個地等待響應(yīng)了葫笼。
2.4 - Cookie
在實際業(yè)務(wù)場景中深啤,會要求用戶在頁面A進行賬號登陸,然后在頁面B進行訪問時渔欢,識別出該用戶已經(jīng)登陸的身份墓塌。所以需要把之前在頁面A登陸的信息保存起來,而HTTP協(xié)議并沒有該功能奥额,所以就引入狼人Cookie技術(shù)苫幢。
Cookie會根據(jù)從服務(wù)端發(fā)送的響應(yīng)報文內(nèi)的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie垫挨。當下次客戶端再往該服務(wù)器發(fā)送請求時韩肝,客戶端會自動在請求報文中加入Cookie值后發(fā)送出去。
服務(wù)端發(fā)現(xiàn)客戶端發(fā)送過來的Cookie后九榔,會去檢查究竟是從哪一個客戶端發(fā)來的連接請求哀峻,然后對比服務(wù)器上的記錄(Session),最后得到之前的狀態(tài)信息哲泊。所以這里你可以知道Cookie和Session的區(qū)別剩蟀,首先是存放位置,其次是安全性和持久性(存放在服務(wù)端的Session更為安全和持久)
大家好切威,我是彬彬醬育特,目前在騰訊從事Web后端開發(fā)。
菜鳥必知的 http 知識專題整理了關(guān)于網(wǎng)絡(luò)的基礎(chǔ)知識先朦,適合大家進行入門級學(xué)習缰冤,這個專題現(xiàn)包含下列文章:
菜鳥必知的 http 知識(一)—— TCP 握手協(xié)議
菜鳥必知的 http 知識(二)—— HTTP 協(xié)議特點
菜鳥必知的 http 知識(三)—— 請求和響應(yīng)報文
菜鳥必知的 http 知識(四)—— HTTP 和 HTTPS
菜鳥必知的 http 知識(五)—— 新技術(shù)的出現(xiàn)
菜鳥必知的 http 知識(六)—— web的結(jié)構(gòu)組件