網路基礎概論-http協定


Posted by NYBOSLA on 2021-02-04

網路基礎概論-http協定

client 與 server

在瀏覽器傳遞資料的過程,傳遞資訊的兩端稱之為『客戶端』(client)與『伺服器端』(server)

客戶端(client)

瀏覽器網頁端會發送『request』到server端,客戶端負責會發起連線,發送一個或者多個請求給伺服器。這邊的rquest包含了 head與body,這邊之後會說明。

伺服器端(server)

伺服器端負責監聽 (listen) 與接受 (accept)/拒絕 (reject) 連線,並送回 一或多個 回應 (response),換言之,伺服器收到『request』後,會開始解析請求的內容,然後回應『response』到client客戶端,這邊包含回傳head與body,接著瀏覽器會開始渲染(render),解析後將html、css、js、圖片等等相關資訊,呈現到網頁上。

其他-使用者代理(User agent)

HTTP 只是傳輸『協定』,並無規範使用方式,使用的程式,除了瀏覽器,還有:命令列工具

爬蟲(Webcrawler)、手機 APP、各種通訊設備、家電用品…,任一這些 Client 程式,又稱為

User Agent (使用者代理),其比 Client 一詞,更明確地指向『 代表使用者發起請求的
在google搜尋框按下enter後

  1. DNS 將 URL 轉換成實際的 IP Address,Browser 將 IP Address 包成一個 Request 送出去。
  2. Request 透過 Internet 傳送到 Server 。
  3. 收到 Request 的 Server 會跑去 Data center 撈取資料。
  4. 將撈取到的資料透過 Internet Response 回去。
  5. Browser 解析資料並印於 Browser 上。

IP Address

在這個協定裡面有一個 IP Address ,就是我們在網路上的網址,別人可以從這個地址訪問到你的電腦。因此我們平常說 小心我查你IP!! 是簡化 IP Address 的說法。有分為以下幾種類型:

  • 固定 IP:不會變、固定的 IP,基本上公司企業及伺服器都是使用固定 IP,這樣才能確保使用者可以連上伺服器。
  • 浮動 IP:在每次連上網的時候 IP 位置都會不一樣,普通的使用者跟家用電腦大部分都是浮動 IP。
  • 虛擬 IP:僅能使用於內部網路(或者說是區域網路內),外網是連不上的。

Request與Response?

Request是指瀏覽器或者程式發送的 http請求,包含了以下幾點:

  1. method
  2. URL + parameters
  3. Headers
  4. Message body(get沒有,但是 post requests有)

Response使只伺服器收到reaponse後,回傳給瀏覽器或者程式的http response,包含以下幾點:

  1. response headers
  2. response body:內容可以是任何格式,例如html或者Json

HTTP的協定

  • HTTP是一種網路協定的方式(HyperText Transfer Protocol,中文為超文本傳輸協定)
  • 是全球資訊網的通訊基礎,當我們在上網或網頁前端跟後端做溝通時就要遵照 HTTP 「協定」
  • 預設 port :80
  • body與head

HTTPS

  • 全名 HyperText Transfer Protocol Secure,中文為超文本傳輸安全協定
  • 由於 HTTP 一直都有安全性的問題,因此 HTTPS 就是基於 HTTP 並利用 SSL/TLS 將資訊加密封包的另一種更安全的協定。
  • 預設 port :443

[補充說明] 為什麼 HTTP 不安全

  1. HTTP 傳遞是使用明文的方式並不具備加密的功能,所以無法對內容進行加密。
  2. 不會對 client 端與 server 進行驗證,無法確定兩端是否為正確的(小明傳給小美的信可能中途被小王攔截)

HTTP method是一種規則

標準化的內容

根據 HTTP 通訊協定其中的內容 Request & Response 有標準化內容格式,並且都包含了 header 和 body。

  1. 標準化內容格式
  2. 分為 header 跟 body
  3. 用狀態碼標準化結果 (Http status code)
  4. 用動詞標準化請求方法 (Http Request Method)其實這四個其實就是 HTTP 通訊協定的內容。

head

  • 大部分會包含:
  1. IP 位置
  2. Http Request Method 狀態碼
  3. Http status code 請求方法
  • 其他額外資訊也會放在這裡,例如:Client-ID、User-Agent、Authorization 等。#在 API 串接時會使用到。

body

  • 主要傳遞的內容,但也有可以沒有內容。

Http Request Method

在早期 http 1.1 為了區分 Request 不同的用途,使用動詞標準化讓 Server 能清楚辨別 Request 的目的,定義了八種 Method,最常見的 Method 為 Get 及Post。其他還有 GET、HEAD、PUT、OPTIONS、POST、TRACE、DELETE、CONNECT

Get

  • 單純的跟 server 要一個連結或圖片,通常網頁都是 Get 的 request 比較多
  • 傳送資料以QUERY STRING(key/value編碼方式),加在URL網址列上,以?問號的方式作為連接
  • 最常使用的 Method
  • 例如:要去某個網址、看某張圖片
  • 傳送的資料會以 Query String 的方式加在 url 上

Post

  • 需要執行一些動作時,會傳送 Post request
  • 例如:登入會員、送出表單
  • 獲取「指定的」資訊,放在 request body(Form data)裡面(資訊會放在body meaasge)

其他的 HTTP Request Method

  • Put :取代掉整個 request。
  • Patch:修改部分 request。
  • Delete:刪除資源。
  • Head:只要獲取 request 的 header,不要 body。
  • Option:可以了解 server 提供哪些溝通方法。

Http status code 狀態碼

1xx:指示資訊。表示收到 Web 瀏覽器請求,正在進一步的處理中
2xx:成功。表示請求已經被正確接收,並已經被理解和接受,例如:200 OK
3xx:重新導向。表示請求沒有成功,必須採取進一步的動作以完成請求
4xx:客戶端錯誤。表示客戶端提交的請求中有錯誤或者不能被完成,例如:404 NOT found,代表請求中引用的檔案不存在
5xx:伺服器錯誤。表示伺服器不能完成請求的處理,儘管請求是正確的,例如:500 Internal Server Error,代表伺服器遇到了一個未曾預料的狀況,通常是伺服器的程式碼出錯
詳細的狀態碼,可參考
https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Status










Related Posts

CH4. 老手看函式:理解函式呼叫

CH4. 老手看函式:理解函式呼叫

How to Set Up Firewall with UFW on Ubuntu 20.04

How to Set Up Firewall with UFW on Ubuntu 20.04

8. Bridge

8. Bridge


Comments