前言

相信很多在學習程式語言或後端的人都看過下面那張圖,之前雖然看過,但都是零零散散的在學習,這次決定要好好的將這上面的每一個技術點都學起來,未來在每告一個段落時(或許是一週)會在Medium上做紀錄。

現在是我的部落格啦~

如果有正在學習程式語言、後端工作的夥伴們,希望這個系列的內容也可以幫助到你:)

哎呀 結果自己根本沒有毅力一直上傳新的文章XD

給自己打點氣!

先來張圖嚇嚇大家

此圖來源為: https://roadmap.sh/backend
此圖來源為: https://roadmap.sh/backend

預計使用語言Python, 框架FastAPI, 資料庫PostgreSQL 第一站,先從網路開始。

網路擷取的圖
網路擷取的圖

網路是怎麼運作的?

-網路的本質是讓兩台電腦之間可以相互傳遞資料,透過一台台電腦,通過實體或是無限連結的網路線與各種網路設備(如路由器、交換器)來相互連線。
而每一個設備都會有一個獨立的IP位置,你可以在瀏覽器上輸入https://www.google.com ,接下來系統會透過DNS去查詢www.google.com 這個域名對應的IP(例如 142.250.206.36)。
接下來你的電腦會向這台電腦發送一個http Request,這個request會通過你的網路設施(網卡、從實體網路或Wi-Fi、路由器、電信公司、骨幹網路、海底電纜)一路請求到google的伺服器,裡面會夾帶你所執行的命令或資訊,如你要get這個頁面或是post某些資訊,對應的IP上的伺服器會有一隻程式不斷的接收外部發進來的請求,接到你的請求之後會進行對應的處理,給你一個http Response,裡面會夾帶你剛剛請求對應的資料回來,如網頁頁面、圖片等等,瀏覽器接收到資料之後,會進行解析,接著渲染成網頁畫面。
而這些資料其實是以封包的形式來傳遞的,每個封包裡面都會有來源與目的地的IP位置。

什麼是Http?

HTTP (HyperText Transfer Protocol) 超文本傳輸協定 這是一種大家說好的通訊規則,用來讓客戶端與伺服器之間做溝通,傳遞網頁內容的標準通訊協定。
其中有幾個動詞(方法)

  1. GET:用來取得資料
  2. Post:用來新增資料
  3. PUT:用來新增或修改資料
  4. DELETE:用來刪除資料
  5. PATCH:用來更新部分資料

像是輸入網址,要前往google首頁,這時候就是使用GET方法向google伺服器取得他們首頁的資訊。
如果你要登入Google的Gmail,你輸入帳號密碼按下送出後,就會使用POST方法送出你的帳號密碼傳送給伺服器。
現在已經有更安全的版本叫做Https,就是多了SSL的功能。
一般http port會是80;而https的port 會是443

瀏覽器以及他是如何運作的?

瀏覽器是用來顯示網頁內容的載體,他會是一個應用程式(Application) 如Google的Chrome, Apple的Safari, Mozilla的Firefox, Microsoft的IE、Edge
運作流程如下:

  1. 使用者輸入網址
  2. 瀏覽器發出Http Request
  3. 收到伺服器回傳的Http Response
  4. 解析Http Response中的HTML, CSS, JavaScript等
  5. 瀏覽器Render網頁畫面
  6. 執行JavaScript提供互動的效果

瀏覽器其實也像程式的編譯器,將前端的code與後端的資料組合再一起,轉換成一般使用者能看的畫面。

DNS以及他是如何運作的?

DNS(Domain Name System)網域名稱系統
他的作用就是把網址翻譯成IP位置。
當你輸入一個網址,電腦會去查找你自己電腦上的DNS 快取,如果找不到就會發送請求到最近的DNS伺服器上尋找,DNS伺服器上的table會存取所有域名以及對應的IP,當找到對應的IP後再發送回來,接著電腦再把目標地域名替換成實際IP,接著幫你發送請求出去。

什麼是域名?

域名(Domain Name)就是我們在瀏覽器上輸入的網址,是人類容易記憶的名稱,可以向域名註冊商購買或管理網域。
結構說明:

www.google.com
.com > 頂級域名
Google >二級域名
www >子域名(可有可無)
www不管你有沒有輸入,通常都會導向同一個目的地。

什麼是代管服務器?

代管服務器(hosting)就是一台24小時上線的大型伺服器,他可以放你網站的資料,讓其他使用者發request時由他來負責執行後端程式並response回去,你可以將租用這台電腦的某一塊空間,將你的html, css, javascript前端程式與python fastAPI後端程式、postgresql等資料庫部署到這個機器中,之後使用者訪問你的網站時,就會從這台伺服器中取得你要給使用者的內容。
理解了基本的Internet之後,就要進入選擇一個程式語言的環節了,因為我本身就會Python,也有寫其他程式語言的經驗,所以就跳過。
未來寫LeetCode時,會不定時補充寫LeetCode的筆記上來。
預計系列文會是LeeCode修煉 - Part N
未來也可以補充以下知識:
TCP
UDP
IP
Socket
WebSocket

今天累了就先這樣 之後再慢慢搬其他的文章上來XD