前言
相信很多在學習程式語言或後端的人都看過下面那張圖,之前雖然看過,但都是零零散散的在學習,這次決定要好好的將這上面的每一個技術點都學起來,未來在每告一個段落時(或許是一週)會在Medium上做紀錄。
現在是我的部落格啦~
如果有正在學習程式語言、後端工作的夥伴們,希望這個系列的內容也可以幫助到你:)
哎呀 結果自己根本沒有毅力一直上傳新的文章XD
給自己打點氣!
先來張圖嚇嚇大家

預計使用語言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) 超文本傳輸協定
這是一種大家說好的通訊規則,用來讓客戶端與伺服器之間做溝通,傳遞網頁內容的標準通訊協定。
其中有幾個動詞(方法)
- GET:用來取得資料
- Post:用來新增資料
- PUT:用來新增或修改資料
- DELETE:用來刪除資料
- 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
運作流程如下:
- 使用者輸入網址
- 瀏覽器發出Http Request
- 收到伺服器回傳的Http Response
- 解析Http Response中的HTML, CSS, JavaScript等
- 瀏覽器Render網頁畫面
- 執行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