作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。
前篇內我們討論了在網站維運管理上的一些進階需求如轉址、URL改寫等等,在應用遞送方案比如說像NSX Advanced Load Balancer內可以協助客戶簡單的解決。但如果我們是學系統、Infra或純網路出身,在與網站架構師、管理者討論上面需求時,這些需求可能根本聽不懂。最簡單的原因,是必須要先具備HTTP協議的基礎知識,才能夠進一步聽懂客戶問題,然後找到解法。就如同防火牆管理者顯然一定要先懂TCP/IP相關技術名詞,HTTP應用遞送方案的管理者當然也需要理解HTTP協議的內容。
因此接下來幾篇,我就自不量力地和大家做HTTP協議的基礎知識整理。相關的資訊都可以非常簡單的在Internet上面找到,但可能多半談得很深或是較為枝節。希望在下面的介紹內,可以讓大家初步了解HTTP協議常見的最基礎名詞,並且在需要時能夠自行快速找到對應的需求文件。
先做一個最簡單的HTTP協議簡述:
- HTTP是一個七層協議,主要用來做網站文件與資訊的傳遞。目前時間的主流版本是 HTTP 1.1 (RFC 2616) 及 HTTP/2 (RFC 7540)。主要運作於 TCP 之上
- 使用者(瀏覽器)對網站發出HTTP Request,網站收到後,會對使用者回應一個HTTP Response。HTTP的Request與Response是成對的,一個Request會收到一個Response
- 一個TCP連線內可以有多個HTTP Request / Response。但HTTP本身是無狀態 (stateless) 的,不同的HTTP Request / Response 間沒有關係(或需要透過cookie等機制來建立相關性)
畫成圖應該是像下面這樣:
如果是對於一般的用戶與初學者來說,到這邊應該都沒有什麼感覺,因為以用戶來說,我們的行為就只是在瀏覽器內輸入網址,然後可以看到網站的文件。因此若大家想要細看到底我們有發出哪些HTTP Request,收到了哪些Response,在不同的瀏覽器可以叫出各自的網頁開發工具,比如說於Firefox / Chrome內只要按F12即可:
把圖放大一點,在工具內我們可以看到
- 本次發出HTTP Request所使用的方法 (Method)
- 這次連線的完整網址 (URL)
- 網站那邊回應的狀態碼 (Response Status Code)
- 在Request / Response內所帶的Header (表頭、標頭)
- 在Request / Response內所帶的 Cookie值
接下來我們來進行上面的這些基礎名詞解釋:
HTTP Method
HTTP協議內有定義了非常多種Method,但通常除了開發網站或是要手動呼叫Restful-API,一般用戶不需要去管『我要用哪種Method』。最常見最常見的Method大概就是Get / Post,Get就是讀文件,Post就是寫資料。最基本的認識到這邊即可,其他的大家用的深時再去研究就好。
HTTP Response Status Code
就算一般人也看過404錯誤訊息吧。理解Status Code還滿重要的,但最基本的常識只需要知道下面這五種:
- 1XX:僅為提供資訊用,目前沒有在使用
- 2XX:回應成功。代表前面的請求 (Request) 已成功被網站接收、理解、並接受
- 3XX:重新導向、轉址。網站告知瀏覽器應該連到另一個位置
- 4XX:用戶端的請求有誤。比如說用戶要求的網址不存在
- 5XX:伺服器端無法處理。比如說伺服器目前過載,或 Web 應用出現錯誤
其他的細節,比如說回應值301與302到底有什麼差別,就有興趣與需要時再研究即可。
網址 (URL)
網址說起來簡單,但可以解剖成各個部分,我們用下面這張圖來解釋:
上圖內,
- Protocol Type:這邊指的是說用戶是採用HTTP或是HTTPS方式來連接
- Host:包括了連接目標的網站地址 (FQDN),以及所包含的連接埠
- Path:代表要取得的網頁/檔案在網站內的路徑與檔名。這是由Host後面的斜線開始,一直到Query問號前的字串
- Query:這是直接在網址內傳遞變數的方式,比如說要看文件的第幾頁,目前用戶是誰等等
上面我們不是用學術角度的解釋,而是採用實務上,以及在NSX Advanced Load Balancer文件內的說明方式。當NSX Advanced Load Balancer文件內講URL (Uniform Resource Locator) 時,指的是上面由Protocol到Query的完整字串;而講的是URI (Uniform Resource Identifier) 時,指的是上面的Path與Query的字串組合。
先寫到這邊,下篇我們繼續快速解釋HTTP協議內的Header以及Cookie。
Comments
0 Comments have been added so far