http協議,http協議教程

來源:互聯網
上載者:User

http協議,http協議教程
概要


超文字文件中包含有超連結,指向其他的資源。超文字文件是全球資訊網(WorldWide Web,即www)的基礎。

HTTP協議解決檔案傳輸的問題。HTTP是應用程式層協議,主要建立在TCP協議之上(偶爾也可以UDP為底層)。它隨著全球資訊網的發展而流行。HTTP協議目的是,如何在全球資訊網的網路環境下,更好的利用TCP協議,以實現檔案,特別是超文字檔的傳輸。

早期的HTTP協議主要傳輸靜態檔案,即真實儲存在伺服器上的檔案。隨著全球資訊網的發展,HTTP協議被用於傳輸“動態檔案”,伺服器上的程式根據HTTP請求即時產生的動態檔案。我們將HTTP的傳輸對象統稱為資源(resource)。

 

點單

 

HTTP實現了資源的訂購和傳送。其工作方式類似於快餐點單。

請求(request):顧客向服務員提出請求:“來個雞腿漢堡”。

回複(response):服務員根據情況,回應顧客的請求

 

根據情況的不同,服務員的回應可能有很多,比如:

服務員準備雞腿漢堡,將雞腿漢堡交給顧客。(一切OK)

服務員發現自己只是個甜品站。他讓顧客前往正式櫃檯點單。(重新定向)

服務員告訴顧客雞腿漢堡沒有了。(無法找到)

交易結束後,服務員就將剛才的交易拋到腦後,準備服務下一位顧客。

 

下面來看一下HTTP是如何具體實現的。

 

格式

 

HTTP協議的通訊是一次request-responce交流。用戶端(guest)向伺服器發出請求(request),伺服器(server)回複(response)用戶端。

 


HTTP協議規定了請求和回複的格式:

起始行(start line)
頭資訊 (headers)

主體(entitybody)

 

起始行只有一行。它包含了請求/回複最重要的資訊。請求的起始行表示(顧客)“想要什麼”。回複的起始行表示(後廚)“發生什麼”。

頭資訊可以有多行。每一行是一對鍵值對(key-valuepair),比如:

Content-type:text/plain

它表示,包含有一個名為Content-type的參數,該參數的值為text/plain。頭資訊是對起始行的補充。請求的頭資訊對伺服器有指導意義(好像在菜單上註明: 雞腿不要辣)。回複的頭資訊則是提示用戶端(比如,在盒子上註明: 小心燙)

主體部分包含了具體的資源。的請求中並沒有主體,因為我們只是在下單,而不用該後廚送什麼東西(請求是可以有主體內容的)。回複中包含的主體是一段文本文字(Hello World!)。這段文本文字正是顧客所期待的,雞腿漢堡。

 

請求

 

我們深入一些細節。先來看一下請求:

GET /index.htmlHTTP/1.1
Host: www.example.com

在起始行中,有三段資訊:

GET方法。用於說明想要伺服器執行的操作。

/index.html資源的路徑。這裡指向伺服器上的index.html檔案。

HTTP/1.1協議的版本。HTTP第一個廣泛使用的版本是1.0,目前的版本為1.1。

早期的HTTP協議只有GET方法。遵從HTTP協議,伺服器接收到GET請求後,會將特定資源傳送給客戶。這類似於客戶點單,並獲得漢堡的過程。使用GET方法時,是客戶向伺服器索取資源,所以請求往往沒有主體部分。

GET方法也可以用於傳輸一些不重要的資料。它是通過改寫URL的方式實現的。GET的資料利用URL?變數名=變數值的方法傳輸。比如向http://127.0.0.1發送一個變數“q”,它的值為“a”。那麼,實際的URL為http://127.0.0.1?q=a。伺服器收到請求後,就可以知道"q"的值為"a"。

GET方法之外,最常用的是POST方法。它用於從用戶端向伺服器提交資料。使用POST方法時,URL不再被改寫。資料位元於http請求的主體。POST方法最用於提交HTML的form資料。伺服器往往會對POST方法提交的資料進行一定的處理,比如存入伺服器資料庫。

範例請求中有一行頭資訊。該頭資訊的名字是Host。HTTP的請求必須有Host頭資訊,用於說明伺服器的地址和連接埠。HTTP協議的預設連接埠是80,如果在HOST中沒有說明連接埠,那麼將預設採取該連接埠。在該例子中,伺服器的網域名稱為www.example.com,連接埠為80。網域名稱將通過DNS伺服器轉換為IP地址,從而確定伺服器在互連網上的地址。

 

回複

 

伺服器在接收到請求之後,會根據程式,產生對應於該請求的回複,比如:

HTTP/1.1200 OK
Content-type: text/plain
Content-length: 12

HelloWorld!

回複的起始行同樣包含三段資訊

HTTP/1.1 協議版本

200 狀態代碼(status code)。

OK 狀態原因

OK是對狀態代碼200的文字描述,它只是為了便於人類的閱讀。電腦只關心三位的狀態代碼(statuscode),即這裡的200。200表示一切OK,資源正常返回。狀態代碼代表了伺服器回應動作的類型。

其它常見的狀態代碼還有:

302,重新定向(redirect):我這裡沒有你想要的資源,但我知道另一個地方xxx有,你可以去那裡找。

404,無法找到(not found):我找不到你想要的資源,無能為力。

(重新定向時,用戶端可以根據302的建議前往xxx尋找資源,也可以忽略該建議。)

Content-type說明了主體所包含的資源的類型。根據類型的不同,用戶端可以啟動不同的處理常式(比如顯示影像檔,播放音效檔等等)。下面是一些常見的資源

text/plain 普通文本

text/html HTML文本

image/jpeg jpeg圖片

image/gif gif圖片

Content-length說明了主體部分的長度,以位元組(byte)為單位。

回應的主體部分為一段普通文本,即

Hello World!

 

無狀態

 

根據早期的HTTP協議,每次request-reponse時,都要重建立立TCP串連。TCP串連每次都重建立立,所以伺服器無法知道上次請求和本次請求是否來自於同一個用戶端。因此,HTTP通訊是無狀態(stateless)的。伺服器認為每次請求都是一個全新的請求,無論該請求是否來自同一地址。

想象進階餐廳和快餐店。進階餐廳會知道客人所在的位置,如果新增點單,那麼服務員知道這和上一單同一桌。而在快餐店中,不好意思,服務員並不記錄客人的特徵。想再次點單?請重新排隊……

隨著HTTP協議的發展,HTTP協議允許TCP串連複用,以節省建立串連所耗費的時間。但HTTP協議依然保持無狀態的特性。

 

總結

HTTP協議實現了全球資訊網上的資源傳輸,採用request-response的工作方式。




HTTP協議是什

HTTP 協議定義伺服器端和用戶端之間檔案傳輸的溝通方式。目前HTTP協議的版本是Http1.1。RFC 2616描述了HTTP協議的具體資訊。
這個協議已經成為瀏覽器和Web網站之間的標準。
當我上網的時候底層是如何進行互動的?
當訪問者點擊一個超連結的時候,將會給瀏覽器提交一個URL地址。通過這個URL地址,瀏覽器便知道去連結那個網站並去取得具體的分頁檔(也可能是一張圖片,一個pdf檔案)。
HTTP工作的基礎就是,串連一個伺服器並開始傳輸檔案到瀏覽器。
HTTP傳輸的基本過程
在http傳輸的過程中,被稱為用戶端的要求者向伺服器請求一個檔案。
最基本的過程是:
1 用戶端串連一個主機;
2 伺服器接收串連,
3 用戶端請求一個檔案,
4 伺服器發送一個應答.
 
HTTP協議是什

HTTP 協議定義伺服器端和用戶端之間檔案傳輸的溝通方式。目前HTTP協議的版本是Http1.1。RFC 2616描述了HTTP協議的具體資訊。
這個協議已經成為瀏覽器和Web網站之間的標準。
當我上網的時候底層是如何進行互動的?
當訪問者點擊一個超連結的時候,將會給瀏覽器提交一個URL地址。通過這個URL地址,瀏覽器便知道去連結那個網站並去取得具體的分頁檔(也可能是一張圖片,一個pdf檔案)。
HTTP工作的基礎就是,串連一個伺服器並開始傳輸檔案到瀏覽器。
HTTP傳輸的基本過程
在http傳輸的過程中,被稱為用戶端的要求者向伺服器請求一個檔案。
最基本的過程是:
1 用戶端串連一個主機;
2 伺服器接收串連,
3 用戶端請求一個檔案,
4 伺服器發送一個應答.
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.