HTTP常見面試題

個人總結,請勿轉載。
URL

  • 統一資源定位符:就是標識網絡中資源的路徑。

HTTP

  • 超文本傳輸協議。是一個基於TCP/IP通信協議來傳遞信息

HTTP原理

  • HTTP協議工作與客戶端-服務端架構上,瀏覽器作爲HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。根據接收到的請求後,向客戶端發送響應消息。HTTP默認端口是80,但是也可以進行更改。

HTTP注意事項

  • HTTP是無連接的,含義是限制每次連接只處理一個請求。服務端處理完客戶的請求之後,並且受到回覆之後就斷開連接。
  • HTTP是媒體獨立的。只要客戶端和服務端知道如何處理數據內容,任何類型的數據都可以通過HTTP發送
  • HTTP是無狀態的,HTTP協議是無狀態協議,指的是對事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的數據就必須重傳。

請求結構
請求行請求頭部空行請求數據四個部分

Get和post的區別

  • Get把請求的數據放在url上,即HTTP的請求行中、格式是以?分割URL和傳輸數據,參數之間以&相連。數據如果是英文或者數字遠洋發送,如果是空格或者中文其他字符都轉換
  • POST是把數據放在HTTP的請求數據部分
  • GET提交的數據是2K,原則上url長度無限制,那麼提交的數據也是沒有限制的,但是限制實際上取決與瀏覽器,大多數瀏覽器通常都會限制url長度在2k個字節。瀏覽器也最多處理64k大小的url
    POST理論上沒有限制,實際上IIS4中最大量爲80K,IIS5最多爲100KB
  • GET產生的是一個TCP數據包。
  • POST產生的是兩個TCP數據包,第一個是發送header,瀏覽器再發送Data(並不是所有的瀏覽器都會發送兩次,比如firefox值發送一次)
  • GET再瀏覽器回退時是無害的,POST會再次提交請求
  • GET產生的URL地址可以被bookmark而POST不可以
  • GET請求參數會被完整保留再瀏覽器中,但是POSt中的參數不會白保留。
  • 對於參數類型。GET值接受ASCII字符,但是POST是沒有限制的。
  • POST比 GET安全,因爲GET參數直接暴露再URL上。

常用請求頭以及含義

  • Content-Type:數據類型(test/html)
  • Content-Length:Body的長度
  • Host:客戶端告知服務器,所請求的資源再那個主機的那個端口上
  • User-Ahent:聲明用戶的操作系統和瀏覽器版本信息
  • Referer:當前頁面是從那個頁面跳轉過來的
  • Location:搭配3XX狀態碼使用,告知客戶端接下來要去哪裏訪問
  • Cookie:用於再客戶端存儲少量信息,通常用於實現會話的功能。

響應
首行+響應頭+空行+響應的內容

首行包括了[版本號]+[狀態碼]+[狀態碼解釋]

HTTP狀態碼

  • 1XX:接收的請求正在處理
  • 2XX:請求正常處理完畢
  • 3XX:需要進行附加的操作以完成請求
  • 4XX:服務無法處理請求(客戶端錯誤)
  • 5XX:服務器處理請求出錯(服務器端錯誤)

常見狀態碼

  • 100:繼續,客戶端繼續其請求
  • 101:切換協議,服務端根據客戶端的請求切換協議,只能切換更高級的協議
  • 200:OK,請求成功,一般用於GET和POST
  • 201:以創建,成功請求並創建了新的資源
  • 202:已接受請求但是未處理完成
  • 302:數據的轉發
  • 303:和301一樣請求的資源被永久的移動到新的URL。返回的就是一個子女的URL
  • 304:未修改,所請求的資源未修改,不返回任何資源,訪問緩存資源
  • 404:未找到資源
  • 403:服務器理解客戶端的請求,但是拒絕執行此請求
  • 500:服務器內部錯誤
  • 502:錯誤的網關

HTTP版本之間的區別:
HTTP1.0和HTTP1.1之間的區別:

  • 長連接:HTTP1.0需要主動設置connection:keep-alive的連接方式才能開啓廠裏l連接,HTTP1.1默認支持長連接,再一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗。
  • 帶寬優化:HTTP1.1中header和body必須一起發送,有時會造成帶寬浪費現象。有時只需要一部分,卻將整個對象發送,HTTO1.1則再請求頭中引入了range頭部信息,允許值請求資源的某個部分。即返回碼爲206。
  • 緩存處理:HTTP1.0主要使用header裏的IF_MODIFIED_SINCE來做緩存。
  • HOST頭域:HTTP1.0中認爲沒太服務器都綁定一個唯一的iP地址,因此消息中URL沒有傳遞主機名。HTTP1.1的請求消息和響應消息中都應支持HOST頭域,沒有頭域的時候會報錯400.
  • 新增錯誤狀態碼24個,例如409和410

HTTP2.0

  • 多路複用:可以再一個連接並行的處理多個請求
  • Header壓縮:使用encoder來壓縮需要傳輸的header大小。
  • 服務器推送:客戶端對支持HTTP2.0的服務器請求某個資源時,服務器會順便把一些客戶端需要的別的資源一起推送過來,這樣只需要一次HTTP通信就可以得到全部資源,提高了性能。
  • 基於二進制傳送

HTTP和HTTPS
HTTPS和HTTP的區別

  • HTTPS協議需要到ca申請證書,一般免費證書少
  • HTTP是超文本傳輸協議,信息是明文傳輸,HTTPS則是具有安全性的ssl加密傳輸協議
  • HTTP和HTTPS使用的連接方式不同,用的端口也是不一樣的。HTTP默認是80,HTTPS是443
  • HTTP連接簡單是無狀態的。HTTPS協議是有SSL+HTTP協議構架的可進行加密傳輸,身份認證的網絡協議。比HTTP協議安全。
    HTTPS的工作原理:
  • Client使用HTTPS的URL訪問Web服務器,要求與web服務器建立SSL連接
  • Web服務器受到客戶端請求之後,會將網站的證書信息傳送一份給客戶端
  • 客戶的瀏覽器與web服務器開始協商ssl連接的安全等級
  • 客戶端的瀏覽器根據雙方的同意的安全等級建立會話祕鑰。加密後傳輸
  • 服務端解開祕鑰
  • Web服務器利用會話的祕鑰加密和客戶端之間通信
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章