HTTP的基本內容

  1. 什麼是HTTP協議?
    http協議即超文本傳輸協議,是一個客戶端和服務器端請求和應答的標準,通過使用網絡瀏覽器、網絡爬蟲或者其他工具,客戶端發送一個http請求到服務器指定的端口上(一般默認爲80端口),我們稱這個客戶端爲用戶代理程序。應答的服務器上存儲着一些資源,比如html和一些圖片,我們稱這個應答服務器爲源服務器。在用戶代理和源服務器之間可能存在多箇中間層,比如代理服務器、網關或者隧道。
    通常,由http客戶端發送一個請求,創建一個服務器指定端口的tcp連接,http服務器則在那個端口監聽客戶端的請求,一旦收到請求,服務器會向客戶端返回一個狀態,比如“HTTP/1.1 200 OK”,以及返回的內容,比如請求的文件、錯誤信息或者其它信息。

  2. http協議的主要特點?
    (1)簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
    (2)靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
    (3)無連接:每次連接只處理一個請求,服務器處理完客戶的請求,並收到客戶的應答之後,即斷開連接。採用這種方式可以節省傳輸時間。
    (4)無狀態:http協議是無狀態協議,服務器端是不能區分兩次連接者的身份,因爲是無狀態的,第一次連接任務完成,第二次再連接,服務端是沒有記住狀態,所以不能認定是同一個連接。一般網站都知道訪問者,是服務端加了一些session手段做到的,不是http協議做到的。

  3. http報文的組成部分?
    (1)請求報文
    請求行:http方法,頁面地址,http協議以及版本
    請求頭:key:value 告訴服務端我要哪些內容
    空行:告訴服務器不再是請求頭部分了
    請求體
    在這裏插入圖片描述
    (2)響應報文
    狀態行:http協議版本,狀態碼
    響應頭:key:value
    空行:告訴服務器不再是響應頭部分了
    響應體
    在這裏插入圖片描述

  4. http方法
    (1)GET:獲取資源
    (2)POST:傳輸資源
    (3)HEAD:獲取報文首部,向服務器發出指定資源的請求,但是服務器不傳回資源的本文部分。使用這個方法可在不必傳輸全部內容的情況下,就可以獲取其中請求資源的內容。
    (4)PUT:更新資源
    (5)DELETE:刪除資源

  5. POST和GET的區別?
    (1) GET在瀏覽器回退時是無害的,而POST會再次提交請求
    (2)GET請求會被瀏覽器主動緩存,而POST不會,除非手動設置
    (3)GET請求參數會完整的保留在瀏覽器歷史記錄裏,而POST的參數不會被保留
    (4)GET請求在URL中傳送的參數是有長度限制的,而POST沒有限制
    (5)GET參數通過URL傳遞,POST放在Request body中
    (6)GET產生的URL地址可以被收藏,而POST不可以
    (7)GET請求只能進行url編碼,而POST支持多種編碼方式。
    (8)對參數的數據類型,GET只接受ASCII字符,而POST沒有限制

  6. http的狀態碼?
    (1)1xx:指示信息----表示請求已接收,繼續處理
    (2)2xx:成功—表示請求已成功被接收
    (3)3xx:重定向—要完成請求必須進行更進一步的操作
    (4)4xx—客戶端錯誤–請求有語法錯誤或請求無法實現
    (5)5xx:服務器錯誤–服務器未能實現合法的請求
    常見的狀態碼?
    200 OK:客戶端請求成功
    206 Partial Content:客戶發送一個帶有Range頭的GET請求,服務器完成了它(一般是video標籤或者音頻標籤包裹的時候,視頻音頻過大會返回206)
    301 Moved Permanently:所請求的頁面已經轉移至新的URL
    302 Found:所請求的頁面已經臨時轉移至新的url
    304 Not Modified:客戶端有緩衝的文檔併發出一個條件性的請求,服務器告訴客戶,原來的緩衝的文檔還可以繼續使用
    400 Bad Request :客戶端請求有語法錯誤,不能被服務器所理解
    401 Unauthorized:請求未經授權,這個狀態碼必須和www-Authenticate報頭域一起使用
    403 Forbidden:對被請求頁面的訪問禁止
    404 Not Found :請求資源不存在
    500 Internal Server Error: 服務器發生不可預期的錯誤,原來緩衝的文檔還可以繼續使用
    503 Server Unavailable:請求未完成,服務器臨時過載或當機,一段時間後可能恢復正常。

  7. 什麼是持久連接
    http協議採用請求-應答模式,當使用普通模式,即非keep-alive 模式時,每個請求/應答客戶和服務器都要重新建立一個連接,完成之後立即斷開連接(http協議爲無連接協議)
    當使用keep-alive 模式(持久連接或連接重用)時,keep-alive 的功能使客戶端到服務器端的連接持續有效,當出現對服務器的後繼請求時,keep-alive 避免了建立或重新建立連接,但是持久連接只有在http 1.1 版本才支持。

  8. 什麼是管線化?
    在持久連接下,一次性將請求發送給服務器,相應一次性打包回來,就不會是請求一次響應一次這種。
    (1)管線化機制通過持久連接完成,僅HTTP/1.1支持此技術
    (2)只有GET和HEAD 請求可以進行管線化,而POST則有所限制
    (3)初次創建連接時不應啓動管線機制,因爲對方(服務器)不一定支持HTTP/1.1版本的協議
    (4)管線化不會影響響應到來的順序,如上的例子所示,響應返回的順序是未改變的
    (5)HTTP/1.1 要求服務器端支持管線化,但並不要求服務器端也對響應進行管線化管理,只是要求對管線化的請求不失敗即可。
    (6)由於上面提到的服務器端問題,開啓管線化很可能並不會帶來大幅度的性能提升,而且很多服務器端和代理程序對管線化的支持並不好,因此現代瀏覽器如Chrome 和 Firefox 默認未開啓管線化支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章