HTTP協議小結

來源:互聯網
上載者:User

標籤:blog   http   io   os   使用   sp   for   strong   on   

1.什麼是HTTP

       超文字傳輸通訊協定 (HTTP)(英文:HyperText Transfer Protocol,縮寫:HTTP)是互連網上應用最為廣泛的一種網路通訊協定。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。通過HTTP或者HTTPS協議請求的資源由統一資源識別項(Uniform Resource Locator,URL)來標識,通俗地講,超文字傳輸通訊協定 (HTTP)(HTTP)是一種通訊協定,它允許將超文字標記語言 (HTML)(HTML)文檔從Web伺服器傳送到用戶端的瀏覽器。

2.在TCP/IP協議棧中的位置:

         HTTP協議通常承載於TCP協議之上,有時也承載於TLS或SSL協議層之上,這個時候,就成了我們常說的HTTPS。如所示:

                                                    

        預設HTTP的連接埠號碼為80,HTTPS的連接埠號碼為443

3.HTTP的請求響應模型

         HTTP協議永遠都是用戶端發起請求,伺服器回送響應。

         不經過Proxy 伺服器的請求方式

                     

          經過Proxy 伺服器的請求方式

                             

 

       這樣就限制了使用HTTP協議,無法實現在用戶端沒有發起請求的時候,伺服器將訊息推送給用戶端。 HTTP協議是一個無狀態的協議,同一個用戶端的這次請求和上次請求是沒有對應關係。

4.URL詳解

        URL的基本格式:

 
  schema://host[:port#]/path/.../[?query-string][#anchor]
 

      scheme             指定低層使用的協議(例如:http, https, ftp)

      host                   HTTP伺服器的IP地址或者網域名稱

      port#                 HTTP伺服器的預設連接埠是80,這種情況下連接埠號碼可以省略。如果使用了別的連接埠,必須指明,例如 http://www.cnblogs.com:8080/

      path                  訪問資源的路徑

     query-string       發送給http伺服器的資料

     anchor-             錨

     URL 的一個例子

 http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff Schema:                 http host:                   www.mywebsite.com path:                   /sj/test/test.aspx Query String:           name=sviergn&x=true Anchor:                 stuff

5.開啟一個網頁需要瀏覽器發送很多次Request  

       5.1. 當你在瀏覽器輸入URL http://www.cnblogs.com 的時候,瀏覽器發送一個Request去擷取 http://www.cnblogs.com 的html.  伺服器把Response發送回給瀏覽器.

       5.2. 瀏覽器分析Response中的 HTML,發現其中引用了很多其他檔案,比片,CSS檔案,JS檔案。

       5.3. 瀏覽器會自動再次發送Request去擷取圖片,CSS檔案,或者JS檔案。

       5.4. 等所有的檔案都下載成功後。 網頁就被顯示出來了。

6.HTTP訊息的結構

                                       

        第一行中的Method表示要求方法,比如"POST","GET",  Path-to-resoure表示請求的資源, Http/version-number 表示HTTP協議的版本號碼

        我們再看Response訊息的結構, 和Request訊息的結構基本一樣。 同樣也分為三部分,第一部分叫Response line, 第二部分叫Response header,第三部分是body. header和 body之間也有個空行,  結構如

                                       

7.Get和Post方法的區別

                                        

8.狀態代碼

       Response 訊息中的第一行叫做狀態行,由HTTP協議版本號碼, 狀態代碼, 狀態訊息 三部分組成。

       狀態代碼用來告訴HTTP用戶端,HTTP伺服器是否產生了預期的Response.

       HTTP/1.1中定義了5類狀態代碼, 狀態代碼由三位元字組成,第一個數字定義了響應的類別

       1XX  提示資訊 - 表示請求已被成功接收,繼續處理

       2XX  成功 - 表示請求已被成功接收,理解,接受

       3XX  重新導向 - 要完成請求必須進行更進一步的處理

       4XX  用戶端錯誤 -  請求有語法錯誤或請求無法實現

       5XX  伺服器端錯誤 -   伺服器未能實現合法的請求

      常見狀態代碼解釋

       200 OK

      最常見的就是成功響應狀態代碼200了, 這表明該請求被成功地完成,所請求的資源發送回用戶端

      302 Found

      重新導向,新的URL會在response 中的Location中返回,瀏覽器將會自動使用新的URL發出新的Request

      例如在IE中輸入, http://www.google.com. HTTP伺服器會返回302, IE取到Response中Location header的新URL, 又重新發送了一個Request.

       304 Not Modified

       代表上次的文檔已經被緩衝了, 還可以繼續使用

       400 Bad Request

       用戶端請求與語法錯誤,不能被伺服器所理解

      403 Forbidden

      伺服器收到請求,但是拒絕提供服務

      404 Not Found 

     請求資源不存在(輸錯了URL)

     500 Internal Server Error

     伺服器發生了不可預期的錯誤

     503 Server Unavailable 

    伺服器當前不能處理用戶端的請求,一段時間後可能恢複正常

 9.Cookie和Session

 9.1Cookie的分類

可以大致把Cookie分為2類: 回話cookie和持久cookie

會話cookie: 是一種臨時的cookie,它記錄了使用者訪問網站時的設定和偏好,關閉瀏覽器,會話cookie就被刪除了

持久cookie: 儲存在硬碟上,(不管瀏覽器退出,或者電腦重啟,持久cookie都存在), 持久cookie有到期時間

9.2Session是儲存在伺服器端的,通過Session ID與用戶端關聯

HTTP協議小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.