[ MTR04 ] W4_NET101_ 由上到下:從 HTTP 協定開始講起


Posted by Christy on 2020-08-15

看影片:

由上到下:從 HTTP 協定開始講起

  • HTTP: Hypertext Transfer Protocol 超文本傳輸安全協定; 簡單來說就是一種規則

  • HTTPS: Hypertext Transfer Protocol Secure 超文本傳輸安全協定

  • request and response 都各有 header and body,且帶有不同資訊

    • header 是額外的資訊
    • body 為主要內容
  • Get 獲取資訊; post 執行動作

  • put: 完全取代內容; patch 修改部分內容

  • 常見的 HTTP Status code

    • 1 開頭:較少見;client 端要進行一些處理
    • 2 開頭:成功; 200: ok; 204: 伺服器成功處理請求,但沒有返回內容(沒有要給你什麼資訊)
    • 3 開頭:重新導向; 301: 永久被移到新的位置; 302:暫時被移到其他位置
    • 4 開頭:用戶端錯誤,例如語法錯誤;常見 404 not found:你要的東西這裡沒有
    • 5 開頭:server 端錯誤,常見 500:伺服器出錯

參考資料:HTTP狀態碼

  • 總結:HTTP 是一個協定;瀏覽器是一個程式,任何的操作都是瀏覽器在幫你送發 request,所以它會有一些限制,自己寫程式就可以繞過那些限制。

  • !實作一個超簡易 HTTP Server:這個章節看了一遍不太懂


由下到上:從 TCP/IP 開始談起

  • OSI 七層:一個組織把網路標準化,分成七層;每一層都負責不同的事情;偏理論

  • 主流實作為 TCP/IP 模型:只有四層;主要是要解決網路分層的問題

  • IP: Internet Protocol 網路協議地址

    • 虛擬 IP、浮動 IP 與固定 IP
      • 固定 IP:不會變;可以直接連線;伺服器一定會有一個固定 IP
      • 浮動 IP:每次連接的時候,IP 位址都不一樣
      • 虛擬 IP:只有在內網(例如家裡連同一個 wifi)才連的到;在不同的網路裡面,IP 位址可以重複;因為不一定每個電腦都需要 IP 位址,可以節省很多資源
        • 公司對外只有一個固定 IP,但在公司之間的溝通,會有很多個IP 位址
        • 虛擬 IP 透過數據機與外部網路連接
      • myIP 可以看到 IP 位址
  • Port 連接阜:區別在同一台電腦上的不同服務

    • 常用 port: http 80、https 443、ftp 21
  • TCP 與 UDP:TCP (Transmission Control Protocol) 協定比較可靠,保證連接的可靠性、UDP (User Datagram Protocol) 協定在意的是快速,比較多應用在視訊的時候,速度快才不會累格

  • TCP 可靠的原因:淺談三次握手(three-way handshake)

    • 靠過三次動作來確保連接的可靠性
  • 總結:

    • HTTP/FTP:紙條上的內容
    • TCP/UDP:傳紙條時的三次確認/不確認,一直傳紙條
    • IP:寄紙條,寫收件人與寄件人
    • 實體層:郵差幫忙寄信

你一定聽過的名詞:API

  • API: application programming interface
  • 透過 API 可以讓雙方交換資料

  • API 與 Web API: Web API -> HTTP API:透過 HTTP 協定的 API

  • !串接 HTTP API 實戰:這個章節看了一遍不太懂


資料格式的選擇

  • 純文字與自定義格式:在 request 與 response 時資料會有特定格式。
  • 常用的資料格式 XML 及 JSON
  • XML: Extensible Markup Language
    • 用標籤來定義資訊
  • JSON: JavaScript Object Notation
    • 是因為 js 而生,與 js 相容性超好;佔用體積比 XML 來得小
    • 長得像物件
  • 任何一種資料格式在任何一種程式語言都可以用

透過網路交換資料的第一種方式:SOAP

  • soap: Simple Object Access Protocol
  • 現在很少用了

透過網路交換資料的第二種方式:其他 SOAP 以外的 HTTP API

  • 大多數的 API 都在這裡

RESTful 到底是什麼?

  • 它不是一種協定,而是一種風格
  • 現在的 API 大多數都是這種風格,因為比較直覺
  • !API 串接實戰:這裡看一遍不太懂,要試試看才知道在做什麼

透過網路交換資料的第 n 種方式:跳脫 HTTP 的限制

  • HTTP 只是一個 Protocol,除了 HTTP 以外,還有其他 Protocol 也在進行資料交換。

各種好用工具及指令

  • 必學指令:curl
    • curl https://github.com/Lidemy/mentor-program-4th-LPGUEI > github.html:可以下載整個 html 的頁面
    • curl - I 後面接網址:只要 header 不要 body
    • nslookup: 可以解析 DNS 與 IP 位址
    • ping: 去測試是否能夠連到那個主機
    • telnet: 去測試該網址的某個 port 有沒有開

看穿網路的本質,才能不被迷惑

  • 網路的本質是拿來溝通的,協定是一種規模化的溝通,要規模化就必需要標準化;身為工程師就是理解這些規範及標準
  • 這堂課是講網路知識以及該怎麼串 API









Related Posts

#STM32與sensor開發紀錄

#STM32與sensor開發紀錄

用 JavaScript 學習資料結構和演算法:陣列(Array)篇

用 JavaScript 學習資料結構和演算法:陣列(Array)篇

用 Python 自學資料科學與機器學習入門實戰:Numpy 基礎入門

用 Python 自學資料科學與機器學習入門實戰:Numpy 基礎入門


Comments