• <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>
            隨筆-23  評論-73  文章-3  trackbacks-0

            需要做多線程斷點續(xù)傳模塊,本來想找RFC文檔,但網(wǎng)上搜索到這篇文章,感覺很詳解

            一、連接至Web服務(wù)器
            一個客戶端應(yīng)用(如Web瀏覽器)打開到Web服務(wù)器的HTTP端口的一個套接字(缺省為80)。

            例如:http://www.myweb.com:8080/index.html
            在Java中,這將等同于代碼:
            Soceet socket=new Socket(");
            InputStream in=socket.getInputStream();
            OutputStream out=socket.getOutputStream();

            二、發(fā)送HTTP請求
            通過連接,客戶端寫一個ASCII文本請求行,后跟0或多個HTTP頭標(biāo),一個空行和實現(xiàn)請求的任意數(shù)據(jù)。
            一個請求由四個部分組成:請求行、請求頭標(biāo)、空行和請求數(shù)據(jù)
            1.請求行:請求行由三個標(biāo)記組成:請求方法、請求URI和HTTP版本,它們用空格分隔。
            例如:GET /index.html HTTP/1.1
            HTTP規(guī)范定義了8種可能的請求方法:
            GET            檢索URI中標(biāo)識資源的一個簡單請求
            HEAD            與GET方法相同,服務(wù)器只返回狀態(tài)行和頭標(biāo),并不返回請求文檔
            POST            服務(wù)器接受被寫入客戶端輸出流中的數(shù)據(jù)的請求
            PUT            服務(wù)器保存請求數(shù)據(jù)作為指定URI新內(nèi)容的請求
            DELETE            服務(wù)器刪除URI中命名的資源的請求
            OPTIONS        關(guān)于服務(wù)器支持的請求方法信息的請求
            TRACE            Web服務(wù)器反饋Http請求和其頭標(biāo)的請求
            CONNECT        已文檔化但當(dāng)前未實現(xiàn)的一個方法,預(yù)留做隧道處理
            2.請求頭標(biāo):由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用冒號(:)分隔。
            請求頭標(biāo)通知服務(wù)器有關(guān)于客戶端的功能和標(biāo)識,典型的請求頭標(biāo)有:
            User-Agent        客戶端廠家和版本
            Accept            客戶端可識別的內(nèi)容類型列表
            Content-Length    附加到請求的數(shù)據(jù)字節(jié)數(shù)
            3.空行:最后一個請求頭標(biāo)之后是一個空行,發(fā)送回車符和退行,通知服務(wù)器以下不再有頭標(biāo)。
            4.請求數(shù)據(jù):使用POST傳送數(shù)據(jù),最常使用的是Content-Type和Content-Length頭標(biāo)。

            三、服務(wù)端接受請求并返回HTTP響應(yīng)
            Web服務(wù)器解析請求,定位指定資源。服務(wù)器將資源副本寫至套接字,在此處由客戶端讀取。
            一個響應(yīng)由四個部分組成;狀態(tài)行、響應(yīng)頭標(biāo)、空行、響應(yīng)數(shù)據(jù)
            1.狀態(tài)行:狀態(tài)行由三個標(biāo)記組成:HTTP版本、響應(yīng)代碼和響應(yīng)描述。
            HTTP版本:向客戶端指明其可理解的最高版本。
            響應(yīng)代碼:3位的數(shù)字代碼,指出請求的成功或失敗,如果失敗則指出原因。
            響應(yīng)描述:為響應(yīng)代碼的可讀性解釋。
            例如:HTTP/1.1 200 OK
            HTTP響應(yīng)碼:
            1xx:信息,請求收到,繼續(xù)處理
            2xx:成功,行為被成功地接受、理解和采納
            3xx:重定向,為了完成請求,必須進(jìn)一步執(zhí)行的動作
            4xx:客戶端錯誤:
            2.響應(yīng)頭標(biāo):像請求頭標(biāo)一樣,它們指出服務(wù)器的功能,標(biāo)識出響應(yīng)數(shù)據(jù)的細(xì)節(jié)。
            3.空行:最后一個響應(yīng)頭標(biāo)之后是一個空行,發(fā)送回車符和退行,表明服務(wù)器以下不再有頭標(biāo)。
            4.響應(yīng)數(shù)據(jù):HTML文檔和圖像等,也就是HTML本身。

            四、服務(wù)器關(guān)閉連接,瀏覽器解析響應(yīng)
            1.瀏覽器首先解析狀態(tài)行,查看表明請求是否成功的狀態(tài)代碼。
            2.然后解析每一個響應(yīng)頭標(biāo),頭標(biāo)告知以下為若干字節(jié)的HTML。
            3.讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML的語法和語義對其進(jìn)行格式化,并在瀏覽器窗口中顯示它。
            4.一個HTML文檔可能包含其它需要被載入的資源引用,瀏覽器識別這些引用,對其它的資源再進(jìn)行額外的請求,此過程循環(huán)多次。

            五、無狀態(tài)連接
            HTTP模型是無狀態(tài)的,表明在處理一個請求時,Web服務(wù)器并不記住來自同一客戶端的請求。

            六、實例
            1.瀏覽器發(fā)出請求
            GET /index.html HTTP/1.1
            服務(wù)器返回響應(yīng)
            HTTP /1.1 200 OK
            Date: Apr 11 2006 15:32:08 GMT
            Server: Apache/2.0.46(win32)
            Content-Length: 119
            Content-Type: text/html

            <HTML>
            <HEAD>
            <LINK REL="stylesheet" HREF="index.css">
            </HEAD>
            <BODY>
            <IMG SRC="image/logo.png">
            </BODY>
            </HTML>

            2.瀏覽器發(fā)出請求
            GET /index.css HTTP/1.1
            服務(wù)器返回響應(yīng)
            HTTP /1.1 200 OK
            Date: Apr 11 2006 15:32:08 GMT
            Server: Apache/2.0.46(win32)
            Connection: Keep-alive, close
            Content-Length: 70
            Content-Type: text/plane

            h3{
                font-size:20px;
                font-weight:bold;
                color:#005A9C;
            }

            3.瀏覽器發(fā)出請求
            GET image/logo.png HTTP/1.1
            服務(wù)器返回響應(yīng)
            HTTP /1.1 200 OK
            Date: Apr 11 2006 15:32:08 GMT
            Server: Apache/2.0.46(win32)
            Connection: Keep-alive, close
            Content-Length: 1280
            Content-Type: text/plane

            {Binary image data follows}


            (附錄)
            1.HTTP規(guī)范:Internet工程制定組織(IETF)發(fā)布的RFC指定Internet標(biāo)準(zhǔn),這些RFC被Internet研究發(fā)展機(jī)構(gòu)廣泛接受。因為它們是標(biāo)準(zhǔn)文檔,故一般用正規(guī)語言編寫,如立法文標(biāo)一樣。
            2.RFC:RFC一旦被提出,就被編號且不會再改變,當(dāng)一個標(biāo)準(zhǔn)被修改時,則給出一個新的RFC。作為標(biāo)準(zhǔn),RFC在Internet上被廣泛采用。
            3.HTTP的幾個重要RFC:
                RFC1945    HTTP 1.0 描述
                RFC2068    HTTP 1.1 初步描述
                RFC2616    HTTP 1.1 標(biāo)準(zhǔn)
            4.資源標(biāo)識符URI(Uniform Resource Identifter,URI)

            http協(xié)議

            Internet的基本協(xié)議是TCP/IP協(xié)議,例如:FTP,Http等是建立在TCP/IP協(xié)議之上的應(yīng)用層協(xié)議,www服務(wù)器使用的主要協(xié)議是HTTP協(xié)議(超文本傳輸協(xié)議),http協(xié)議支持的服務(wù)不限于www。
                    http協(xié)議的特點:支持客戶/服務(wù)器模式,無連接,無狀態(tài)。
                    運作方式是基于請求/響應(yīng)范式。內(nèi)部操作過程為:
            1,建立連接,客戶與服務(wù)器是一個相對的概念。www服務(wù)器運行時,一直在TCP80端口(www的缺省端口)監(jiān)聽,等待連接的出現(xiàn)。連接的建立是通過申請?zhí)捉幼郑⊿ocket)實現(xiàn)的。客戶打開一個套接字并把它約束在一個端口上,如果成功,就相當(dāng)于建立了一個虛擬文件。相當(dāng)于對虛擬文件的操作。
            2,發(fā)送請求,打開一個連接后,客戶機(jī)把請求消息送到服務(wù)器的停留端口上,完成提出請求動作。
            請求的格式為:
              請求消息 =  請求行(通用信息|請求頭|實體頭) CRLF[實體內(nèi)容]
              請求 行   =   方法 請求URL HTTP版本號 CRLF
              方  法    =   GET|HEAD|POST|擴(kuò)展方法
              U R  L   =   協(xié)議名稱+宿主名+目錄與文件名
            HEAD——要求服務(wù)器查找某對象的元信息,而不是對象本身。
            POST——從客戶機(jī)向服務(wù)器傳送數(shù)據(jù),在要求服務(wù)器和CGI做進(jìn)一步處理時會用到POST方法。POST主要用于發(fā)送HTML文本中FORM的內(nèi)容,讓CGI程序處理。
              一個請求的例子為:
              GET
            http://networking.zju.edu.cn/zju/index.htm HTTP/1.0
              頭信息又稱為元信息,即信息的信息,利用元信息可以實現(xiàn)有條件的請求或應(yīng)答 。
              請求頭——告訴服務(wù)器怎樣解釋本次請求,主要包括用戶可以接受的數(shù)據(jù)類型、壓縮方法和語言等。
              實體頭——實體信息類型、長度、壓縮方法、最后一次修改時間、數(shù)據(jù)有效期等。
              實體    ——請求或應(yīng)答對象本身。
            3,發(fā)送響應(yīng),服務(wù)器在處理完客戶的請求之后,要向客戶機(jī)發(fā)送響應(yīng)消息。
              HTTP/1.0的響應(yīng)消息格式:
              響應(yīng)消息   =     狀態(tài)行(通用信息頭|響應(yīng)頭|實體頭) CRLF 〔實體內(nèi)容〕
              狀 態(tài) 行    =      HTTP版本號 狀態(tài)碼 原因敘述
            響應(yīng)頭的信息包括:服務(wù)程序名,通知客戶請求的URL需要認(rèn)證,請求的資源何時能使用。
            4.關(guān)閉連接:客戶和服務(wù)器雙方都可以通過關(guān)閉套接字來結(jié)束TCP/IP對話。

            posted on 2009-07-20 09:50 ViskerWong 閱讀(632) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            18禁黄久久久AAA片| 国产精品视频久久久| 久久无码人妻精品一区二区三区| 韩国三级中文字幕hd久久精品| 国产精品激情综合久久| 久久男人中文字幕资源站| 午夜精品久久久内射近拍高清| 香蕉久久av一区二区三区| 久久国产亚洲精品麻豆| 免费一级做a爰片久久毛片潮| 亚洲精品无码久久久久久| 国产99久久久久久免费看 | 少妇被又大又粗又爽毛片久久黑人| 欧美与黑人午夜性猛交久久久| 中文字幕无码免费久久| 久久精品无码一区二区三区日韩 | 亚洲伊人久久成综合人影院 | 久久婷婷色综合一区二区| 亚洲AV乱码久久精品蜜桃| 国产三级精品久久| 久久99精品久久久久婷婷| 久久亚洲高清综合| 91精品国产91久久久久久青草| 中文字幕无码精品亚洲资源网久久| 国产一区二区精品久久凹凸| 久久人人爽人人爽人人片AV不| 久久99这里只有精品国产| 久久精品国产亚洲Aⅴ香蕉| 久久国产精品久久精品国产| 久久国产精品无码一区二区三区 | 丰满少妇人妻久久久久久| 亚洲中文精品久久久久久不卡| 欧美粉嫩小泬久久久久久久| 丁香五月综合久久激情| 国产伊人久久| 久久国产精品无码网站| 久久久久免费视频| 性做久久久久久久久老女人| 欧洲国产伦久久久久久久| 久久婷婷是五月综合色狠狠| 成人综合久久精品色婷婷|