1. 協議小結:HTTP協議與TCP/IP協議
現代Web應用開發的基礎是HTTP協議,那么HTTP協議與我們熟知的TCP/IP協議有什么關系呢?
這個要從網絡通信模型說起,簡單的說,計算機通信就像兩個人在互相交流,怎樣才能互相聽懂呢?很簡單,就是使用一致的語言和表達方式。
計算機之間通信的語言就是網絡協議。網絡協議是網絡上所有設備(網絡服務器、計算機及交換機、路由器、防火墻等)之間通信規則的集合,它規定了通信時信息必須采用的格式和這些格式的意義。大多數網絡都采用分層的體系結構,比如傳統的開放式系統互連參考模型(OSI)中,定義了7個層次的模型,從底到上依次為:物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層。每一層都建立在它的下層之上,向它的上一層提供一定的服務,而把如何實現這一服務的細節對上一層加以屏蔽。一臺設備上的第 n層與另一臺設備上的第n層進行通信的規則就是第n層協議。在網絡的各層中存在著許多協議,接收方和發送方同層的協議必須一致,否則一方將無法識別另一方發出的信息。網絡協議使網絡上各種設備能夠相互交換信息。常見的協議有:TCP/IP協議、IPX/SPX協議、NetBEUI協議等。
常見的3種協議各有不同特點,也就導致了有不同的適用范圍。最適合使用在Internet上的就是TCP/IP 協議。該協議系統并沒有使用傳統的7層,而是提出了簡化的4層模型,從底到上依次為:網絡接口層,網絡層,傳輸層,應用層。同樣的,只有為每一層定義好交流的協議,網絡中的計算機之間才能互相通信。例如:網絡層的IP協義,傳輸層的FTP,UDP,TCP協議等,應用層的HTTP,SMTP,POP3,FTP,TELNET等協議。
HTTP協議是一個叫超文本傳輸協議的應用層協議,是提供網頁服務的協議。沒有HTTP 協議是不能瀏覽網頁的,但是其他的像郵件服務(只要協議在)都還是正常的。
2. 請求過程:HTTP請求
我們在瀏覽器中訪問網站,與服務器進行交互都是通過HTTP請求發出的。當你點擊一個連接時,瀏覽器首先找到站點的IP地址(通過DNS來實現)。在找到IP地址后建立TCP連接,連接建立后我們就可以發送請求了。每個交互都會轉化成相應的HTTP請求,最常用的如GET(第一次請求頁面),HEAD,POST(附帶參數,請求頁面),PUT等等。轉化后的HTTP請求是有一定格式的,這個有興趣的可以參考相應的HTTP請求格式說明。
服務器處理完請求后,會返回HTTP響應給客戶端并斷開連接,這個響應同樣包含了很多的信息。瀏覽器收到響應以后,解析該響應并顯示在瀏覽器中。響應內容中最有用的就是響應的狀態(數字表示,如200表示成功,404表示沒找到頁面等)和返回請求的各種文本(如頁面HTML,CSS文件,Javascript文件等等)。
3. HTML語言
瀏覽器從服務器獲得到HTML后,就負責解釋并展現HTML表示的內容。HTML代表超文本標記語言,其最初的目的就是格式化文本,方便瀏覽器解釋,并展示給客戶端。但是隨著網絡的發展,網絡傳輸和顯示的內容也日漸豐富,頁面不再只包括靜態的圖片和文字,而是包括了列表,選項,交互等內容。擴充后的HTML提供了更為豐富的標簽。其中最突出的就是<form>表單,它是應用程序與用戶進行交互的前提。<form>表單提示瀏覽器,這個標簽與</form>標簽之間的內容會返回給服務器。表單的數據會被“投遞”給服務器處理,這個過程就是回發。
典型的HTTP請求通常就是先進行GET獲取,再進行POST投遞 - 前者獲取最初的文檔,后者用于在必要的時候將數據返回給服務器,進行更為復雜的計算和處理。
直接使用HTML開發無疑是很麻煩的,為了更好的完成現代動態Web開發,不同的公司提供了不同的運行環境和開發工具,微軟提供的就是asp.net。它提供了很多集成的對象,簡化了開發的難度。但是還是有很多的問題不能很好的解決。比如HTTP是無狀態的,如何保持頁面POST前后的狀態,實在是一個困難的問題。
4. Web開發思想
從上面的分析我們可以看到,歸根結底,Web開發無非是要處理兩大問題:
(1). 在無連接的HTTP協議上通過HTML管理用戶的界面
(2). 在無狀態的HTTP協議上管理應用程序的狀態。
雖然有像ASP這樣的框架出現了,使得Web的開發更加簡單,但是開發者仍然要自行開發許多的“標準”功能,例如安全系統,管理UI狀態,數據訪問等等。所有這一切促使了更高級,更智能的像ASP.NET這樣的編程框架的產生。
了解了這個基本問題,以及讓開發者開發更快速,更簡單這樣最直接的目的,我們可以想象,具體的開發框架必定會繼續向前發展,不斷推陳出新,并提供更加完整,更加智能的功能。
當然了,HTML5中WebSocket的出現已經引發了有連接的狀態,這個在前面的文章中已經提及了,就不多說了。
新聞熱點
疑難解答