3.23.2010

[轉貼]什麼是HTTP??

自己在前一段時間在Study / Debug一個Web Server issue時遇到的,那個時後想要瞭解一下什麼是HTTP (Hyper Text Transfer Protocol,超文件傳輸協定),想知道封包格式怎麼丟,Client端有那些Requests,Server端有那些Responses等等。

雖然Google上找到的,或許並不是當時我想要的;不過找到的這一篇,自己覺得寫得還蠻淺顯易懂地,應該很值得跟有需要的人分享一下!!


在現今,網站已成為我們生活的一部分,而瀏覽器與網站的溝通語言HTTP(Hyper Text Transfer Protocol,超文字傳輸協定)也佔了網際網路的絕大多流量,因為HTTP的超連結與支援多媒體檔案格式更使得它迅速發展,也使得這方面研究與技術更多樣與全面。

如Web Server軟體支援單一主機及單一IP可建立多個虛擬網站,另外為增進整個Web環境的存取效率與頻寬改善,又發展Cache Server來扮演這個角色,很多廠商也發展了Loading Balancing的網路設備,從網路層及其他Internet技術,來增加Web Server的可擴充性與容錯性,另外網站的線上交易也與日俱增,網站的安全性更顯重要,SSL (Secure Socket Layer)加密傳輸,避免傳輸資料遭到偽造與偷聽,讓網站更加安全。

在這裡我們先從HTTP的基本運作談起,第一次我們談的是:
1. HTTP與TCP/IP其他各層的關係
2. 何謂URI (Uniform Resource Identifiers)??
3. Clients與Server溝通行為



當Web Brower與Web Server溝同時,Web Brower與Web Server成為2個如《圖1》的溝通系統,透過與底層通訊協定合作,交換HTTP Message。

Uniform Resource Locator
一般我們都很熟悉URL (Uniform Resource Locators,萬用資源位址),如http://www.gamer.com.tw/,而URL只是URI特定的一種格式,我們這邊介紹URI,因為它是HTTP規格,也能幫我們了解更多HTTP的資訊,《圖2》及《表一》就是URI的介紹。



Clients與Server溝通行為
對HTTP而言,Clients與Server最大差異是Client負責request,而Server負責response,如《圖3》。而HTTP要能溝通,就須建立TCP的connection,最早的HTTP,一次TCP connection只能做一次request - response,如《圖4》。而後來HTTP的改善成Persistence,可在一次TCP中,依序做多個request - response傳送,如《圖5》。HTTP繼續再發展有Pipelining功能,它能在一次TCP connection中,先做多次HTTP request,再做多次HTTP response,如《圖6》而目前HTTP / 1.1就支援Persistence及Pipelining,使HTTP Message傳送不會卡在TCP connection的瓶頸,大大提升網頁存取效率。







參考資料:http://eservice.seed.net.tw/class/class11.html

還有另外一篇也是介紹HTTP的:http://forum.slime.com.tw/thread180066.html

維基百科對於HTTP的定義:http://zh.wikipedia.org/wiki/HTTP

沒有留言:

張貼留言