• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            HTTP深入淺出

            HTTP(HyperText Transfer Protocol)是一套計算機通過網(wǎng)絡(luò)進行通信的規(guī)則。計算機專家設(shè)計出HTTP,使HTTP客戶(如Web瀏覽器)能夠從HTTP服務(wù)器(Web服務(wù)器)請求信息和服務(wù),HTTP目前協(xié)議的版本是1.1.HTTP是一種無狀態(tài)的協(xié)議,無狀態(tài)是指Web瀏覽器和Web服務(wù)器之間不需要建立持久的連接,這意味著當一個客戶端向服務(wù)器端發(fā)出請求,然后Web服務(wù)器返回響應(yīng)(response),連接就被關(guān)閉了,在服務(wù)器端不保留連接的有關(guān)信息.HTTP遵循請求(Request)/應(yīng)答(Response)模型。Web瀏覽器向Web服務(wù)器發(fā)送請求,Web服務(wù)器處理請求并返回適當?shù)膽?yīng)答。所有HTTP連接都被構(gòu)造成一套請求和應(yīng)答。

            HTTP使用內(nèi)容類型,是指Web服務(wù)器向Web瀏覽器返回的文件都有與之相關(guān)的類型。所有這些類型在MIME Internet郵件協(xié)議上模型化,即Web服務(wù)器告訴Web瀏覽器該文件所具有的種類,是HTML文檔、GIF格式圖像、聲音文件還是獨立的應(yīng)用程序。大多數(shù)Web瀏覽器都擁有一系列的可配置的輔助應(yīng)用程序,它們告訴瀏覽器應(yīng)該如何處理Web服務(wù)器發(fā)送過來的各種內(nèi)容類型。

            HTTP通信機制是在一次完整的HTTP通信過程中,Web瀏覽器與Web服務(wù)器之間將完成下列7個步驟:

            (1)    建立TCP連接

            在HTTP工作開始之前,Web瀏覽器首先要通過網(wǎng)絡(luò)與Web服務(wù)器建立連接,該連接是通過TCP來完成的,該協(xié)議與IP協(xié)議共同構(gòu)建Internet,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網(wǎng)絡(luò)。HTTP是比TCP更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能,才能進行更層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號是80

            (2)    Web瀏覽器向Web服務(wù)器發(fā)送請求命令

            一旦建立了TCP連接,Web瀏覽器就會向Web服務(wù)器發(fā)送請求命令

            例如:GET/sample/hello.jsp HTTP/1.1

            (3)    Web瀏覽器發(fā)送請求頭信息

            瀏覽器發(fā)送其請求命令之后,還要以頭信息的形式向Web服務(wù)器發(fā)送一些別的信息,之后瀏覽器發(fā)送了一空白行來通知服務(wù)器,它已經(jīng)結(jié)束了該頭信息的發(fā)送。

            (4)    Web服務(wù)器應(yīng)答

            客戶機向服務(wù)器發(fā)出請求后,服務(wù)器會客戶機回送應(yīng)答,

            HTTP/1.1 200 OK

            應(yīng)答的第一部分是協(xié)議的版本號和應(yīng)答狀態(tài)碼

            (5)    Web服務(wù)器發(fā)送應(yīng)答頭信息

            正如客戶端會隨同請求發(fā)送關(guān)于自身的信息一樣,服務(wù)器也會隨同應(yīng)答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請求的文檔。

            (6)    Web服務(wù)器向瀏覽器發(fā)送數(shù)據(jù)

            Web服務(wù)器向瀏覽器發(fā)送頭信息后,它會發(fā)送一個空白行來表示頭信息的發(fā)送到此為結(jié)束,接著,它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請求的實際數(shù)據(jù)

            (7)    Web服務(wù)器關(guān)閉TCP連接

            一般情況下,一旦Web服務(wù)器向瀏覽器發(fā)送了請求數(shù)據(jù),它就要關(guān)閉TCP連接,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼

            Connection:keep-alive

            TCP連接在發(fā)送后將仍然保持打開狀態(tài),于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求。保持連接節(jié)省了為每個請求建立新連接所需的時間,還節(jié)約了網(wǎng)絡(luò)帶寬。

            HTTP請求格式

            當瀏覽器向Web服務(wù)器發(fā)出請求時,它向服務(wù)器傳遞了一個數(shù)據(jù)塊,也就是請求信息,HTTP請求信息由3部分組成:

            l   請求方法URI協(xié)議/版本

            l   請求頭(Request Header)

            l   請求正文

            下面是一個HTTP請求的例子:

            GET/sample.jspHTTP/1.1

            Accept:image/gif.image/jpeg,*/*

            Accept-Language:zh-cn

            Connection:Keep-Alive

            Host:localhost

            User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

            Accept-Encoding:gzip,deflate

            username=jinqiao&password=1234

            (1)       請求方法URI協(xié)議/版本

            請求的第一行是“方法URL議/版本”:GET/sample.jsp HTTP/1.1

            以上代碼中“GET”代表請求方法,“/sample.jsp”表示URI,“HTTP/1.1代表協(xié)議和協(xié)議的版本。

            根據(jù)HTTP標準,HTTP請求可以使用多種請求方法。例如:HTTP1.1支持7種請求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet應(yīng)用中,最常用的方法是GET和POST。

            URL完整地指定了要訪問的網(wǎng)絡(luò)資源,通常只要給出相對于服務(wù)器的根目錄的相對目錄即可,因此總是以“/”開頭,最后,協(xié)議版本聲明了通信過程中使用HTTP的版本。

            (2) 請求頭(Request Header)

            請求頭包含許多有關(guān)的客戶端環(huán)境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度等。

            Accept:image/gif.image/jpeg.*/*

            Accept-Language:zh-cn

            Connection:Keep-Alive

            Host:localhost

            User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

            Accept-Encoding:gzip,deflate.

            (3) 請求正文

            請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經(jīng)結(jié)束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字符串信息:

            username=jinqiao&password=1234

            在以上的例子的HTTP請求中,請求的正文只有一行內(nèi)容。當然,在實際應(yīng)用中,HTTP請求正文可以包含更多的內(nèi)容。

            HTTP請求方法我這里只討論GET方法與POST方法

            GET方法

            GET方法是默認的HTTP請求方法,我們?nèi)粘S肎ET方法來提交表單數(shù)據(jù),然而用GET方法提交的表單數(shù)據(jù)只經(jīng)過了簡單的編碼,同時它將作為URL的一部分向Web服務(wù)器發(fā)送,因此,如果使用GET方法來提交表單數(shù)據(jù)就存在著安全隱患上。例如

            Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB

            從上面的URL請求中,很容易就可以辯認出表單提交的內(nèi)容。(?之后的內(nèi)容)另外由于GET方法提交的數(shù)據(jù)是作為URL請求的一部分所以提交的數(shù)據(jù)量不能太大

            POST方法

            POST方法是GET方法的一個替代方法,它主要是向Web服務(wù)器提交表單數(shù)據(jù),尤其是大批量的數(shù)據(jù)。POST方法克服了GET方法的一些缺點。通過POST方法提交表單數(shù)據(jù)時,數(shù)據(jù)不是作為URL請求的一部分而是作為標準數(shù)據(jù)傳送給Web服務(wù)器,這就克服了GET方法中的信息無法保密和數(shù)據(jù)量太小的缺點。因此,出于安全的考慮以及對用戶隱私的尊重,通常表單提交時采用POST方法。

            從編程的角度來講,如果用戶通過GET方法提交數(shù)據(jù),則數(shù)據(jù)存放在QUERY_STRING環(huán)境變量中,而POST方法提交的數(shù)據(jù)則可以從標準輸入流中獲取。

            HTTP應(yīng)答與HTTP請求相似,HTTP響應(yīng)也由3個部分構(gòu)成,分別是:

            l  協(xié)議狀態(tài)版本代碼描述

            l  響應(yīng)頭(Response Header)

            l  響應(yīng)正文

             

            下面是一個HTTP響應(yīng)的例子:

            HTTP/1.1 200 OK

            Server:Apache Tomcat/5.0.12

            Date:Mon,6Oct2003 13:23:42 GMT

            Content-Length:112

            <html>
            <head>

            <title>HTTP響應(yīng)示例<title>

            </head>

            <body>

            Hello HTTP!

            </body>

            </html>


            協(xié)議狀態(tài)代碼描述HTTP響應(yīng)的第一行類似于HTTP請求的第一行,它表示通信所用的協(xié)議是HTTP1.1服務(wù)器已經(jīng)成功的處理了客戶端發(fā)出的請求(200表示成功):

            HTTP/1.1 200 OK
            響應(yīng)頭(Response Header)響應(yīng)頭也和請求頭一樣包含許多有用的信息,例如服務(wù)器類型、日期時間、內(nèi)容類型和長度等:

            Server:Apache Tomcat/5.0.12

            Date:Mon,6Oct2003 13:13:33 GMT

            Content-Type:text/html

            Last-Moified:Mon,6 Oct 2003 13:23:42 GMT

            Content-Length:112

            響應(yīng)正文響應(yīng)正文就是服務(wù)器返回的HTML頁面:

            <html>
            <head>

            <title>HTTP響應(yīng)示例<title>

            </head>

            <body>

            Hello HTTP!

            </body>

            </html>

            響應(yīng)頭和正文之間也必須用空行分隔。  

            HTTP應(yīng)答碼

            HTTP應(yīng)答碼也稱為狀態(tài)碼,它反映了Web服務(wù)器處理HTTP請求狀態(tài)。HTTP應(yīng)答碼由3位數(shù)字構(gòu)成,其中首位數(shù)字定義了應(yīng)答碼的類型:

            1XX-信息類(Information),表示收到Web瀏覽器請求,正在進一步的處理中

            2XX-成功類(Successful),表示用戶請求被正確接收,理解和處理例如:200 OK

            3XX-重定向類(Redirection),表示請求沒有成功,客戶必須采取進一步的動作。

            4XX-客戶端錯誤(Client Error),表示客戶端提交的請求有錯誤 例如:404 NOT  Found,意味著請求中所引用的文檔不存在。

            5XX-服務(wù)器錯誤(Server Error)表示服務(wù)器不能完成對請求的處理:如 500

            對于我們Web開發(fā)人員來說掌握HTTP應(yīng)答碼有助于提高Web應(yīng)用程序調(diào)試的效率和準確性。

            安全連接

            Web應(yīng)用最常見的用途之一是電子商務(wù),可以利用Web服務(wù)器端程序使人們能夠網(wǎng)絡(luò)購物,需要指出一點是,缺省情況下,通過Internet發(fā)送信息是不安全的,如果某人碰巧截獲了你發(fā)給朋友的一則消息,他就能打開它,假想在里面有你的信用卡號碼,這會有多么糟糕,幸運的是,很多Web服務(wù)器以及Web瀏覽器都有創(chuàng)立安全連接的能力,這樣它們就可以安全的通信了。

            通過Internet提供安全連接最常見的標準是安全套接層(Secure Sockets layer,SSl)協(xié)議。SSL協(xié)議是一個應(yīng)用層協(xié)議(和HTTP一樣),用于安全方式在Web上交換數(shù)據(jù),SSL使用公開密鑰編碼系統(tǒng)。從本質(zhì)講,這意味著業(yè)務(wù)中每一方都擁有一個公開的和一個私有的密鑰。當一方使用另一方公開密鑰進行編碼時,只有擁有匹配密鑰的人才能對其解碼。簡單來講,公開密鑰編碼提供了一種用于在兩方之間交換數(shù)據(jù)的安全方法,SSL連接建立之后,客戶和服務(wù)器都交換公開密鑰,并在進行業(yè)務(wù)聯(lián)系之前進行驗證,一旦雙方的密鑰都通過驗證,就可以安全地交換數(shù)據(jù)。

            posted on 2008-05-28 17:02 肥仔 閱讀(492) 評論(0)  編輯 收藏 引用 所屬分類: HTTP & URL

            久久精品免费网站网| 精品国产VA久久久久久久冰| 99久久婷婷国产一区二区| 久久久久18| 无码超乳爆乳中文字幕久久| 国产精品女同久久久久电影院| 久久国产精品无码网站| 精品熟女少妇AV免费久久| 精品综合久久久久久97超人| 婷婷久久综合| 久久―日本道色综合久久| 亚洲中文字幕伊人久久无码| 狠狠色丁香久久婷婷综合五月| 久久综合九色综合久99| 国内精品久久人妻互换| 婷婷久久综合九色综合九七| 久久精品国产91久久综合麻豆自制| 午夜福利91久久福利| 91久久香蕉国产熟女线看| 伊人久久大香线蕉av不卡| 午夜精品久久久久久久无码| 日韩亚洲欧美久久久www综合网 | 一本大道久久香蕉成人网| 精品永久久福利一区二区| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久中文字幕视频、最近更新| 久久久久久综合一区中文字幕| 亚洲午夜久久久| 欧美日韩精品久久久免费观看| 成人国内精品久久久久影院| 久久精品国产清自在天天线 | 国产精品无码久久久久久| 亚洲国产精品无码久久SM| 亚洲欧美日韩精品久久亚洲区| 狠狠色丁香婷综合久久| 久久国产乱子伦免费精品| 日韩久久久久久中文人妻| 亚洲中文字幕无码久久2020| 亚洲伊人久久大香线蕉综合图片| 精品久久久久成人码免费动漫| 性做久久久久久久久浪潮|