http學習筆記(一)

來源:互聯網
上載者:User
文章目錄
  • 報文初探
寫在前面:

第一次想寫系列文章,學習了一些web知識後,發現自己還有很大的不足,但又不知道該學習些什麼來完善自己的知識體系,偶然在網上看到了一篇介紹http的文章,覺得對自己有一些協助,於是想要開始學習http,我擔心自己不能夠堅持下去,所以希望能通過這種方式督促自己學習。

 

 

http概覽

  HTTP協議(HyperText Transfer Protocol,超文字傳輸通訊協定 (HTTP))是用於從WWW伺服器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證電腦正確快速地傳輸超文字文件,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。

——百度百科

  首先,http是一種可靠的資料轉送協議,因為它必須是可靠的,假設http是不可靠的,傳輸的資料總是丟三落四,這樣不是很糟糕,你想上網看一篇新聞,結果只顯示了第一段和第三段,那不是很崩潰。關於可靠性,在後面的文章再介紹。,即使資料來自很遙遠的地方,依舊可以完整的傳輸過來,不會丟失。

 

         

http又是無狀態的,也就是每次發出的請求都是獨立的,和上次的請求是沒有關係的。這樣的好處是伺服器響應的速度會很快,但是很難保持使用者的狀態,現在一般都是通過cookie和session來保持使用者上網時的狀態的。關於這個問題,以後的筆記中還會再談。

Web伺服器

   接下來說說web。談到http,必須要說到web了,因為http協議最廣泛的應用就是web了。Web伺服器使用的基本都是http協議,所以web伺服器也被稱為是http伺服器,在RedHat中apache在service中使用名字就是httpd。它們在http傳輸過程中為用戶端提供內容,讓我們可以看到精彩的內容。

 

 

報文初探

 

我們每天都會用chrome等瀏覽器向web伺服器發送http請求,然後伺服器給我們返回一個http響應資訊。以上的這個過程被稱為事務,也就是一個http請求命令和一個http響應命令組成的一個完整的響應過程。

  這樣的解釋可能還是不夠直觀,我們可以使用telnet工具(關於telnet linux使用者可以通過yum或者apt-get安裝,win使用者可以在控制台中的添加telnet功能)來看看http到底長得是怎麼樣的吧。

  假設這裡有一個web伺服器的IP地址是192.168.170.171 連接埠是預設的80連接埠,我嘗試用telnet去訪問它。

1 telnet> open 192.168.170.171 802 Trying 192.168.170.171...3 Connected to 192.168.170.171.4 Escape character is '^]'.5 Get /index.html HTTP/1.16 Host: 192.168.170.1717 Accept: *

以上資訊中,GET開始到最後就是一次簡單的http請求。

我發送完http訊息後,立即得到了以下響應:

 1 HTTP/1.1 200 OK 2 Date: Thu, 13 Jun 2013 07:14:43 GMT 3 Server: Apache/2.2.15 (CentOS) 4 Last-Modified: Thu, 13 Jun 2013 07:06:06 GMT 5 ETag: "c01c3-3f-4df03c3a2d5c3" 6 Accept-Ranges: bytes 7 Content-Length: 63 8 Connection: close 9 Content-Type: text/html; charset=UTF-810 <html>11     <body>12         <h1>13             hello world!14         </h1>15     </body>16 </html>  

Html標籤前面的就是http響應資訊了。

這就是一次簡單的http事務了。

它們長得貌似有點嚇人。這裡面到底有什麼東西呢?

                

 

 現在讓我們看下請求中有什麼資訊

1 GET /index.html HTTP/1.12 Host: 192.168.170.1713 Accept: *

首先是GET /index.html HTTP/1.1

這句話定義了用戶端是通過GET方法 發送一個擷取index.html的頁面,在傳輸中使用的是http1.1協議。

第二句定義了目標主機的地址,當然如果有dns伺服器的話,這裡寫網域名稱地址也是可以的。

第三句話寫了用戶端期待接受的MINE類型,也就是用戶端希望得到的資源是什麼類型。*在這裡表示接受任何類型。

 

 

接下來我們看響應資訊。

 1 HTTP/1.1 200 OK 2 Date: Thu, 13 Jun 2013 07:14:43 GMT 3 Server: Apache/2.2.15 (CentOS) 4 Last-Modified: Thu, 13 Jun 2013 07:06:06 GMT 5 ETag: "c01c3-3f-4df03c3a2d5c3" 6 Accept-Ranges: bytes 7 Content-Length: 63 8 Connection: close 9 Content-Type: text/html; charset=UTF-810 <html>11     <body>12         <h1>13             hello world!14         </h1>15     </body>16 </html> 

首句HTTP/1.1 200 OK表示伺服器採用http1.1協議傳輸這段響應報文,狀態代碼200表示響應成功。OK是給管理員看的,也是表示響應成功。

第二句中Date: Thu, 13 Jun 2013 07:14:43 GMT顯示了響應發生的時間。

第三句給出了伺服器的一些資訊。

第四句中Last-Modified: Thu, 13 Jun 2013 07:06:06 GMT,給出了頁面上次修改的時間。

第五句中ETag: "c01c3-3f-4df03c3a2d5c3" 這相當於一個版本號碼,這個和web緩衝機制有關。

第六句Accept-Ranges: bytes表示對這個頁面資源而言,伺服器可以接受的範圍類型

第七句Content-Length: 63表示了這個頁面的長度

第八句Connection: close表示串連被關閉。

第九句Content-Type: text/html; charset=UTF-8這裡表示頁面的文字格式設定,和字元編碼。

 

到這裡為止,我對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.