TCP/IP 四層模型/ HTTP 相關筆記


Posted by yunanpan on 2020-07-09

整理〈從傳紙條輕鬆學習基本網路概念〉文中傳紙條與網路概念的對照,以及第四週自我檢討部分筆記。


TCP/ IP 四層模型

應用層:HTTP(Hypertext Transfer Protocol)、FTP(File Transfer protocol)

規範通訊內容格式,以利電腦解析。
從訂便當的比喻對照:
回覆格式:Status code
動作標準化:HTTP method
格式統一、特殊需求:request header/ body
服務代碼:Port(連接埠),一台主機可以跑不同的服務。HTTP 預設為 80,FTP 為 21。

傳輸層:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)

透過 TCP 三次握手確保雙方通訊收發正常。
而像是重視即時傳輸性的即時戰況、直播...等,則會使用 UDP。

網路互連層:IP(Internet Protocol)

傳紙條要知道寄、收信人是誰,在網路世界中也需知道來源與目的地。

網路存取層:海底電纜


HTTP Header

什麼是 HTTP Header?
先看〈MDN HTTP headers〉怎麼說:

HTTP headers allow the client and the server to pass additional information with the request or the response.

就像訂便當的舉例中,特殊需求的部分會寫在 header 一樣,額外資訊也會寫在 HTTP 的 Header 上。

常用的 HTTP Header

1. General

  • Request URL
  • Request Method
  • Status Code
  • Referrer Policy
    HTTP referer 可以檢查訪客從哪裡來,會有利於訪客分析,採用格式是 URL。但 URL 中可能會包含不便於透漏給第三知道的個人資訊,於是透過 Referrer Policy 用以規範 HTTP referer URL 如何發送。
    參考:
    1. HTTP參照位址
    2. MDN HTTP headers
    3. MDN Referrer-Policy
    4. Referrer Policy 介绍
一點也不重要的 fun fact:referer 是 referrer 的誤寫,而在中文配音的蠟筆小新動畫中,小新媽媽野原美冴唸做ㄧㄝˇ ㄩㄢˊ ㄇㄟˇ ㄧㄚˊ,其實中文發音應該是一ㄝˇ ㄩㄢˊ ㄇㄟˇ ㄏㄨˋ,但因為當初配音員唸錯了,於是就一直將錯就錯下去ㄌ。

2. Response Headers

3. Request Headers

  • User-Agent
    可以知道使用者用什麼瀏覽器、瀏覽器版本、網頁渲染引擎、電腦系統等資訊。

HTTP Method

  • GET:取得指定資料。像是搜尋資料。
  • POST:提交指定資源。像是填寫表單。
  • DELETE:刪除指定資源。
  • PATCH:指定資源的部份修改。

參考:

  1. MDN HTTP request methods
  2. RESTful API HTTP Methods

HTTP Stauts Code

主要分為 1~5 開頭五種。

  • 1 開頭:Informational responses
  • 2 開頭:Successful responses
  • 3 開頭:Redirects
  • 4 開頭:Client errors
  • 5 開頭:Server errors

較常見的 Status Code:

  • 200 OK:請求成功
  • 204 No Content
  • 301 Moved Permanently
  • 302 Found:與 301 不同的是請求資源的 URI 是暫時更動
  • 400 Bad Request:因 req 語法有問題,導致 server 無法解析。
  • 404 Not Found
  • 500 Internal Server Error:伺服器端發生未知或無法處理的錯誤
  • 503 Service Unavailable

參考:

  1. MDN HTTP response status codes









Related Posts

Why you should or shouldn't use Google DNS?

Why you should or shouldn't use Google DNS?

第一帖:認識 Git 時光機基礎

第一帖:認識 Git 時光機基礎

[筆記] React 隨手記 (按下按鈕切換兩個css動畫功能)

[筆記] React 隨手記 (按下按鈕切換兩個css動畫功能)


Comments