圖解HTTP(1)

CopperDong發表於2018-07-01

一、瞭解Web及網路基礎

      為知識共享而規劃Web:1989年3月,CERN(歐洲核子研究組織)的Tim BernersLee博士提出了一種能讓遠哥兩地的研究者們共享知識的設想。最初設想的基本理念是:藉助多文件之間相互關聯形成的超文字(HyperText),連成可相互參閱的WWW(World Wide Web,全球資訊網)。

      現在已提出了3項WWW構建技術,分別是:把SGML作為頁面的文字標記語言的HTML;作為文件傳遞協議的HTTP;指定文件所在地址的URL。

      網路基礎TCP/IP


二、簡單的HTTP協議

      HTTP是無狀態協議,即對傳送過的請求或響應都不做持久化處理。為了實現期望的保持狀態功能,引入了Cookie技術。

      方法:GET、POST、PUT(不帶驗證)、HEAD、DELETE、OPTIONS、TRACE(追蹤路徑)、CONNECT


      為解決上述TCP連線的問題,HTTP/1.1和一部分的HTTP/1.0想出了持久連線(HTTP keep-alive)的方法,只要任意一端沒有明確提出斷開連線,則保持TCP連線狀態。此時客戶端和伺服器端都需要支援。


     持久連線使得多數請求以管線化(pipelining)方式傳送成為可能,不用等待響應亦可直接傳送下一個請求,從而實現並行。

      Cookie技術通過在請求和響應報文中寫入Cookie資訊來控制客戶端的狀態。一個叫做Set-Cookie欄位通知客戶端儲存Cookie。客戶端傳送請求時自動加入Cookie值,伺服器端發現客戶端傳送過來的Cookie後,會去檢查究竟是從哪一個客戶端發來的連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。

三、HTTP報文內的HTTP資訊


 常用的內容編碼:gzip、compress、deflate(zlib)和identity(不進行編碼)

 在MIME擴充套件中會使用一種稱為多部分物件集合(Multipart)的方法,來容納多份不同型別的資料。

  multipart/form-data(在Web表單檔案上傳時使用)、multipart/byteranges(狀態嗎206)

  獲取部分內容的範圍請求:下載遇到網路中斷,需要一種可恢復的機制,Range欄位 bytes=5001-10000

  內容協商:如中文或英文,Accept、Accept-Charset(字符集)、Accept-Encoding、Accept-Language、Content-Language

四、返回結果的HTTP狀態碼

   狀態碼的職責是當客戶端向伺服器端傳送請求時,描述返回的請求結果。


 實際經常使用的大概只有14種。


相關文章