淺析HTTP協議的特色以及優缺點

  • 1.前言:

    • 目前互聯網上絕大部分的資源都是用Http協議傳輸,瀏覽器是HTTP協議裏的請求方,即User Agent;服務器是HTTP協議裏的應答方,經常使用的有Apache和Nginx;CDN位於瀏覽器和服務器之間,主要起到緩存加速的做用;爬蟲是另外一類的Use Agent,是自動訪問網絡資源的程序......等等。最近瀏覽了一些HTTP協議相關的資料因此想說下HTTP協議的特色以及優缺點。
  • 2.HTTP特色:

    • HTTP協議是一個"靈活可擴展"的傳輸協議:我的的理解就是HTTP協議有請求方法、版本號、狀態碼、頭字段等特性。而body也再也不限於文本形式的TXT或HTML,而是可以傳輸圖片、音頻視頻等任意數據,這些都是源於它的"靈活可擴展"的特色。
    • HTTP協議是一個"可靠"的傳輸協議:由於HTTP協議是基於TCP/IP的,而TCP自己是一個「可靠」的傳輸協議,因此HTTP天然也就繼承了這個特性,可以在請求方和答應發之間「可靠」的傳輸數據。其實HTTP也就是對傳輸的數據進行了一層包裝,加上一個頭,而後調用Socket API,經過TCP/IP協議發送和接收。
    • HTTP協議是一個應用層的協議:我的理解HTTP、FTP(只能傳輸文件)、SMTP(只能發送郵件)、SSH(只能遠程登入)......這些協議都算是應用層的協議,可是HTTP協議能夠攜帶任意頭字段和實體數據的報文結構,以及鏈接控制、緩存代理等方便易用的特性,顯得就特別有優點。
    • HTTP協議使用的是請求 - 應答通訊模式:在這個比較好理解就像是寫代碼時的函數調用,只要填好請求頭裏的字段,「調用」後就會收到答覆。
    • HTTP協議是無狀態的:「狀態」其實就是客戶端或者服務器裏保存的一些數據或者標誌,記錄了通訊過程當中的一些變化信息。這裏說下TCP協議是有狀態的,一開始處於CLOSED狀態,鏈接成功後是ESTABLISHED狀態,斷開鏈接後是FIN-WAIT狀態,最後又是CLOSED狀態。回頭看HTP,客戶端和服務器永遠處於一種「無知」的狀態,就是每次的請求和答覆都是獨立的,沒有任何聯繫。就是協議不要求客戶端或服務器記錄請求的相關信息。
    • 特別說明:之前HTTP協議還有一個「無鏈接」的特色,指的是協議不保持鏈接狀態,每次請求應答後都會關閉鏈接,這就和UDP幾乎如出一轍了。可是很影響性能,在HTTP/1.1裏就改爲了老是默認啓動keepalive長鏈接機制,因此如今的HTTP已經再也不是「無鏈接」的了
  • 3.HTTP優缺點:

    • 簡單、靈活和易於擴展瀏覽器

    • 擁有成熟的軟硬件環境,應用很是普遍,是互聯網的基礎設施緩存

    • HTTP是無狀態的,能夠輕鬆實現集羣化,擴展性能,能夠利用Cookie技術實現「有狀態安全

    • 明文傳輸,數據徹底肉眼可見,可以方便地研究和分析,但也容易被竊聽服務器

    • HTTP是不安全的,沒法驗證通訊雙方的身份,也不能判斷報文是否被修改(我的理解就是你的某個請求到服務器,服務器沒有辦法徹底校驗你和你的數據是否被修改,)網絡

相關文章
相關標籤/搜索