瀏覽器輸入url回車之後做了什麼?
(url解析 -> dns查詢 -> tcp連線 -> 處理請求 -> 接受響應 -> 渲染頁面)
1、判斷輸入的是不是合法的url或關鍵字
2、瀏覽器檢視快取(瀏覽器快取 -> 系統快取 -> 路由器快取),如果有則直接顯示內容,沒有則走第三步
3、傳送http之前先網域名稱解析,得到ip
4、瀏覽器想伺服器發起tcp連線,建立tcp三次握手
5、握手成功後傳送http請求,請求資料報
6、伺服器收到請求會將資料返還給瀏覽器
7、瀏覽器收到http響應,解碼響應
8、瀏覽器請求獲取嵌入在html中的資源
9、瀏覽器傳送非同步請求
10、頁面全部渲染結束
http協議有哪幾種請求方式?
get, post , head,options, put, delete, trace 和 connect 方法。
get和post的區別?
get和post本質上就是tcp鏈結,並無差別。但是由於http的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。
get在瀏覽器回退時是無害的,而post會再次提交請求。
get產生的url位址可以被bookmark,而post不可以。
get請求會被瀏覽器主動cache,而post不會,除非手動設定。
get請求只能進行url編碼,而post支援多種編碼方式。
get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留。
get請求在url中傳送的引數是有長度限制的,而post麼有。
對引數的資料型別,get只接受ascii字元,而post沒有限制。
get比post更不安全,因為引數直接暴露在url上,所以不能用來傳遞敏感資訊。
get引數通過url傳遞,post放在request body中。
get產生乙個tcp資料報;post產生兩個tcp資料報。
對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);
而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。
因為post需要兩步,時間上消耗的要多一點,看起來get比post更有效。
1. get與post都有自己的語義,不能隨便混用。
2. 據研究,在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。
3. 並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。
http協議傳輸的資料都是未加密的,也就是明文的,因此使用http協議傳輸隱私資訊非常不安全,為了保證這些隱私資料能加密傳輸,於是網景公司設計了ssl(secure sockets layer)協議用於對http協議傳輸的資料進行加密,從而就誕生了https。簡單來說,https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全。
https和http的區別主要如下:
總的來說: https=ssl+http
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。
(這個只是預設埠不一樣,實際上埠是可以改的)
4、http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。
5、osi 網路模型中,http工作於應用層,而https 的安全傳輸機制工作在傳輸層
存放位置不同:cookies資料儲存在客戶端,session資料儲存在伺服器端;
安全程度不同:cookies可以減輕伺服器壓力,但是不安全,容易進行cookies欺騙;
效能使用程度不同:session較安全,但占用伺服器資源
資料儲存大小不同:單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie,而session則儲存與服務端,瀏覽器對其沒有限制。
會話cookie和持久cookie的區別
如果不設定過期時間,則表示這個cookie生命週期為瀏覽器會話期間,只要關閉瀏覽器視窗,cookie就消失了。這種生命期為瀏覽會話期的cookie被稱為會話cookie。會話cookie一般不儲存在硬碟上而是儲存在記憶體裡。
如果設定了過期時間,瀏覽器就會把cookie儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie依然有效直到超過設定的過期時間。
儲存在硬碟上的cookie可以在不同的瀏覽器程序間共享,比如兩個ie視窗。而對於儲存在記憶體的cookie,不同的瀏覽器有不同的處理方式。
無狀態協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,也就是說,當客戶端一次http請求完成以後,客戶端再傳送一次http請求,http並不知道當前客戶端是乙個」老使用者「。
可以使用cookie來解決無狀態的問題,cookie就相當於乙個通行證,第一次訪問的時候給客戶端傳送乙個cookie,當客戶端再次來的時候,拿著cookie(通行證),那麼伺服器就知道這個是」老使用者「。
請求報文包含四部分:
a、請求行:包含請求方法、uri、http版本資訊
b、請求首部字段
c、請求內容實體
d、空行
響應報文包含四部分:
a、狀態行:包含http版本、狀態碼、狀態碼的原因短語
b、響應首部字段
c、響應內容實體
d、空行
常見的首部:
請求首部字段(請求報文會使用的首部字段)
響應首部字段(響應報文會使用的首部字段)
實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)
狀態碼
具體可參考:
http優化方案
在瀏覽器輸入url回車之後發生了什麼?(超詳細版)
關於面試總結8-http協議相關面試題
get和post兩種基本請求方法的區別
cookie和session的區別
http面試題都在這裡
整理關於Http面試題
1.https和http的區別是?a.https協議需要到ca申請證書,一般免費證書較少,所以可能需要一定費用。b.http是超文字傳輸協議,資訊是明文傳輸。https是ssl http協議構成的加密傳輸協議,更加安全。c.http和https用的埠也不一樣,http預設埠號是80.https預設埠...
HTTP相關面試題
在 osi 七層模型中,http協議位於最頂層的應用層中。通過瀏覽器訪問網頁就直接使用了 http 協議。使用 http 協議時,客戶端首先與服務端的 80 埠建立乙個 tcp 連線,然後在這個連線的基礎上進行請求和應答,以及資料的交換。http 有兩個常用版本,分別是 1.0 和 1.1。主要區別...
HTTP協議面試題
1 說一下什麼是http協議?對器客戶端和 伺服器端之間資料傳輸的格式規範,格式簡稱為 超文字傳輸協議 2 什麼是http協議無狀態協議?怎麼解決http協議無狀態協議?曾經去某創業公司問到 3 說一下http協議中302狀態 阿里經常問 4 http協議有什麼組成?請求報文包含三部分 響應報文包含...