iT邦幫忙

0

企業資料通訊Week4 (2) | HTTP

HTTP 與Web 請求

HTTP,超文本傳輸協定(HyperText Transfer Protocol),是一個Client端(使用者)和伺服器端(網站)之間請求和應答的標準。

使用URL要求 Web Page 的物件位址
https://ithelp.ithome.com.tw/upload/images/20211015/20135414wOcQ8uA0BR.png

流程:
(1)Server 開一個 TCP Port 80
(2)由HTTP Client端建立Socket 與遠方的 Server指定埠(預設是80埠)進行TCP連線。
(3)Client端發出要資料的請求(request(containing URL)),HTTP伺服器則在那個埠監聽Client端的請求。一旦收到請求,伺服器會向Client端回覆(response)並返回一個狀態,比如"HTTP/1.1 200 OK",以及返回的內容,如請求的Web Page 裡面的檔案、錯誤訊息、或者其它訊息,之後在Client 的瀏覽器裡做美化與呈現。
(4)交換完資料,TCP 連線 closed
/*口訣:連,傳,關/

=> Socket 是資源共享的,不會一直占用,因此會有 Set up 階段 與 釋放階段。

HTTP小整理

  • 目前多數使用 HTTP/1.1
  • 屬於應用層的協定
  • 透過 TCP 或 TLS 來發送或接收資訊
  • 無狀態(stateless)

甚麼是無狀態 (stateless)?

就是Server 不用記得以前服務過誰。舉一個簡單的情境:透過 HTTP 請求成功登入服務後,想使用服務。無狀態的特性會讓服務器無法知道「使用服務的請求」跟「剛剛已成功登入服務的請求」是同一個使用者,也因此無狀態在身分驗證上會出現較多問題。
如果是狀態化(state)就會比較複雜:例如收信與送信的app,他可能有帳密登入,記得你已經讀過的信等,比較複雜。

持續連線(Persistent) V.S 多次連線(Non Persistent)

多次連線(Non Persistent)

at most one object
sent over a single TCP
connection

在HTTP1.0的時候使用多次連線(Non Persistent),TCP連線在每一次請求/回應對之後會關閉,就一直開開關關(有10個Object就重新連線10次)。
如圖:

https://ithelp.ithome.com.tw/upload/images/20211015/20135414rVx8IvXNtz.png

持續連線(Persistent)

multiple objects can
be sent over single
TCP connection
between client, server

現在使用的HTTP1.1使用 持續連線(Persistent),一個連接可以重複在多個請求/回應使用,大大減少等待時間。
如圖:
https://ithelp.ithome.com.tw/upload/images/20211015/20135414Kq01FsD9CO.png

RTT (run trip time):

一來一往經過的時間

time for a
small packet to travel from
client to server and back

Non Persistent 每次傳一個物件都要兩個RTT(1.要求Set up 與 2.資料往返)
https://ithelp.ithome.com.tw/upload/images/20211015/20135414QLo9ldaD3o.png


參見:
超文本傳輸協議(HTTP)是什麼?
簡介 HTTP 協定
wikipedia HTTP


尚未有邦友留言

立即登入留言