<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 網絡基本功(二十一):細說HTTP(上) **轉載請在文首保留原文出處:EMC中文支持論壇**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [![image001.gif](https://community.emc.com/servlet/JiveServlet/downloadImage/2-858387-105134/image001.gif)](https://community.emc.com/servlet/JiveServlet/showImage/2-858387-105134/image001.gif) ## 介紹 HTTP是一個由請求與響應組成的客戶端與服務端交互協議。瀏覽器發送一個HTTP請求到指定的URL地址,持有此URL地址的WEB服務器將返回一個HTTP請求。請求的類型有GET, POST, HEAD, PUT, DELETE, OPTIONS和TRACE等。 ## 更多信息 **HTTP操作模式與客戶端/服務器通信:** HTTP只關心一個功能:從web服務器到web客戶端的超文本文件以及其他文件的傳輸。從通信的角度來看,客戶端主要負責發送請求給服務器,服務器對請求作出響應。相比FTP和SMTP這樣需要多個通信步驟和命令/響應序列的應用層協議,HTTP更像BOOTP和ARP。 **基本的HTTP客戶端/服務器通信:** 最簡單的HTTP操作包括一個使用web瀏覽器的HTTP客戶端,和一個HTTP服務器,通常稱為web服務器。在TCP連接創建之后,以下兩步通信過程如下: **客戶端請求**:HTTP客戶端根據HTTP協議標準發送HTTP請求信息,該信息指定客戶端想要獲取的資源或包括準備提供給服務器的信息。 **服務器響應**:服務器讀取并解釋該請求。對請求作出相應行為并創建HTTP響應信息,發回給客戶端。響應信息包括該請求是否成功,也包括客戶端請求的資源內容。 **HTTP消息格式:** 使用HTTP的設備通信都是通過HTTP消息來完成,其中只有兩種類型:請求和響應。客戶端通常發送請求和接收響應,服務器接收請求和發送響應。信息使用的是文本的形式。 常規HTTP消息格式如下所示: ``` <起始行> <首部字段> <空白行> [<主體>] [<尾部>] ``` **起始行**包含消息的類型。請求消息中,這一行以方式的形式表明消息為請求類型,并制定一個URI(Uniform Resource Identifier)指明請求的對象資源。響應通過起始行來表明請求響應的狀態信息。 **首部字段**HTTP定義了多種類型的首部字段。通過功能分組,除了主機頭以外,幾乎所有首部字段都是可選的。格式如下:&lt;header-name&gt;:&lt;header-value&gt;。 **主體**也是可選的,包含客戶端和服務器通信所需的一系列信息,如響應的詳細錯誤消息。更加常見的是承載文件或其他資源,HTTP標準中稱為實體。由于大多數客戶端請求服務器發送文件或其他資源,實體在響應信息中最為常見。 **尾部,**HTTP/1.1默認使用永久鏈接,消息在服務器與客戶端之間以流的形式傳輸,需要標記消息的結束點和開始點。 **HTTP請求消息:** 客戶端通過打開一個TCP連接發起與服務器的HTTP會話,之后發送HTTP請求信息 [![image002.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-858387-105135/image002.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-858387-105135/image002.jpg) **起始行** 主要有三個用途: + 表明客戶端想要進行的命令或行為 + 指定行為想要獲取的資源 + 告知服務器客戶端使用的HTTP版本 起始行的語法為: ``` <METHOD><request-uri><HTTP-VERSION> ``` **Method** method就是客戶端想要服務器做什么,三種比較常用:GET,HEAD和POST。 | | | | --- | --- | | GET | 從服務器向客戶端發送發送命名資源 | | PUT | 將來自客戶端的數據存儲到一個命名的服務器資源中去 | | DELETE | 從服務器中刪除命名資源 | | POST | 將客戶端數據發送到一個服務器網關應用程序 | | HEAD | 僅發送命名資源響應中的HTTP首部 | **Request URI** Request URI是請求所申請資源的URI。目前URI通常值符合Web URL語法的HTTP URL。有趣的是,HTTP起始行所使用的URL形式通常與HTML文件或用戶輸入的不同。這是因為一個完整URL中的部分信息是用來控制HTTP本身的。這是用戶和HTTP客戶端通信所需,而不包括在客戶端對服務器的請求中。在請求中指定資源的標準方式是在起始行中加入路徑和文件名(以及可選的查詢信息),同時在主機頭字段指定主機。 例如:假設用戶輸入URL:[http://www.myfavoritewebsite.com:8080/chatware/chatroom.php](http://www.myfavoritewebsite.com:8080/chatware/chatroom.php),我們不需要發送http:到服務器。客戶端將余下的信息拆分成URI /chatware/chatroom.php主機行會包括[www.myfavoritewebsite.com:8080](http://www.myfavoritewebsite.com:8080/)。因此,請求的開始內容如下: ``` GET /chatware/chatroom.php HTTP/1.1 Host: www.myfavoritewebsite.com:8080 ``` 這一準則的例外是當請求對象是代理服務器時。這時請求就要使用完整URL的形式,以使代理可以作為初始客戶端來處理該請求。請求如下所示: ``` GET http://www.myfavoritewebsite.com:8080/chatware/chatroom.php HTTP/1.1 ``` **請求首部** 在請求首部,提供給服務器關于請求的詳細信息。所有請求首部都使用相同的結構,但按照以下功能分類: **普通報頭**普通報頭通常指消息本身,通常用于控制其處理過程或提供給接收方額外信息。這類報頭不限于請求或響應信息,所以兩者都可能出現。同樣,也與所承載的實體沒有特別關系。 **請求報頭** 這類報頭告知服務器關于客戶端請求的更多信息,給予客戶端更多關于請求處理的控制。例如,一些請求報頭用于指定條件請求,只有在特定條件時才執行。其他告訴服務器響應信息中客戶端能夠徐立的格式或編碼。如: Accept 告訴服務器端,接受哪些類型的信息。 Accept-Encoding 可接受的內容編碼。 Accept-Lanague 指定一種自然語言。 Connection 表示是否需要持久連接。如果Servlet看到這里的值為“Keep-Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接),它就可以利用持久連接的優點,當頁面包含多個元素時顯著地減少下載所需要的時間。 Cookie 最重要的請求頭信息之一, 每次請求時都會攜帶上Cookie以方便服務器端識別是否是同一個客戶端。 Host? host請求報頭域主要用于指定被請求資源的Internet主機和端口號,它通常從HTTP URL中提取出來。 User-Agent用戶代理,一般情況是瀏覽器。我們上網登陸論壇的時候,往往會看到一些歡迎信息,其中列出了客戶端操作系統的名稱和版本,所使用的瀏覽器的名稱和版本,實際上,服務器應用程序就是從User-Agent這個請求報頭域中獲取到這些信息。User-Agent請求報頭域允許客戶端將它的操作系統、瀏覽器和其它屬性告訴服務器。 ## 參考 TCP/IP Guide
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看