什麼是HTTP(超文字傳輸協定)

在網頁瀏覽器與網頁伺服器等之間,交換HTML、影像與資料的應用層協定。用戶端送出由方法、URL、標頭、本文組成的請求,伺服器回傳由狀態碼、標頭、本文組成的回應。作為協定是無狀態的,登入等狀態要用Cookie等方式維持。HTTP/1.1使用文字格式與持續連線,HTTP/2在一條TCP連線上多工傳送多個串流,HTTP/3則使用UDP之上的QUIC。以TLS保護的HTTP稱為HTTPS。

日文名稱: HTTP

「HTTP(超文字傳輸協定)」出現在3領域的16道練習題中(Web技術基礎, 電腦網路基礎, 雲端與容器基礎等)。

這個名詞所屬的領域: Web技術基礎

請求與回應的形式

請求依序由「GET /index.html HTTP/1.1」這類請求列、Host或Accept等標頭、空行、本文組成。回應由「HTTP/1.1 200 OK」這類狀態列、Content-Type或Cache-Control等標頭,以及本文組成。標頭是「名稱: 值」的形式,用來傳達本文的種類、快取的處理方式、驗證資訊、壓縮方式等。

各版本的差異

HTTP/1.1以重複使用一條TCP連線的持續連線為預設,但在一條連線上只能依序一個一個接收回應。HTTP/2把訊息分成二進位的訊框,在一條連線上多工傳送多個請求與回應,也會壓縮標頭。HTTP/3以UDP之上的QUIC作為傳輸層,減少封包遺失連帶卡住無關串流的問題,也減少建立連線所需的往返。

無狀態與狀態管理

HTTP是把每個請求獨立處理的無狀態協定。伺服器不必記住先前的請求,因此容易把負載分散到許多伺服器。登入等狀態是在應用程式端維持,例如以Cookie傳遞伺服器發出的工作階段ID,或以Authorization標頭送出帶簽章的值。

練習HTTP(超文字傳輸協定)的題目

HTTPS(以TLS保護的HTTP通訊)能保護的是下列何者?

  1. A所連線網站的營運者是沒有惡意、值得信賴的個人或組織
  2. B正在通訊這件事本身,以及所連線伺服器的IP位址,在途中的路徑上都看不到
  3. C通訊內容在途中不會被竊看或竄改,以及所連線的伺服器是憑證上網域名稱的正當擁有者
查看答案與解析

正確答案:C. 通訊內容在途中不會被竊看或竄改,以及所連線的伺服器是憑證上網域名稱的正當擁有者

TLS提供三項功能:通訊加密(機密性)、竄改偵測(完整性)與伺服器驗證。伺服器出示憑證,瀏覽器沿著所信任之憑證機構(CA)的簽章確認憑證是否正確,並確認是否與URL的網域名稱一致。不過,能確認的只是「正在與該網域名稱的擁有者通訊」,並無法得知網站的營運者是否善良。即使是詐騙網站,也能取得自己網域名稱的憑證。此外,IP標頭不會被加密,因此與哪個IP位址、在何時、通訊了多少量,在途中的路徑上都看得到。

HTTP/1.1請求的第一行(請求列)所排列的元素組合,下列何者正確?

  1. A方法、請求目標(路徑等)、HTTP版本
  2. BHTTP版本、狀態碼、表示原因的簡短詞語
  3. C來源IP位址、目的連接埠號碼、方法
查看答案與解析

正確答案:A. 方法、請求目標(路徑等)、HTTP版本

HTTP請求依序由請求列、標頭(每行一個「名稱: 值」)、空行、本文組成。例如「GET /docs/index.html HTTP/1.1」就是以GET方法請求 /docs/index.html 的一行。HTTP/1.1還必須送出Host標頭,即使以同一個IP位址經營多個網站,伺服器也能判斷請求是給哪個網站的。回應的第一行是狀態列,如「HTTP/1.1 200 OK」般排列版本、狀態碼與原因片語。

常見問題

HTTP與HTTPS有什麼不同?

HTTPS是以TLS加密HTTP的交換,並加上竄改偵測與伺服器驗證。請求與回應的形式與HTTP相同,預設連接埠號碼HTTP為80、HTTPS為443。為了保護密碼與Cookie,網站一般使用HTTPS。

GET與POST如何區分使用?

GET是取得資源的方法,被視為不改變伺服器狀態的「安全」方法,瀏覽器或快取可能重複送出或保存結果。POST用於讓伺服器進行處理或登錄資料,例如下單或發文。GET的查詢會放在URL中,留在存取紀錄與瀏覽歷程裡,因此不要放入密碼等機密資訊。

解析中的「HTTP(超文字傳輸協定)」

出現「HTTP(超文字傳輸協定)」的題目(16題)

  1. HTTPS(以TLS保護的HTTP通訊)能保護的是下列何者?
  2. HTTP/1.1請求的第一行(請求列)所排列的元素組合,下列何者正確?
  3. 關於HTTP/2與HTTP/3的說明,下列何者正確?
  4. HTTP是無狀態的協定。關於這一點以及網站維持登入狀態的一般方法,下列說明何者正確?
  5. 想讓特約商店的伺服器立即得知線上支付服務的付款已完成。關於支付服務以HTTP的POST,向特約商店事先登錄的URL送出通知的方式(Webhook),下列說明何者正確?
  6. 把1.5 MB的文字資料以gzip壓縮為3分之1的大小後傳送。頻寬為10 Mbps、RTT為100 ms,在開始傳送資料之前,TCP連線、TLS交握、HTTP請求合計需要3個往返。假設1 MB = 10^6 位元組,並忽略壓縮與解壓縮的時間、標頭,以及TCP壅塞控制造成的等待。到接收完資料為止的時間,最接近下列何者?
  7. 把雲端儲存用於以下3種用途:①作為磁碟連接到虛擬機器並建立檔案系統,放置資料庫的資料檔;②從多台伺服器同時掛載,作為共用目錄使用;③透過 HTTP 的 API 指定鍵(名稱)讀寫大量圖片,且不預先決定容量而持續增加。適合①~③的儲存種類組合,下列何者適當?
  8. 在TCP/IP的四層模型中,TCP與UDP屬於哪一層?
  9. 下列關於UDP特徵的敘述,何者正確?
  10. 以HTTPS(在TCP之上的TLS 1.3)重新連線到RTT(往返時間)為100 ms的Web伺服器,從送出第一個請求到開始收到回應,所需時間最接近下列何者?假設DNS名稱解析已完成,並忽略伺服器的處理時間與資料的傳輸時間。
  11. 下列協定與其伺服器標準使用之連接埠號碼的組合,何者正確?
  12. 從RTT為40 ms的Web伺服器,依序一個一個取得1個HTML以及它所參照的4張影像。假設建立TCP連線需要1個往返,每次請求與回應需要1個往返,並且不考慮資料的傳輸時間、伺服器的處理時間、TLS以及連線的中斷。每個物件都建立新TCP連線的情況,與重複使用一條TCP連線(持續連線)的情況,所需時間的差為下列何者?
  13. 在聊天應用程式中,想把新訊息立即從伺服器送到瀏覽器。關於WebSocket的說明,下列何者正確?
  14. 以Web伺服器、應用程式伺服器、資料庫伺服器三層構成Web系統。應用程式伺服器主要負責的處理,下列何者適當?
  15. 在 Kubernetes 叢集中,希望把到達同一個主機名稱的 HTTPS 要求中,路徑以 /api 開頭的分配給 api 的 Service,其他的分配給 web 的 Service。適合用來訂定這個分配規則的資源是下列何者?

相關名詞

TLS DNS(網域名稱系統) 連接埠號碼 Pod HTTP狀態碼 Cookie 物件儲存 OSI參考模型 三向交握 SSH

前往名詞解釋列表