Http:超文本傳輸協(xié)議,在我們?nèi)缃竦木W(wǎng)絡(luò)時代。我們每天瀏覽著萬萬千千的網(wǎng)頁,圖片,文字,這些都離不開Http,他是我們快速可靠訪問世界各地的web服務(wù)器資源地基礎(chǔ)。Http使用的是可靠地數(shù)據(jù)傳輸協(xié)議TCP協(xié)議。這樣就是保證了我們所訪問資源的萬無一失,不會產(chǎn)生數(shù)據(jù)丟失或者損壞。這也可以使我們開發(fā)人員把更多的經(jīng)歷放在程序業(yè)務(wù)細節(jié)上得編寫。避免了考慮一些數(shù)據(jù)傳輸途中的缺陷。下面我們就簡單來看一下HTTP有關(guān)的基礎(chǔ)知識。 一:web服務(wù)器和客戶端 Web服務(wù)器所使用的是HTTP協(xié)議。所以經(jīng)常被稱為HTTP服務(wù)器,這些服務(wù)器存儲了大量的網(wǎng)絡(luò)資源。在我們平時的上網(wǎng)過程中。我們每一次點擊的一個連接其實就是一個web請求。當我們點擊連接時,web客戶端,在這里也就是指的是瀏覽器會向web服務(wù)器發(fā)送一個請求。Web服務(wù)器根據(jù)請求的資源提供數(shù)據(jù)
二.資源 在我們平時上網(wǎng)中所看到的的大多數(shù)都是web資源。這些資源都寄存在web服務(wù)器上。當我們訪問想要的資源時。Web服務(wù)器會給我們提供。最簡單也是最常見的資源就是一些靜態(tài)資源。如一些文檔,靜態(tài)頁面、音頻等。但資源不一定是靜態(tài)文件,有些資源還可以是根據(jù)需要生產(chǎn)內(nèi)容的軟件程序 1.媒體類型 在眾多的web資源中,它們有數(shù)千種不同的數(shù)據(jù)類型。HTTP會給每種要通過web傳輸?shù)馁Y源對象定義一個MIME類型的標簽。MIME類型是一種文本標記。表示一種主要的對象類型和一個特定的子類型。中間由一條斜杠來分割。 常見的MIME類型(通用型): 超文本標記語言文本 .html text/html xml文檔 .xml text/xml XHTML文檔 .xhtml application/xhtml+xml 普通文本 .txt text/plain AVI文件 .avi video/x-msvideo GZIP文件 .gz application/x-gzip TAR文件 .tar application/x-tar 任意的二進制數(shù)據(jù) application/octet-stream 2.URI 每一個web服務(wù)器資源都有一個名字,這個名字叫資源標識符。他就像一個郵政地址一樣,在世界范圍內(nèi)唯一標識并定位信息資源。URI有兩種形式。分別為URL何URN. 3.URL 統(tǒng)一資源定位符(URL,英語UniformResourceLocator的縮寫)也被稱為網(wǎng)頁地址,是因特網(wǎng)上標準的資源的地址。 URL的格式由下列三部分組成: 第一部分是協(xié)議(或稱為服務(wù)方式); 第二部分是存有該資源的主機IP地址(有時也包括端口號); 第三部分是主機資源的具體地址。,如目錄和文件名等。 第一部分和第二部分之間用“://”符號隔開,第二部分和第三部分用“/”符號隔開。第一部分和第二部分是不可缺少的,第三部分有時可以省略。現(xiàn)在幾乎所有的URI都是URL 4.URN 統(tǒng)一資源名稱 (Uniform Resource Name, URN),唯一標識一個實體的標識符,但是不能給出實體的位置。系統(tǒng)可以先在本地尋找一個實體,在它試著在Web上找到該實體之前。它也允許Web位置改變,然而這個實體卻還是能夠被找到。URN 可以提供一種機制,用于查找和檢索定義特定命名空間的架構(gòu)文件。盡管普通的 URL 可以提供類似的功能,但是在這方面,URN 更加強大并且更容易管理,因為 URN 可以引用多個 URL。與 URL 不同,URN 與地址無關(guān)。URN 和 URL 都屬于 URI。URN在web中主要應用是下拉菜單的制作。使用URN時下拉菜單的易擴展性將會得到很大的提高。 三.事務(wù) 一個HTTP事務(wù)是有一個web客戶端的請求和得到一個web服務(wù)器端響應組成的。這種通信時通過一種叫http報文的數(shù)據(jù)塊進行傳輸?shù)摹?/span> 1.方法 每一種HTTP請求報文都包含一種方法。這個方法指示了服務(wù)器要執(zhí)行什么動作(獲取頁面、運行網(wǎng)關(guān)程序、刪除文件等)。 四。種常見的Http方法 1).HEAD 向服務(wù)器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內(nèi)容的情況下,就可以獲取包含在響應消息頭中的元信息?!?/span> 2).GET 向特定的資源發(fā)出請求。注意:GET方法不應當被用于產(chǎn)生“副作用”的操作中,例如在web app.中。其中一個原因是GET可能會被網(wǎng)絡(luò)蜘蛛等隨意訪問?!?/span> 3).POST 向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改?!?/span> 4).PUT 向指定資源位置上傳其最新內(nèi)容。 5).DELETE 請求服務(wù)器刪除Request-URI所標識的資源。 2.狀態(tài)碼 每一個HTTP響應報文都會帶回一個響應狀態(tài)碼。顧名思義,狀態(tài)碼就是反應此次請求的結(jié)果狀態(tài)。反應請求是否成功,或者要執(zhí)行其他動作。常見狀態(tài)碼有200,404,505等 所有狀態(tài)碼詳細信息:http://baike.baidu.com/view/1790469.htm 3.web頁面中可以包含多個對象 應用程序完成一項任務(wù)時通常會發(fā)布多個HTTP 事務(wù)。比如,Web 瀏覽器會發(fā)布一系列HTTP 事務(wù)來獲取并顯示一個包含了豐富圖片的Web 頁面。瀏覽器會執(zhí)行一個事務(wù)來獲取描述頁面布局的HTML“框架”,然后發(fā)布另外的HTTP 事務(wù)來獲取每個嵌入式圖片、圖像面板、Java 小程序等 五.報文 一個HTTP請求報文由請求行(request line)、請求頭部(header)和請求數(shù)據(jù)3個部分組成, HTTP有兩類報文:請求報文和響應報文。請求和響應報文顧名思義,一個是web客戶端發(fā)送請求時響應的HTTp 報文,一個是web服務(wù)器響應式響應的Http報文。其實他們的格式都是相同的。 我們以一個實際的看一下請求報文: ①是請求方法,GET和POST是最常見的HTTP方法,除此以外還包括DELETE、HEAD、OPTIONS、PUT、TRACE。不過,當前的大多數(shù)瀏覽器只支持GET和POST,Spring 3.0提供了一個HiddenHttpMethodFilter,允許你通過“_method”的表單參數(shù)指定這些特殊的HTTP方法(實際上還是通過POST提交表單)。服務(wù)端配置了HiddenHttpMethodFilter后,Spring會根據(jù)_method參數(shù)指定的值模擬出相應的HTTP方法,這樣,就可以使用這些HTTP方法對處理方法進行映射了。 ①②③統(tǒng)稱為請求行 六.連接 這里所說的連接其實就是TCP連接。HTTP報文就是通過TCP連接進行數(shù)據(jù)傳輸?shù)摹?/span> 1.TCP/IP HTTP是應用層協(xié)議,他無需操心網(wǎng)絡(luò)通信的具體細節(jié),這些具體工作都交給了同用、可靠地因特網(wǎng)傳輸協(xié)議TCP/IP 從協(xié)議分層模型方面來講,TCP/IP由四個層次組成:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層、應用層。 因特網(wǎng)本身就是基于TCP/IP的。它隱藏了許多網(wǎng)絡(luò)傳輸過程中的弱點和各種網(wǎng)絡(luò)和硬件特點。使各種類型的計算機和網(wǎng)絡(luò)都能進行可靠地通信。只要簡歷的TCP連接??蛻舳撕头?wù)器端就能進行安全可靠地數(shù)據(jù)傳輸。用網(wǎng)絡(luò)術(shù)語來說,HTTP 協(xié)議位于 TCP 的上層。HTTP 使用 TCP 來傳輸其報文數(shù)據(jù)。與之類似,TCP 則位于 IP 的上層。 2.連接、IP地址和端口號 在HTTP客戶端在向服務(wù)器發(fā)送報文之前首先要首先要用端口號和IP地址建立一個TCP/IP連接 。建立一個TCP連接就和一個小區(qū)的某戶人家寄信是一個樣的。小區(qū)的地址就相當于一個IP地址。我們知道他的地址在那個小區(qū)的哪個樓了。但我們不知道他的門牌號還是無法確定是哪一家的信。所以我們需要一個端口號即為門牌號去具體確定是哪一個服務(wù)
七.Web的結(jié)構(gòu)部件 這里我們主要是先來了解幾個基本的概念 1.代理:位于客戶端和服務(wù)器之間的HTTP中間實體。他其實的作用就是接收HTTP請求。然后作為中間人在轉(zhuǎn)發(fā)出去。它有可能對請求做一些改變也可能原封不動的轉(zhuǎn)發(fā)出去。 2.緩存:HTTP的倉庫,使常用頁面的副本可以保存在離客戶端更近的地方。有了緩存之后可以加快HTTP請求的訪問速度。如果一個請求被請求過。再次請求的時候去緩存中找。這樣大大減小了服務(wù)器的壓力。 3.網(wǎng)關(guān):連接其他應用程序的特殊Web服務(wù)器。其實說白了,他就是一個轉(zhuǎn)換網(wǎng)絡(luò)協(xié)議的中間變量。假如它收到一個HTTP請求。這個可能訪問的資源可能需要用到FTP協(xié)議請求所需資源。這時就要用到網(wǎng)關(guān) 4隧道:對HTTP通信報文進行盲轉(zhuǎn)發(fā)的特殊代理。隧道(tunnel)是建立起來之后,就會在兩條連接之間對原始數(shù)據(jù)進行盲轉(zhuǎn)發(fā)的HTTP應用程序。HTTP隧道通常用來在一條或多條HTTP連接上轉(zhuǎn)發(fā)非HTTP數(shù)據(jù),轉(zhuǎn)發(fā)時不會窺探數(shù)據(jù)。 隧道這個概念我沒有理解很透徹,還有些疑惑。希望對這個理解透徹的朋友講解一下 5.Agent代理:發(fā)起自動HTTP請求的半智能Web客戶端。我們目前大多數(shù)發(fā)起HTTP請求的web客服端都是基于瀏覽器。Agent代理就是一個自動發(fā)送HTTP請求的工具 到目前為止,一些關(guān)于HTTP協(xié)議的基本概念簡單介紹完畢,在以后的文章中我還會細寫有關(guān)概念。敬請期待。 昨晚讀《http權(quán)威指南》疑問,在將相對url轉(zhuǎn)為絕對url時,如果相對url沒有方案,主機,端口,參數(shù),查詢字符串等組件,那么它將繼承基礎(chǔ)的的相關(guān)組件……那么在我們平時的web開發(fā)中,在第一個頁面點擊一個鏈接傳的參數(shù)(查詢字符串),在鏈接頁面的request中,可以得到參數(shù)值那如果在鏈接的頁面中有一個相對url鏈接,點擊這個鏈接之后,是不是在這個鏈接頁面的request中也可以得到剛才傳的參數(shù)值?求各位大神幫忙解答。
|
|
來自: richsky > 《WEB開發(fā)》