深入淺出HTTP協(xié)議.doc
《深入淺出HTTP協(xié)議.doc》由會員分享,可在線閱讀,更多相關《深入淺出HTTP協(xié)議.doc(3頁珍藏版)》請在裝配圖網上搜索。
深入淺出HTTP協(xié)議 HTTP(HyperTextTransferProtocol)是一套計算機通過網絡進行通信的規(guī)則。計算機專家設計出HTTP,使HTTP客戶(如Web瀏覽器)能夠從HTTP服務器(Web服務器)請求信息和服務,HTTP目前協(xié)議的版本是1.1.HTTP是一種無狀態(tài)的協(xié)議,無狀態(tài)是指Web瀏覽器和Web服務器之間不需要建立持久的連接,這意味著當一個客戶端向服務器端發(fā)出請求,然后Web服務器返回響應(response),連接就被關閉了,在服務器端不保留連接的有關信息.HTTP遵循請求(Request)/應答(Response)模型。Web瀏覽器向Web服務器發(fā)送請求,Web服務器處理請求并返回適當的應答。所有HTTP連接都被構造成一套請求和應答。 HTTP使用內容類型,是指Web服務器向Web瀏覽器返回的文件都有與之相關的類型。所有這些類型在MIME Internet郵件協(xié)議上模型化,即Web服務器告訴Web瀏覽器該文件所具有的種類,是HTML文檔、GIF格式圖像、聲音文件還是獨立的應用程序。大多數Web瀏覽器都擁有一系列的可配置的輔助應用程序,它們告訴瀏覽器應該如何處理Web服務器發(fā)送過來的各種內容類型。 HTTP通信機制是在一次完整的HTTP通信過程中,Web瀏覽器與Web服務器之間將完成下列7個步驟: (1)建立TCP連接 在HTTP工作開始之前,Web瀏覽器首先要通過網絡與Web服務器建立連接,該連接是通過TCP來完成的,該協(xié)議與IP協(xié)議共同構建Internet,即著名的TCP/IP協(xié)議族,因此Internet又被稱作是TCP/IP網絡。HTTP是比TCP更高層次的應用層協(xié)議,根據規(guī)則,只有低層協(xié)議建立之后才能,才能進行更層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號是80 。 (2)Web瀏覽器向Web服務器發(fā)送請求命令 一旦建立了TCP連接,Web瀏覽器就會向Web服務器發(fā)送請求命令。 例如:GET/sample/hello.jspHTTP/1.1 (3)Web瀏覽器發(fā)送請求頭信息 瀏覽器發(fā)送其請求命令之后,還要以頭信息的形式向Web服務器發(fā)送一些別的信息,之后瀏覽器發(fā)送了一空白行來通知服務器,它已經結束了該頭信息的發(fā)送。 (4)Web服務器應答 客戶機向服務器發(fā)出請求后,服務器會客戶機回送應答, HTTP/1.1200OK 應答的第一部分是協(xié)議的版本號和應答狀態(tài)碼。 (5)Web服務器發(fā)送應答頭信息 正如客戶端會隨同請求發(fā)送關于自身的信息一樣,服務器也會隨同應答向用戶發(fā)送關于它自己的數據及被請求的文檔。 (6)Web服務器向瀏覽器發(fā)送數據 Web服務器向瀏覽器發(fā)送頭信息后,它會發(fā)送一個空白行來表示頭信息的發(fā)送到此為結束,接著,它就以Content-Type應答頭信息所描述的格式發(fā)送用戶所請求的實際數據。 (7)Web服務器關閉TCP連接 一般情況下,一旦Web服務器向瀏覽器發(fā)送了請求數據,它就要關閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼。 Connection:keep-alive TCP連接在發(fā)送后將仍然保持打開狀態(tài),于是,瀏覽器可以繼續(xù)通過相同的連接發(fā)送請求。保持連接節(jié)省了為每個請求建立新連接所需的時間,還節(jié)約了網絡帶寬。 HTTP請求格式 當瀏覽器向Web服務器發(fā)出請求時,它向服務器傳遞了一個數據塊,也就是請求信息,HTTP請求信息由3部分組成: l請求方法URI協(xié)議/版本 l請求頭(RequestHeader) 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;WindowNT5.0) Accept-Encoding:gzip,deflate username=jinqiao&password=1234 (1)請求方法 URI協(xié)議/版本請求的第一行是“方法URL議/版本”:GET/sample.jspHTTP/1.1 以上代碼中“GET”代表請求方法,“/sample.jsp”表示URI,“HTTP/1.1代表協(xié)議和協(xié)議的版本。 根據HTTP標準,HTTP請求可以使用多種請求方法。例如:HTTP1.1支持7種請求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet應用中,最常用的方法是GET和POST。 URL完整地指定了要訪問的網絡資源,通常只要給出相對于服務器的根目錄的相對目錄即可,因此總是以“/”開頭,最后,協(xié)議版本聲明了通信過程中使用HTTP的版本。 (2) 請求頭(RequestHeader) 請求頭包含許多有關的客戶端環(huán)境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度等。 Accept:image/gif.image/jpeg.*/* Accept-Language:zh-cn Connection:Keep-Alive Host:localhost User-Agent:Mozila/4.0(compatible:MSIE5.01:WindowsNT5.0) Accept-Encoding:gzip,deflate. (3) 請求正文 請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字符串信息: username=jinqiao&password=1234 在以上的例子的HTTP請求中,請求的正文只有一行內容。當然,在實際應用中,HTTP請求正文可以包含更多的內容。 HTTP請求方法我這里只討論GET方法與POST方法: 1GET方法 GET方法是默認的HTTP請求方法,我們日常用GET方法來提交表單數據,然而用GET方法提交的表單數據只經過了簡單的編碼,同時它將作為URL的一部分向Web服務器發(fā)送,因此,如果使用GET方法來提交表單數據就存在著安全隱患上。例如 Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB 從上面的URL請求中,很容易就可以辯認出表單提交的內容。(?之后的內容)另外由于GET方法提交的數據是作為URL請求的一部分所以提交的數據量不能太大 2POST方法 POST方法是GET方法的一個替代方法,它主要是向Web服務器提交表單數據,尤其是大批量的數據。POST方法克服了GET方法的一些缺點。通過POST方法提交表單數據時,數據不是作為URL請求的一部分而是作為標準數據傳送給Web服務器,這就克服了GET方法中的信息無法保密和數據量太小的缺點。因此,出于安全的考慮以及對用戶隱私的尊重,通常表單提交時采用POST方法。 從編程的角度來講,如果用戶通過GET方法提交數據,則數據存放在QUERY_STRING環(huán)境變量中,而POST方法提交的數據則可以從標準輸入流中獲取。 HTTP應答與HTTP請求相似,HTTP響應也由3個部分構成,分別是: l 協(xié)議狀態(tài)版本代碼描述 l 響應頭(ResponseHeader) l 響應正文 下面是一個HTTP響應的例子: HTTP/1.1200OK Server:ApacheTomcat/5.0.12 Date:Mon,6Oct200313:23:42GMT Content-Length:112- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 深入淺出 HTTP 協(xié)議
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.hcyjhs8.com/p-8932347.html