小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java程序員菜鳥進階(六)《HTTP權威指南》之HTTP相關概念詳解

 richsky 2013-02-17

Http:超文本傳輸協議,在我們如今的網絡時代。我們每天瀏覽著萬萬千千的網頁,圖片,文字,這些都離不開Http,他是我們快速可靠訪問世界各地的web服務器資源地基礎。Http使用的是可靠地數據傳輸協議TCP協議。這樣就是保證了我們所訪問資源的萬無一失,不會產生數據丟失或者損壞。這也可以使我們開發(fā)人員把更多的經歷放在程序業(yè)務細節(jié)上得編寫。避免了考慮一些數據傳輸途中的缺陷。下面我們就簡單來看一下HTTP有關的基礎知識。


一:web服務器和客戶端

Web服務器所使用的是HTTP協議。所以經常被稱為HTTP服務器,這些服務器存儲了大量的網絡資源。在我們平時的上網過程中。我們每一次點擊的一個連接其實就是一個web請求。當我們點擊連接時,web客戶端,在這里也就是指的是瀏覽器會向web服務器發(fā)送一個請求。Web服務器根據請求的資源提供數據

                                                                                             


二.資源

在我們平時上網中所看到的的大多數都是web資源。這些資源都寄存在web服務器上。當我們訪問想要的資源時。Web服務器會給我們提供。最簡單也是最常見的資源就是一些靜態(tài)資源。如一些文檔,靜態(tài)頁面、音頻等。但資源不一定是靜態(tài)文件,有些資源還可以是根據需要生產內容的軟件程序

1.媒體類型

在眾多的web資源中,它們有數千種不同的數據類型。HTTP會給每種要通過web傳輸的資源對象定義一個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

任意的二進制數據 application/octet-stream


2.URI

每一個web服務器資源都有一個名字,這個名字叫資源標識符。他就像一個郵政地址一樣,在世界范圍內唯一標識并定位信息資源。URI有兩種形式。分別為URLURN.


3.URL

統一資源定位符(URL,英語UniformResourceLocator的縮寫)也被稱為網頁地址,是因特網上標準的資源的地址。 

URL的格式由下列三部分組成:

第一部分是協議(或稱為服務方式);

第二部分是存有該資源的主機IP地址(有時也包括端口號);

第三部分是主機資源的具體地址。,如目錄和文件名等。

第一部分和第二部分之間用//”符號隔開,第二部分和第三部分用“/”符號隔開。第一部分和第二部分是不可缺少的,第三部分有時可以省略。現在幾乎所有的URI都是URL


4.URN

統一資源名稱 (Uniform Resource Name, URN),唯一標識一個實體的標識符,但是不能給出實體的位置。系統可以先在本地尋找一個實體,在它試著在Web上找到該實體之前。它也允許Web位置改變,然而這個實體卻還是能夠被找到。URN 可以提供一種機制,用于查找和檢索定義特定命名空間的架構文件。盡管普通的 URL 可以提供類似的功能,但是在這方面,URN 更加強大并且更容易管理,因為 URN 可以引用多個 URL。與 URL 不同,URN 與地址無關。URN 和 URL 都屬于 URI。URNweb中主要應用是下拉菜單的制作。使用URN時下拉菜單的易擴展性將會得到很大的提高。

三.事務


一個HTTP事務是有一個web客戶端的請求和得到一個web服務器端響應組成的。這種通信時通過一種叫http報文的數據塊進行傳輸的。


1.方法

每一種HTTP請求報文都包含一種方法。這個方法指示了服務器要執(zhí)行什么動作(獲取頁面、運行網關程序、刪除文件等)。


四。種常見的Http方法


1.HEAD 向服務器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以獲取包含在響應消息頭中的元信息?!?/span>

2.GET 向特定的資源發(fā)出請求。注意:GET方法不應當被用于產生副作用的操作中,例如在web app.中。其中一個原因是GET可能會被網絡蜘蛛等隨意訪問?!?/span>

3.POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改?!?/span>

4.PUT 向指定資源位置上傳其最新內容。 

5.DELETE 請求服務器刪除Request-URI所標識的資源。


2.狀態(tài)碼

每一個HTTP響應報文都會帶回一個響應狀態(tài)碼。顧名思義,狀態(tài)碼就是反應此次請求的結果狀態(tài)。反應請求是否成功,或者要執(zhí)行其他動作。常見狀態(tài)碼有200,404,505

所有狀態(tài)碼詳細信息:http://baike.baidu.com/view/1790469.htm 


3.web頁面中可以包含多個對象

應用程序完成一項任務時通常會發(fā)布多個HTTP 事務。比如,Web 瀏覽器會發(fā)布一系列HTTP 事務來獲取并顯示一個包含了豐富圖片的Web 頁面。瀏覽器會執(zhí)行一個事務來獲取描述頁面布局的HTML“框架,然后發(fā)布另外的HTTP 事務來獲取每個嵌入式圖片、圖像面板、Java 小程序等 


五.報文


一個HTTP請求報文由請求行(request line)、請求頭部(header)和請求數據3個部分組成, HTTP有兩類報文:請求報文和響應報文。請求和響應報文顧名思義,一個是web客戶端發(fā)送請求時響應的HTTp 報文,一個是web服務器響應式響應的Http報文。其實他們的格式都是相同的。

我們以一個實際的看一下請求報文: 

                                   


是請求方法,GETPOST是最常見的HTTP方法,除此以外還包括DELETEHEAD、OPTIONS、PUTTRACE。不過,當前的大多數瀏覽器只支持GETPOSTSpring 3.0提供了一個HiddenHttpMethodFilter,允許你通過“_method”的表單參數指定這些特殊的HTTP方法(實際上還是通過POST提交表單)。服務端配置了HiddenHttpMethodFilter后,Spring會根據_method參數指定的值模擬出相應的HTTP方法,這樣,就可以使用這些HTTP方法對處理方法進行映射了。 
為請求對應的URL地址,它和報文頭的Host屬性組成完整的請求URL,是協議名稱及版本號。 

①②③統稱為請求行
HTTP的報文頭,報文頭包含若干個屬性,格式為屬性名:屬性值,服務端據此獲取客戶端的信息。 
是報文體,它將一個頁面表單中的組件值通過param1=value1?m2=value2的鍵值對形式編碼成一個格式化串,它承載多個請求參數的數據。不但報文體可以傳遞請求參數,請求URL也可以通過類似于“/chapter15/user.html? param1=value1?m2=value2”的方式傳遞請求參數。 

六.連接

這里所說的連接其實就是TCP連接。HTTP報文就是通過TCP連接進行數據傳輸的。


1.TCP/IP

HTTP是應用層協議,他無需操心網絡通信的具體細節(jié),這些具體工作都交給了同用、可靠地因特網傳輸協議TCP/IP

從協議分層模型方面來講,TCP/IP由四個層次組成:網絡接口層、網絡層、傳輸層、應用層。 

因特網本身就是基于TCP/IP的。它隱藏了許多網絡傳輸過程中的弱點和各種網絡和硬件特點。使各種類型的計算機和網絡都能進行可靠地通信。只要簡歷的TCP連接??蛻舳撕头掌鞫司湍苓M行安全可靠地數據傳輸。用網絡術語來說,HTTP 協議位于 TCP 的上層。HTTP 使用 TCP 來傳輸其報文數據。與之類似,TCP 則位于 IP 的上層。


                                                                         


2.連接、IP地址和端口號

HTTP客戶端在向服務器發(fā)送報文之前首先要首先要用端口號和IP地址建立一個TCP/IP連接 。建立一個TCP連接就和一個小區(qū)的某戶人家寄信是一個樣的。小區(qū)的地址就相當于一個IP地址。我們知道他的地址在那個小區(qū)的哪個樓了。但我們不知道他的門牌號還是無法確定是哪一家的信。所以我們需要一個端口號即為門牌號去具體確定是哪一個服務

                                                             

七.Web的結構部件

這里我們主要是先來了解幾個基本的概念


1.代理:位于客戶端和服務器之間的HTTP中間實體。他其實的作用就是接收HTTP請求。然后作為中間人在轉發(fā)出去。它有可能對請求做一些改變也可能原封不動的轉發(fā)出去。


2.緩存:HTTP的倉庫,使常用頁面的副本可以保存在離客戶端更近的地方。有了緩存之后可以加快HTTP請求的訪問速度。如果一個請求被請求過。再次請求的時候去緩存中找。這樣大大減小了服務器的壓力。


3.網關:連接其他應用程序的特殊Web服務器。其實說白了,他就是一個轉換網絡協議的中間變量。假如它收到一個HTTP請求。這個可能訪問的資源可能需要用到FTP協議請求所需資源。這時就要用到網關


4隧道:對HTTP通信報文進行盲轉發(fā)的特殊代理。隧道(tunnel)是建立起來之后,就會在兩條連接之間對原始數據進行盲轉發(fā)的HTTP應用程序。HTTP隧道通常用來在一條或多條HTTP連接上轉發(fā)非HTTP數據,轉發(fā)時不會窺探數據。 隧道這個概念我沒有理解很透徹,還有些疑惑。希望對這個理解透徹的朋友講解一下


5.Agent代理:發(fā)起自動HTTP請求的半智能Web客戶端。我們目前大多數發(fā)起HTTP請求的web客服端都是基于瀏覽器。Agent代理就是一個自動發(fā)送HTTP請求的工具


到目前為止,一些關于HTTP協議的基本概念簡單介紹完畢,在以后的文章中我還會細寫有關概念。敬請期待。




     昨晚讀《http權威指南》疑問,在將相對url轉為絕對url時,如果相對url沒有方案,主機,端口,參數,查詢字符串等組件,那么它將繼承基礎的的相關組件……那么在我們平時的web開發(fā)中,在第一個頁面點擊一個鏈接傳的參數(查詢字符串),在鏈接頁面的request中,可以得到參數值那如果在鏈接的頁面中有一個相對url鏈接,點擊這個鏈接之后,是不是在這個鏈接頁面的request中也可以得到剛才傳的參數值?求各位大神幫忙解答。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多