HTTP 教學(二)-概述

基本上,HTTP 是建立於 TCP/IP 之上的通訊協定,在網際網路中扮演傳遞資料的角色(如 HTML 檔案、圖片檔以及查詢結果等)。HTTP 預設的連接埠( Port )為 80,當然也可以使用其他連接埠來進行 HTTP 協定。HTTP 提供了一個標準化的方法讓電腦之間可以互相溝通。HTTP 定義了 Client 端的 Request 資料結構,也定義了 Server 端該如何回覆這些 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 教學(二)-概述 HTTP 介紹
如圖片所示,HTTP 在主從架構(client/server)中,是一個無狀態的 Request/Response 的協定。瀏覽網頁的使用者、資訊設備或搜尋引擎就是 HTTP 的 Client 端,扮演了圖片左邊的 " Web Client";而網站伺服器則扮演了 HTTP 的 Server 端,如圖片右方的 " Web Server "。

Client

HTTP Client 端傳送了一個 Request 給 Server 端。Request 的內容的第一行稱為 Request Line, Request Line由左至右依序為
  1. Request 的方法( GET; POST; PUT; DELETE...等)
  2. 指定網頁(或服務)位置的URI
  3. 協定版本
緊接著的是以 MIME 型式的表頭(Header)訊息,包含了:
  1. Client 端的資訊
  2. 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 包含了:
  1. 協定版本
  2. HTTP 狀態碼 (成功代碼或錯誤代碼)
緊接著的是 MIME 型式的訊息,包含了:
  1. 伺服器的資訊
  2. 整個 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 教學(一)-啟程

留言

  1. 回覆
    1. 很抱歉後來沒繼續 HTTP 文章的翻譯,
      如果你對這系列文章有興趣,可以閱讀原文 https://www.tutorialspoint.com/http/http_overview.htm

      刪除

張貼留言

這個網誌中的熱門文章

Git Commit Message 這樣寫會更好,替專案引入規範與範例

Gitlab 合併請求 Merge Request 是什麼?

PHP OO 物件導向基礎教學