1. 程式人生 > >Http協議面試題

Http協議面試題

當輸入www.google.com時,頁面發生了哪些事情:

 

1.域名解析

域名解析檢查順序為:瀏覽器自身DNS快取---》OS自身的DNS快取--》讀取host檔案--》本地域名伺服器--》許可權域名伺服器--》根域名伺服器。如果有且沒有過期,則結束本次域名解析。域名解析成功之後,進行後續操作

2.tcp3次握手建立連線

3.建立連線後,發起http請求

4.伺服器端響應http請求,瀏覽器得到到http請求的內容;

5.瀏覽器解析html程式碼,並請求html程式碼中的資源

6.瀏覽器對頁面進行渲染,展現在使用者面前。

1、說一下什麼是Http協議?

對器客戶端和 伺服器端之間資料傳輸的格式規範,格式簡稱為“超文字傳輸協議”。

2、什麼是Http協議無狀態協議?怎麼解決Http協議無狀態協議?(曾經去某創業公司問到)

  • 無狀態協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊
  • 無狀態協議解決辦法: 通過1、Cookie 2、通過Session會話儲存。

3、說一下Http協議中302狀態(阿里經常問)

  • http協議中,返回狀態碼302表示重定向。
  • 這種情況下,伺服器返回的頭部資訊中會包含一個 Location 欄位,內容是重定向到的url。

4、Http協議有什麼組成?

  請求報文包含三部分:

  • 請求行:包含請求方法、URI、HTTP版本資訊
  • 請求首部欄位
  • 請求內容實體

  響應報文包含三部分:

  • 狀態行:包含HTTP版本、狀態碼、狀態碼的原因短語
  • 響應首部欄位
  • 響應內容實體

說一下網路傳輸的過程

5、Http協議中有那些請求方式?

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

6、Http協議中Http1.0與1.1區別?

  • 在http1.0中,當建立連線後,客戶端傳送一個請求,伺服器端返回一個資訊後就關閉連線,當瀏覽器下次請求的時候又要建立連線,顯然這種不斷建立連線的方式,會造成很多問題。
  • 在http1.1中,引入了持續連線的概念,通過這種連線,瀏覽器可以建立一個連線之後,傳送請求並得到返回資訊,然後繼續傳送請求再次等到返回資訊,也就是說客戶端可以連續傳送多個請求,而不用等待每一個響應的到來。

7、get與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支援標準字符集,可以正確傳遞中文字元。

9、常見Http協議狀態?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 200 :請求被正常處理   204 :請求被受理但沒有資源可以返回   206 :客戶端只是請求資源的一部分,伺服器只對請求的部分資源執行GET方法,相應報文中通過Content-Range指定範圍的資源。   301 :永久性重定向   302 :臨時重定向   303 :與 302 狀態碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上   304 :傳送附帶條件的請求時,條件不滿足時返回,與重定向無關   307 :臨時重定向,與 302 類似,只是強制要求使用POST方法   400 :請求報文語法有誤,伺服器無法識別   401 :請求需要認證   403 :請求的對應資源禁止被訪問   404 :伺服器無法找到對應資源   500 :伺服器內部錯誤   503 :伺服器正忙

10、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:實體主體的位置範圍,一般用於發出部分請求時使用

11、Http與Https優缺點?

  • 通訊使用明文不加密,內容可能被竊聽,也就是被抓包分析。
  • 不驗證通訊方身份,可能遭到偽裝
  • 無法驗證報文完整性,可能被篡改
  • HTTPS就是HTTP加上加密處理(一般是SSL安全通訊線路)+認證+完整性保護

12、Http優化

  • 利用負載均衡優化和加速HTTP應用
  • 利用HTTP Cache來優化網站

13、Http協議有那些特徵?

1、支援客戶/伺服器模式;2、簡單快速;3、靈活;4、無連線;5、無狀態。