給網站工程師的網路課

萬年面試題「當瀏覽器輸入網頁後,發生了什麼事?」你真的掌握了嗎?

  • 你是否在面試時被問過一題萬年考古題「當瀏覽器輸入網頁後,發生了什麼事?」
  • 身為網站工程師,你是否好奇過網路是怎麼運作的?
  • 網路上看了很多文章,但卻似懂非懂的?
  • 常常聽到人家說封包封包,但到底是什麼封包?
Source: Microsoft Image Creator

我自己曾經在面試一家知名企業時被問「當瀏覽器輸入網頁後,發生了什麼事?」,當時的我毫無準備,支支吾吾地回答了非常淺的一個答案,後來在教學中,有機會爭取到對轉職學員分享網路相關的題目,就決定要拿這題來挑戰自己。

被問到這題時,我當時已經工作 15 年了,我總想,如果是我大學剛畢業的時候被問到,應該會回答得更好,畢竟大學唸過網路概念,專題還是做跟網路相關的。但不是這樣的,這只是我的自我安慰,事實是,經過這十幾年的工作歷練,且在擔任講師後努力思考過怎麼整理知識,在經過這些之後,我才能精煉出最核心的部分,用最淺白的方式去詮釋這些知識。

要真的能做到「深入淺出」並不是那麼容易的事,沒有真的融會貫通,很難深入,太過專業、厲害的大大,受到知識的詛咒,又很難淺出,大概就是我這樣在中間的傢伙,可以很恰當地扮演「翻譯」的角色。看過我的書、上過我的課的朋友,大概都知道我的上課風格,我應該有接近「深入淺出」了,雖然還是難免受到知識的詛咒,但應該已經很努力在解決這個問題了,如果上課時有提醒我,我會盡力去分享跟解釋。(知道別人不知道什麼,真的困難,加上教課的話,班上同學程度範圍通常都很廣,一開始只能預設一個中間的水平來設計課程,鼓勵大家上課時勇敢發問,為自己爭取權益。)

深入淺出: 以簡淺易懂的語言文字,表達深刻的道理 https://dict.idioms.moe.edu.tw/idiomView.jsp?ID=7071&webMd=1&la=0

知識的詛咒(英語:Curse of knowledge),又稱專家盲點,是一種認知偏差,指人在與他人交流的時候,下意識地假設對方擁有理解所需要的背景知識。Robin Hogarth首先提出該名詞[1] 。專家盲點也是教育的重大阻礙之一。 https://zh.wikipedia.org/zh-tw/%E7%9F%A5%E8%AD%98%E7%9A%84%E8%A9%9B%E5%92%92

老實說「當瀏覽器輸入網頁後,發生了什麼事?」這題可深可淺,如果毫無準備,乍被問到時,可能會腦袋一片空白。大家現在都蠻幸運的,網路上有很多討論的文章,都寫得很不錯,但大多停在 DNS 這裡,到更往下層一點的部分,討論就比較少或是簡單幾句帶過,還蠻可惜的。

憑藉我過去累積的經驗,以及做為專業的課程技術講師,我試著為大家整理了一個完整的 HTTP request / response 運作過程,會從 DNS, TCP, IP 到 HTTP/HTTPS,讓聽眾一次補足作為網站工程師需要的網路知識,過程中還可以聽到小賴在業界中遇到的關於網路的(鬼?)故事。

這門課我講過不下十次,內容也從 90 分鐘長成 150 分鐘,每次都大獲好評,連覺得自己已經掌握的人,都能從課程中得到一些新的認識。但每次分享的時候,都受限於時間,只能由我自己講課,這次特別加上讓聽眾動手做的部分,帶你計算網路 IP,也會透過一些簡單的網路指令與封包錄製,讓你自己親自動手驗證,回家後也能延續課程的內容,自己設計實驗、自己觀察。

其實 4 個小時時間應該也還是不夠的,但不知道大家對這樣基礎課程的接受程度,坦誠地說,你不知道這些一樣可以開發網站,而且可能也做得不錯。但如果你知道了更多,在 troubleshooting 時可能就會有更多靈感,在學習新的技術、框架時,可能也可以更快掌握該門技術取捨了什麼,很多東西能不能用上,可能看得不是當下,而是你能不能讓自己走到可以用到這些知識的高度。

適合對象

  • 轉職工程師想要學習電腦科學基礎
  • 網站工程師,想知道自己每天在開發的網站背後發生了什麼事
  • 覺得「封包」很抽象,想親眼看看什麼叫做網路封包
  • 軟體開發領域的相關工作者,例如 PM,可能會有一點點吃力,但歡迎上課時盡量問
  • 想聽小賴怎麼講解網路(?)
  • 想挑戰 SRE 職務

「不」適合對象:

  • 之前已經聽過的朋友,可能除了動手做以外的部分都是重複的,但如果你願意贊助小賴,再來複習一次,也是非常歡迎的。
  • 已經對網路掌握得非常好的人,這門課真的會從 0 開始,怕你來了覺得太簡單。

因為不確定大家對基礎課程的接受度,很有可能開不成課,所以報名前務必詳讀報名須知,會有課程是否能開成的通知,開成課的話,課前也有一些準備事項,到時候要收信喔。

因場地限制,人數也有限制,大概 12 ~ 16 個人左右,有意願的及早報名,謝謝。

報名資訊及表單: https://forms.gle/63Nr7qvNguc5s6X1A

有關於課程的問題,都歡迎留言、FB 訊息(或是其他你可以接觸到我的方式),也可以 email 至 lightdaguys@gmail.com 詢問。

--

--

Azole (小賴)

As a passionate software engineer and dedicated technical instructor, I have a particular fondness for container technologies and AWS.