上星期日,我參加了小賴的《給網站工程師的網路課》,獲益良多,有必要寫一篇文章分享。

本文並不是上課筆記,而是想談談我作為一個轉職軟體工程師,學習網路知識的不同階段歷程,以及這堂課如何彌補了過去的不足

如果你對這堂課感興趣,但不知道自己適不適合,推薦參考下面兩篇文章:

看完之後,能一定程度了解這堂課的內容、定位與輪廓。

這是一堂實體課,時長為一個下午(約 4 小時),但資訊量明顯超過 4 小時能講完的內容,可說是非常充實。

如果你也是 Web 開發者,卻仍對網路感到一知半解,相信本文能帶給你一些方向。


讓我們直接開始吧!

Web 開發者需要了解網路嗎?

答案自然是「Yes」——不然我就不會寫這篇文章了😂,但也沒那麼簡單

無論前端、後端,還是全端工程師,我們的主要工作都圍繞著 Web 展開,且大部分的產出都必須透過 HTTP 來運作。

而 HTTP 建立在 TCP/IP 協議之上,因此網路知識的重要性不言而喻。

但我們也得承認,對大多數 Web 開發者而言,網路往往不是工作中的主角。

日常的功能開發,往往是以「框架」為主角,無論是前端的 Vue、React,或是我熟悉的 Django。網路常常是作為「配角」,在背後默默運作。

重要的「配角」

但有些時候,網路問題「確實」會直接影響到你的開發效率,甚至讓你感到無力

舉個例子,網站部署後出現發現網頁載入緩慢,這究竟是前端請求問題、伺服器端設定問題,還是網路出了問題?

又或者,你的 API 平時運作良好,但偶爾會出現 Timeout,究竟該從哪裡開始排查

這類問題雖與功能無關,但直接影響了功能的實現,不得不處理。在缺乏基礎網路知識的情況下,往往只能靠「試誤、碰運氣」來排查問題,甚至可能因此卡關好幾天。

所以,網路雖然不屬於核心技能範疇,但同時也是避不開、需要好好了解的一部分。


我的網路學習三階段

說是這麼說,我對網路的學習也稱不上多認真啦🤣

在介紹這三個階段之前,還是不免俗地強調:每個人的學習路徑不盡相同,以下僅是我個人的經驗。

第一階段:從 HTTP 開始

幾年前,我曾在極客時間購買了一堂課,叫《透視 HTTP 協議》。(有興趣的話,也可透過我的分享連結購買,我會得到一點點佣金,感謝支持!)

這堂課對我了解 HTTP 知識有很大的幫助,像是請求方法、body、狀態碼、header 的作用等。深入淺出,學起來很踏實。

雖然這些知識在網路上可能都找得到,但這堂課幫你整理得更有體系,我不必自己尋尋覓覓,就能循序漸進地掌握 HTTP 中各個重要概念。

總之,我覺得這是前期對我很有幫助的教材。但它對於 HTTP 以外的內容(TCP/IP、DNS),則著墨較少,所以只適合作為一個開端。


第二階段:用 ChatGPT 補一補

隨著 ChatGPT 等 AI 工具的出現,基礎知識的學習變得更方便了!

你或許聽過 Mr. Ranedeer 這個設計精巧的 GPTs,號稱可以讓你自學任何主題。

雖然不一定有那麼神(而且很多知識也不是以文字呈現的),但拿來學一些軟體開發的通用知識確實挺不錯。

比如給它這樣的提示詞(prompt):

1
/plan 關於「從瀏覽器輸入網址到取得回應,中間發生了什麼事?」這個主題的開發者必知知識

它會列出下列的學習清單(回答我有多次調整過,但格式不變,截圖僅為部分):

Mr. RanedeerMr. Ranedeer

這種學習方式有幾個好處:

  1. 可以快速獲得該主題的輪廓與流程。
  2. 可以針對不懂的細節反覆詢問,逐步加深理解。就像我的「哩哩扣扣」一樣。

靠 AI 自學的缺點

但缺點也很明顯:AI 不知道你「不知道什麼」。

網路知識龐雜,初學者不易分辨哪些概念屬於基礎,哪些則是進階——其實自己看書也有類似困境,所以我幾乎不太想直接去啃那些大部頭的網路書籍。

更困難的是,作為初學者,我們往往不知道哪些知識對現階段的自己最重要!(這情況在學習新技術時經常發生)

AI 確實能提供答案,但它不一定知道你的學習困境所在(而我們自己也不清楚),更無法取代經驗豐富老師的引導。

總之,AI 在原來的基礎上,幫我補足了第一階段課程中的缺憾,但仍缺少一個完整的框架與指引。只能算是聊勝於無。


第三階段:上小賴的《給網站工程師的網路課》

這次參加小賴的課程,讓我真正體會到什麼叫做「把零散的知識串聯起來」。

就像我在 Threads 上說的:「這是知識與快樂的螺旋!」

之前的學習,我本以為已經算是「相對有體系」了,但上完這堂課後,才知道自己還是太天真了😅——這很正常啦!畢竟網路世界博大精深。

課程亮點

這堂課從「輸入網址、按完 Enter」後的 DNS 查詢開始,一路講到 TCP、IP 協議,並串聯起路徑上的各個環節。

用淺顯易懂的方式解釋網路運作,並輔以具體的例子、圖片;操作 Wireshark 讓我對網路封包有了更多視覺上的理解。(比如看到 TCP 中的 port number 值)

光 DNS 部分,就讓我有一種打通任督二脈的感覺——雖然有學過,但發現自己的了解仍稍嫌片面。

和單純的記憶知識相比,我想其中的關鍵差別在於「經驗」。這堂課有很多小賴的實戰經驗,它們讓知識變得更加真實、栩栩如生。


結語

總的來說,這是一堂讓我獲益良多的課程。

我之前所學的 HTTP 與 AI 提供的網路知識,相較之下仍像是散落的拼圖,而這次課程把這些拼圖組合起來,讓我看到一幅更清晰的全景

這堂課是針對 Web 開發者設計,難度拿捏得宜,不會過於深奧,也不流於表面,適合想補足網路知識的工程師。

如果你是 Web 開發者,正在摸索網路相關的學習路徑,這堂課也許就是你的下一站。