常見面試題
1、http協(xié)議的組成部分
http是一中基于請求的無狀態(tài)、應用層協(xié)議;?;赥CP實現(xiàn)
組成部分:請求行、請求報文、請求正文
2、常用http的方法有哪些?
GET: 用于請求訪問已經(jīng)被URI(統(tǒng)一資源標識符)識別的資源,可以通過URL傳參給服務器。
POST:用于傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
PUT: 傳輸文件,報文主體中包含文件內(nèi)容,保存到對應URI位置。
HEAD: 獲得報文首部,與GET方法類似,只是不返回報文主體,一般用于驗證URI是否有效。
DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。
OPTIONS:查詢相應URI支持的HTTP方法。
3、GET方法與POST方法的區(qū)別
區(qū)別一:
get重點在從服務器上獲取資源,post重點在向服務器發(fā)送數(shù)據(jù);
區(qū)別二:
get傳輸數(shù)據(jù)是通過URL請求,以field(字段)= value的形式,置于URL后,并用"?"連接,多個請求數(shù)據(jù)間用"&"連接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,這個過程用戶是可見的;
post傳輸數(shù)據(jù)通過Http的post機制,將字段與對應值封存在請求實體中發(fā)送給服務器,這個過程對用戶是不可見的;
區(qū)別三:
Get傳輸?shù)臄?shù)據(jù)量小,因為受URL長度限制,但效率較高;
Post可以傳輸大量數(shù)據(jù),所以上傳文件時只能用Post方式;
區(qū)別四:
get是不安全的,因為URL是可見的,可能會泄露私密信息,如密碼等;
post較get安全性較高;
區(qū)別五:
get方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼。
post支持標準字符集,可以正確傳遞中文字符。
4、HTTP請求報文與響應報文格式
請求報文包含三部分:
a、請求行:包含請求方法、URI、HTTP版本信息
b、請求首部字段
c、請求內(nèi)容實體
d、空行
響應報文包含三部分:
a、狀態(tài)行:包含HTTP版本、狀態(tài)碼、狀態(tài)碼的原因短語
b、響應首部字段
c、響應內(nèi)容實體
d、空行
5、常見的HTTP相應狀態(tài)碼
返回的狀態(tài)
1xx:指示信息--表示請求已接收,繼續(xù)處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現(xiàn)
5xx:服務器端錯誤--服務器未能實現(xiàn)合法的請求
200:請求被正常處理
204:請求被受理但沒有資源可以返回
206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執(zhí)行GET方法,相應報文中通過Content-Range指定范圍的資源。
301:永久性重定向
302:臨時重定向
303:與302狀態(tài)碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上
304:發(fā)送附帶條件的請求時,條件不滿足時返回,與重定向無關(guān)
307:臨時重定向,與302類似,只是強制要求使用POST方法
400:請求報文語法有誤,服務器無法識別
401:請求需要認證
403:請求的對應資源禁止被訪問
404:服務器無法找到對應資源
500:服務器內(nèi)部錯誤
503:服務器正忙
6、常見HTTP首部字段
a、通用首部字段(請求報文與響應報文都會使用的首部字段)
Date:創(chuàng)建報文時間
Connection:連接的管理
Cache-Control:緩存的控制
Transfer-Encoding:報文主體的傳輸編碼方式
b、請求首部字段(請求報文會使用的首部字段)
Host:請求資源所在服務器
Accept:可處理的媒體類型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的內(nèi)容編碼
Accept-Language:可接受的自然語言
c、響應首部字段(響應報文會使用的首部字段)
Accept-Ranges:可接受的字節(jié)范圍
Location:令客戶端重新定向到的URI
Server:HTTP服務器的安裝信息
d、實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)
Allow:資源可支持的HTTP方法
Content-Type:實體主類的類型
Content-Encoding:實體主體適用的編碼方式
Content-Language:實體主體的自然語言
Content-Length:實體主體的的字節(jié)數(shù)
Content-Range:實體主體的位置范圍,一般用于發(fā)出部分請求時使用
7、HTTP的缺點與HTTPS
a、通信使用明文不加密,內(nèi)容可能被竊聽
b、不驗證通信方身份,可能遭到偽裝
c、無法驗證報文完整性,可能被篡改
HTTPS就是HTTP加上加密處理(一般是SSL安全通信線路)+認證+完整性保護
8、什么是Http協(xié)議無狀態(tài)協(xié)議?怎么解決Http協(xié)議無狀態(tài)協(xié)議?
無狀態(tài)協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息
無狀態(tài)協(xié)議解決辦法: 通過1、Cookie 2、通過Session會話保存。
9、講一下網(wǎng)絡傳輸過程

1189489-20180514091936031-871926134.png
10、Http協(xié)議有那些特征?
1、支持客戶/服務器模式;2、簡單快速;3、靈活;4、無連接;5、無狀態(tài)。
11、Http優(yōu)化
利用負載均衡優(yōu)化和加速HTTP應用
利用HTTP Cache來優(yōu)化網(wǎng)站
12、HTTP 2.0 和 HTTP1.1 區(qū)別
區(qū)別一:多路復用;允許單一的 HTTP/2 連接同時發(fā)起多重的請求-響應消息
區(qū)別二:首部壓縮;
區(qū)別三:HTTP2支持服務器推送
13、HTTPS的通訊過程
服務器端產(chǎn)生的是對稱秘鑰,所以只是把公鑰發(fā)送出去,私鑰一直在自己這里 (對稱秘鑰就是一個公鑰,一個私鑰,用公鑰加密,用私鑰直接能解碼,但是比較慢,不能一直用這個通信)
客戶端首先向一個權(quán)威的服務器檢查證書的合法性,如果證書合法,客戶端產(chǎn)生一段隨機數(shù),這個隨機數(shù)就作為通信的密鑰,我們稱之為對稱密鑰,用公鑰加密這段隨機數(shù),然后發(fā)送到服務器
服務器用密鑰解密獲取對稱密鑰,然后,雙方就已對稱密鑰進行加密解密通信了

3654006606-5acd70ff081e8_articlex.png
14、一次完整的HTTP請求所經(jīng)歷的7個步驟
建立TCP連接->發(fā)送請求行->發(fā)送請求頭->(到達服務器)發(fā)送狀態(tài)行->發(fā)送響應頭->發(fā)送響應數(shù)據(jù)->斷TCP連接
15、HTTP1.1版本新特性
a、默認持久連接節(jié)省通信量,只要客戶端服務端任意一端沒有明確提出斷開TCP連接,就一直保持連接,可以發(fā)送多次HTTP請求
b、管線化,客戶端可以同時發(fā)出多個HTTP請求,而不用一個個等待響應
c、斷點續(xù)傳
16、http協(xié)議的實現(xiàn)原理

20170901204817002.jpeg