HTTP 教學(二)-概述
基本上,HTTP 是建立於 TCP/IP 之上的通訊協定,在網際網路中扮演傳遞資料的角色(如 HTML 檔案、圖片檔以及查詢結果等)。HTTP 預設的連接埠( Port )為 80,當然也可以使用其他連接埠來進行 HTTP 協定。HTTP 提供了一個標準化的方法讓電腦之間可以互相溝通。HTTP 定義了 Client 端的 Request 資料結構,也定義了 Server 端該如何回覆這些 Request,也就是 Response。
註: Request 和 Response 分別代表請求與回覆。
註: Request 和 Response 分別代表請求與回覆。
基本特色
這裡有三項基本特色讓 HTTP 變成一個既簡單又強大的協定:
- HTTP 是非連線性的:
HTTP 的 Client 端,如瀏覽器,向 Server 端建立一個 HTTP 連線,但 Client 端把 Request 送出後就會立刻與 Server 端中斷連線,並等待 Server 端的 Response。Server 端處理完 Request 後才會與 Client 端重新建立連線,並且傳送一個 Response 給 Client 端。
*非連線性的特性可以大幅節省傳輸的時間。
- HTTP 是無狀態的:
如同上面提及,HTTP 非連線性的特性也讓 HTTP 成為一個無狀態的協定。Server 端與 Client 端只有在傳送 Request 的瞬間才知道彼此的存在,送出 Request 之後兩方就不再理會彼此。因為這個無狀態的特性,Server 端不需要分配額外的資源去記錄 Client 端的狀態,但也使得 Client 端沒辦法保留來自不同網頁間的 Request 資訊,因此日後才需使用 Cookie 或 Session 技術來保留各網頁間的 Request 資訊。
*無狀態的特性讓 Server 端節省資源。
- HTTP 不受限於任何媒體:
意思是,只要 Client 端與 Server 端雙方都知道如何處理被傳送的資料,就可以透過 HTTP 來傳送任何類型的資料。Client 端與 Server 端都須透過 MIME-type 來定義要傳遞的資料內容。
*HTTP 可以傳遞任何類型的資料。
基本架構
下圖展示了網路應用程式的基本架構,並描述了 HTTP 位於何處:
如圖片所示,HTTP 在主從架構(client/server)中,是一個無狀態的 Request/Response 的協定。瀏覽網頁的使用者、資訊設備或搜尋引擎就是 HTTP 的 Client 端,扮演了圖片左邊的 " Web Client";而網站伺服器則扮演了 HTTP 的 Server 端,如圖片右方的 " Web Server "。
Client
HTTP Client 端傳送了一個 Request 給 Server 端。Request 的內容的第一行稱為 Request Line, Request Line由左至右依序為:- Request 的方法( GET; POST; PUT; DELETE...等)
- 指定網頁(或服務)位置的URI
- 協定版本
緊接著的是以 MIME 型式的表頭(Header)訊息,包含了:
- Client 端的資訊
- Request 表頭(Header) 資訊的內容(如資料類型 、可接受語言等設定)
最後才是要傳遞的參數。
以下為 Request 範例:
POST /cgi-bin/process.cgi HTTP/1.1 // Request Line
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) //Client 端的資訊
Host: www.tutorialspoint.com /*
Content-Type: application/x-www-form-urlencoded *
Content-Length: length * 表頭資訊
Accept-Language: en-us *
Accept-Encoding: gzip, deflate *
Connection: Keep-Alive */
licenseID=string&content=string&/paramsXML=string //傳遞的參數
Server
HTTP Server 處理完 Request 後,會回傳一個 Response ,而 Response 的內容的第一行稱為 Status Line,Status Line 包含了:- 協定版本
- HTTP 狀態碼 (成功代碼或錯誤代碼)
- 伺服器的資訊
- 整個 Response 的資訊
最後才是 Response 的內容。
以下為 Response 範例:
參考更多:
HTTP/1.1 200 OK // Status Line Date: Mon, 27 Jul 2009 12:28:53 GMT /* Server: Apache/2.2.14 (Win32) * Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT * 整個 Response 的資訊 Content-Length: 88 * Content-Type: text/html * Connection: Closed */ // 以下則為 Response 的內容
<html> <body> <h1>Hello, World!</h1> </body> </html>原文網址: https://www.tutorialspoint.com/http/http_overview.htm
參考更多:
哈哈有下一篇嗎
回覆刪除很抱歉後來沒繼續 HTTP 文章的翻譯,
刪除如果你對這系列文章有興趣,可以閱讀原文 https://www.tutorialspoint.com/http/http_overview.htm