當今的技術領域,開發者人數最為之多的群體便是web領域,與之相關崗位的包括前端工程師,后台工程師,移動端開發工程師等等。然而由於受時代浮躁氛圍的影響,許多開發者對最為基礎的HTTP協議都不甚了解,這也正是本篇文章的目的--簡單總結一下 了解HTTP協議之前你需要掌握的一些基礎知識,基本術語等等。
-
基本概念
-
協議
"協議定義了兩個或多個通信實體間交換報文的格式和次序,以及在報文傳輸/接收或其他方面所采取的動作。"--《計算機網絡--自頂向下方法》 我們可以把協議理解為規則的集合
(圖:人類交流的協議與網絡協議對比)
-
HTTP
HyperText Transfer Protocol(超文本傳輸協議)的縮寫,是建立在web應用層的核心協議。
-
HTML
HyperText Markup Language(超文本標記語言)的縮寫,web頁面是由對象組成的,對象可以說就是文件,大多數web頁面包含一個基本HTML文件,可以通過URL來尋址。
-
Web Browser(瀏覽器)
瀏覽器通過發送請求,獲取服務器資源,實現了HTTP的客戶端,可以稱作客戶端(Client)。其實現在許多的客戶端也是web客戶端轉制的,包括PC端和移動端。
-
Web Server(服務器)
用於存儲web對象,每個對象由URL尋址,web服務器實現了HTTP的服務器端(Server)。
-
TCP
Translation Control Protocol(傳輸控制協議)的縮寫,是面向連接(Connection-oriented)的傳輸層協議,HTTP協議建立在TCP協議之上,TCP協議為HTTP協議提供可靠數據傳輸服務。運行在不同機器上的進程通過向Socket(套接字)發送報文來進行通信。
-
Socket
socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。
-
URL
Uniform Resource Locator(統一資源定位符)的縮寫,不僅標識了Web 資源,還指定了操作或者獲取方式,同時指出了主要訪問機制和網絡位置。
主要格式:<協議><特定協議部分>
-
URI
Uniform REsource Identifier(統一資源標識符)的縮寫,是以統一的標准化方式標示資源的字符串。
-
URN
Uniform Resource Name(統一資源名稱)的縮寫,是URI的一種,用特定命名空間的名字標識資源。使用URN可以在不知道其網絡位置及訪問方式的情況下討論資源。
-
GET
HTTP協議客戶端對服務器的請求方法之一。從指定的服務器中獲取數據
-
POST
HTTP協議客戶端對服務器的請求方法之一。提交數據給指定的服務器處理
學習HTTP協議,大家要了解的最基本,最核心的概念就是以上這些,這些概念我會在后面的系列中逐步深入講解和分析,分享一些自己的學習經驗。
2. 辨析與理解
-
辨析URL URI URN
明白這三者,你只需要知道以下幾點:
-
URL和URN都是URI的子集,是URI的一種形式
-
引入URI的目的是標准化方式標識資源
-
引入URL是為了便於確定具體的網絡位置和訪問方式
-
引入URN的目的是唯一標識一個實體
-
辨析GET POST
看過好多網上的博客,都在講POST方法比GET方法安全,POST方法會加密等等。這些可以說是錯誤的說法!!
辨析GET與POST,你要明白以下幾點
-
HTTP是應用層上的協議,HTTP協議的四個方法恰好對應了增刪查改功能
-
POST是添加,DELETE是刪除,PUT是修改,GET是查詢。所以POST並不能說比GET安全,兩者功能是不同的。
-
POST和GET傳輸的都是明文,區別是GET能在URL上直接訪問,但本質上都沒有加密。
-
另外,GET是冪等的,請求1次和請求n次相同,所以一些不是冪等的操作(文件上傳,修改數據等)不能使用GET方法,用POST。
3. 總結
本文主要總結和分析了網絡尤其是WEB開發者需要掌握的一些核心概念,為今后深入了解HTTP協議,網絡編程,以及對服務器端的優化,打下良好的基礎。當然,掌握這些還遠遠算不上打好基礎,要想真正掌握好計算機網絡,你還需要閱讀相關技術書籍以及大量的編程實踐,加油吧!