HTTP協議面試問題

1、常用的HTTP方法有哪些?
GET:
用於請求訪問已經被URI(統一資源標識符)識別的資源,可以通過URL傳參給服務器
POST:用於傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
PUT:傳輸文件,報文主體中包含文件內容,保存到對應URI位置。
HEAD:獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI是否有效。
DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。
OPTIONS:查詢相應URI支持的HTTP方法。

2、GET方法與POST方法的區別
GET方法:
使用GET方法時,查詢字符串(鍵值對)被附加在URL地址後面一起發送到服務器:
/test/demo_form.jsp?name1=value1&name2=value2
特點:
  • GET請求能夠被緩存
  • GET請求會保存在瀏覽器的瀏覽記錄中
  • 以GET請求的URL能夠保存爲瀏覽器書籤
  • GET請求有長度限制
  • GET請求主要用以獲取數據
POST方法:
使用POST方法時,查詢字符串在POST信息中單獨存在,和HTTP請求一起發送到服務器:
POST /test/demo_form.jsp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
特點:
  • POST請求不能被緩存下來
  • POST請求不會保存在瀏覽器瀏覽記錄中
  • 以POST請求的URL無法保存爲瀏覽器書籤
  • POST請求沒有長度限制

區別一(使用場景):
get重點在從服務器上獲取資源,post重點在向服務器發送數據;
區別二(請求數據位置):
get傳輸數據是通過URL請求,以field(字段)= value的形式,置於URL後,並用"?"連接,多個請求數據間用"&"連接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,這個過程用戶是可見的;
post傳輸數據通過Http的post機制,將字段與對應值封存在請求實體中發送給服務器,這個過程對用戶是不可見的;
區別三(請求數據大小):
Get傳輸的數據量小,因爲受URL長度限制,但效率較高;
Post可以傳輸大量數據,所以上傳文件時只能用Post方式;
區別四(安全性):
get是不安全的,因爲URL是可見的,可能會泄露私密信息,如密碼等;
post較get安全性較高;
區別五(編碼集合):
get方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼。
post支持標準字符集,可以正確傳遞中文字符。
區別共享性):
get請求請求數據在url中,便於分享連接,可以添加到書籤,而post請求不可以。

區別緩存):
get請求能被緩存,而post請求不行。

區別表單重複提交):
點擊返回/刷新按鈕,對get請求沒有影響,對於post請求可能會導致數據重發(瀏覽器會提示)。

3、HTTP請求報文與響應報文格式
請求報文包含三部分:

a、請求行:包含請求方法、URI、HTTP版本信息
b、請求首部字段
c、請求內容實體
響應報文包含三部分:
a、狀態行:包含HTTP版本、狀態碼、狀態碼的原因短語
b、響應首部字段
c、響應內容實體

4、常見的HTTP相應狀態碼
200:
請求被正常處理
204:請求被受理但沒有資源可以返回
206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中通過Content-Range指定範圍的資源。
301:永久性重定向
302:臨時重定向
303:與302狀態碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上
304:發送附帶條件的請求時,條件不滿足時返回,與重定向無關
307:臨時重定向,與302類似,只是強制要求使用POST方法
400:請求報文語法有誤,服務器無法識別
401:請求需要認證
403:請求的對應資源禁止被訪問
404:服務器無法找到對應資源
500:服務器內部錯誤

503:
服務器正忙



5、HTTP1.1版本新特性
a、默認持久連接節省通信量,只要客戶端服務端任意一端沒有明確提出斷開TCP連接,就一直保持連接,可以發送多次HTTP請求

b、管線化,客戶端可以同時發出多個HTTP請求,而不用一個個等待響應

c、斷點續傳原理



6、常見HTTP首部字段
a、通用首部字段
(請求報文與響應報文都會使用的首部字段)
Date:創建報文時間
Connection:連接的管理
Cache-Control:緩存的控制
Transfer-Encoding:報文主體的傳輸編碼方式
b、請求首部字段(請求報文會使用的首部字段)
Host:請求資源所在服務器
Accept:可處理的媒體類型
Accept-Charset:可接收的字符集
Accept-Encoding:可接受的內容編碼
Accept-Language:可接受的自然語言
c、響應首部字段(響應報文會使用的首部字段)
Accept-Ranges:可接受的字節範圍
Location:令客戶端重新定向到的URI
Server:HTTP服務器的安裝信息
d、實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)
Allow:資源可支持的HTTP方法
Content-Type:實體主類的類型
Content-Encoding:實體主體適用的編碼方式
Content-Language:實體主體的自然語言
Content-Length:實體主體的的字節數
Content-Range:實體主體的位置範圍,一般用於發出部分請求時使用

7、HTTP的缺點與HTTPS
a、通信使用明文不加密,內容可能被竊聽
b、不驗證通信方身份,可能遭到僞裝
c、無法驗證報文完整性,可能被篡改

HTTPS就是HTTP加上加密處理(一般是SSL安全通信線路)+認證+完整性保護


8、HTTP優化

利用負載均衡優化和加速HTTP應用

利用HTTP Cache來優化網站


9、在瀏覽器中輸入 www.baidu.com 後執行的全部過程

1)客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然後通過TCP進行封裝數據包,輸入到網絡層。

2)在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。然後使用IP層的IP地址查找目的端。

3)客戶端的網絡層不用關係應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,不作過多的描述,無非就是通過查找路由表決定通過那個路徑到達服務器。

4)客戶端的鏈路層,包通過鏈路層發送到路由器,通過鄰居協議查找給定IP地址的MAC地址,然後發送ARP請求查找目的地址,如果得到迴應後就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然後發送IP數據包到達服務器的地址。 

事件順序

(1) 瀏覽器獲取輸入的域名www.baidu.com 
(2) 瀏覽器向DNS請求解析www.baidu.com的IP地址 
(3) 域名系統DNS解析出百度服務器的IP地址 
(4) 瀏覽器與該服務器建立TCP連接(默認端口號80) 
(5) 瀏覽器發出HTTP請求,請求百度首頁 
(6) 服務器通過HTTP響應把首頁文件發送給瀏覽器 
(7) TCP連接釋放 
(8) 瀏覽器將首頁文件進行解析,並將Web頁顯示給用戶。

涉及到的協議 
(1) 應用層:HTTP(WWW訪問協議),DNS(域名解析服務) 
DNS解析域名爲目的IP,通過IP找到服務器路徑,客戶端向服務器發起HTTP會話,然後通過運輸層TCP協議封裝數據包,在TCP協議基礎上進行傳輸

(2) 傳輸層:TCP(爲HTTP提供可靠的數據傳輸),UDP(DNS使用UDP傳輸) 
HTTP會話會被分成報文段,添加源、目的端口;TCP協議進行主要工作

(3)網絡層:IP(IP數據數據包傳輸和路由選擇), 
爲數據包選擇路由,IP協議進行主要工作

(4)數據鏈路層:ICMP(提供網絡傳輸過程中的差錯檢測),ARP(將本機的默認網關IP地址映射成物理MAC地址) 
相鄰結點的可靠傳輸,ARP協議將IP地址轉成MAC地址。


10、SSL屬於哪一層協議?

SSL協議位於TCP/IP協議與各種應用層協議之間,爲數據通訊提供安全支持。SSL協議可分爲兩層:

SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。

SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

因此,會話層的功能和表示層的功能正好和SSL記錄協議和握手協議的功能一樣!

發佈了53 篇原創文章 · 獲贊 152 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章