初探HTTP


HTTP,全名 HyperText Transfer Protocol ,是應用層的協議。HTTP主要實施在 Client Program 以及 Server Program,作為彼此溝通的訊息結構,按此結構所傳遞的訊息也叫做Web Page。運行Client Program是Web browser,運行Server Program是Web server。

Web Page 由許多 Objects 組成,Object是File如 HTML,JPEG圖檔,Javascript檔或CSS檔案等。Web Page通常是一個Base HTML file以及其透過URL參考的objects。URL以hostname和path name組成。Client Browser向Server請求資源,收到Base HTML file後再透過上面被參照的objects的URL去請求資源。

HTTP在運輸層採用TCP,在開始傳輸資料前會先進行TCP連線。HTTP Web server因為不會保存客戶的資訊(HTTP協議本身不會),所以也稱作 stateless protocol。HTTP有版本演進,從1990的HTTP/1.0到2020主流的HTTP/1.1,目前亦有些server採用HTTP/2,而HTTP/3也正在發展。

HTTP 的 Non-Persistent 以及 Persistent Connections

Connections指的是TCP的連線。以下分別說明:

Non-Persistent Connections

請求每個Wep Page中的objects都要重新進行TCP連線,每個object要花費至少2 round-trip time (RTT)的時間,RTT的時間所代表是一個小packet從client到server再回到client的時間,2 RTT 一個用來建立TCP連線的前兩個步,一個是連線的第三步以及請求資料,因此總花費時間長。這是HTTP/1.0所採用的方式。

Persistent Connections

當objects在相同TCP connections時,只要建立第一次的TCP connection,其餘透過這個connection請求資料,省下不少時間。HTTP/1.1採用的是Persistent Connections,除此之外採用pipelining的方式,不須等到前一個object收到資料後才請求下一個,而是可以一次請求,因此對於已經建立TCP連線的objects,全部請求可以以1 RTT多一點時間完成。


See also