你們好,我是Java最全面試題庫
的提褲姐,今天這篇是JavaWeb系列的第二篇,主要總結了JavaWeb中HTTP
相關的問題,在後續,會沿着第一篇開篇的知識線路一直總結下去,作到日更!若是我能作到百日百更,但願你也能夠跟着百日百刷,一百天養成一個好習慣。web
一、域名解析
二、發起TCP的三次握手
三、創建TCP鏈接後發起http請求
四、服務器響應http請求,瀏覽器獲得HTML代碼
五、瀏覽器解析HTML代碼,並請求HTML代碼中的資源
六、瀏覽器對頁面進行渲染呈現給用戶
七、鏈接結束面試
GET:瀏覽器
field(字段) = value
的形式,置於URL後,並用「?」
鏈接,多個請求數據間用「&」
鏈接傳輸數據量小
,由於受URL長度限制,可是效率高不安全
的,由於URL是可見的,可能會泄漏私密信息只能支持ASCII字符
,向服務器傳的中文字符可能會亂碼POST:緩存
向服務器發送數據
。傳輸大量數據
,因此上傳文件時只能用post標準字符集
,能夠正確傳遞中文字符安全性高
常見的狀態碼:安全
200
:請求被正常處理204
:請求被受理但沒有資源能夠返回206
:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中經過Content-Range指定範圍的資源。301
:永久性重定向302
:臨時重定向303
:與302狀態碼有類似功能,只是它但願客戶端在請求一個URI的時候,能經過GET方法重定向到另外一個URI上304
:發送附帶條件的請求時,條件不知足時返回,與重定向無關307
:臨時重定向,與302相似,只是強制要求使用POST方法400
:請求報文語法有誤,服務器沒法識別401
:請求須要認證403
:請求的對應資源禁止被訪問404
:服務器沒法找到對應資源500
:服務器內部錯誤503
:服務器正忙本質區別:服務器
重定向特色:兩次請求,瀏覽器地址發生變化,能夠訪問本身 web 以外的資源,傳輸的數據會丟失。
請求轉發特色:一次強求,瀏覽器地址不變,訪問的是本身自己的 web 資源,傳輸的數據不會丟失。cookie
HTTPS = HTTP + SSL
session
請求報文:
a、請求行:包含請求方法、URI、HTTP版本信息
b、請求首部字段
c、請求內容實體post
響應報文:
a、狀態行:包含HTTP版本、狀態碼、狀態碼的緣由短語
b、響應首部字段
c、響應內容實體網站
無狀態協議對於事物處理沒有記憶能力。缺乏狀態意味着後續的處理須要前面的信息。
經過cookie和session解決
一、客戶使用HTTPS的URL訪問web服務器,要求與web服務器創建SSL鏈接
二、web服務器收到客戶端請求後,將網站的證書信息(證書中包含公鑰)傳送一份給客戶端
三、客戶端的瀏覽器與web服務器開始協商SSL鏈接的安全等級,也就是信息的加密等級
四、客戶端的瀏覽器根據雙方贊成的安全等級,創建會話祕鑰,而後利用網站的公鑰將會話祕鑰加密,並傳送給網站
五、web服務器利用本身的私鑰解密出會話祕鑰
六、web服務器利用會話祕鑰加密與客戶端之間的通訊
通用首部字段(請求報文與響應報文都會使用的首部字段)
Date:建立報文時間
Connection:鏈接的管理
Cache-Control:緩存的控制
Transfer-Encoding:報文主體的傳輸編碼方式
請求首部字段(請求報文會使用的首部字段)
Host:請求資源所在服務器
Accept:可處理的媒體類型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的內容編碼
Accept-Language:可接受的天然語言
響應首部字段(響應報文會使用的首部字段)
Accept-Ranges:可接受的字節範圍
Location:令客戶端從新定向到的URI
Server:HTTP服務器的安裝信息
實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)
Allow:資源可支持的HTTP方法
Content-Type:實體主類的類型
Content-Encoding:實體主體適用的編碼方式
Content-Language:實體主體的天然語言
Content-Length:實體主體的的字節數
Content-Range:實體主體的位置範圍,通常用於發出部分請求時使用
三次握手:
爲了準確無誤地把數據送達目標處,TCP協議採用了三次握手策略。
用TCP協議把數據包送出去後,TCP不會對傳送後的狀況置之不理,它必定會向對方確認是否成功送達。握手過程當中使用了TCP的標誌:SYN和ACK
注意:若在握手過程當中某個階段莫名中斷,TCP協議會再次以相同的順序發送相同的數據包
四次揮手:
斷開一個TCP鏈接則須要四次揮手