網路基礎概論

By 小黑

目錄

- 網路基本架構

- IP & TCP

- Client v.s. Server

- SSL

- Domain & DNS

- Packet

- Port

- Request/Response

網路基本架構

網路的架構如同字面意思

- 是一群點(電腦)跟線(電纜 or WiFi)交織出來的龐大系統

- 點和點之間通過線來交流

網路真的這麼簡單

- 如果你這堂課只能記住一個東西,那就記這張圖

- 接下來的概念都是從這張圖衍生出來的

第一集:排球少年

很久很久以前

這個男人太狠了,男子名叫小黑。

小黑是國語實小附設高中的學生。

他同時也是鑑店的社員。

(以下純屬虛構,如有雷同純屬巧     合)

(保護當事人)(這絕對不是講師)

小黑很想認識新朋友

但小黑是個超大社恐(真心),完全不敢跟陌生人講話。

小黑的交友圈因此僅限於鑑店、見到社跟班上同學。

所以小黑一直在想方法交新朋友,不過沒啥進展。

某天英文課上…

戴著三層口罩+黑色墨鏡的粉紅色英文老師(派大星)操著北印口音在黑板上畫 English4U 課文的心智圖。

小黑是英文白癡,聽不懂老師在講啥,所以不想理英文老師。

所以小黑拿出了建中數學學資第二冊,準備開卷數學。

但他被學資的題目電爛了(而且這東西還沒詳解 == )。

於是小黑做起白日夢來(夢的內容不可言說)。

突然間,小黑想到一個絕妙的點子:

「來做一個傳紙條系統吧!」

小黑覺得這點子有料

所以他開始研究這東西。

小黑請社牛同學 sleepyboy (簡稱 sb)在全校尋找信差。

使用者寫好紙條後,只要交給 sb 聘用的信差,紙條就能傳     當學校任一班上的任一個人。

小黑寫好這系統後洋洋得意,因此決定來測試看看。

測試傳紙條系統

於是小黑決定傳紙條給還不算熟的鑑店大電神 kea,約他放學後打排球。

放學後小黑在排球場等 kea,等了好久。

小黑從四點等到七點,等到自己也融入夜色了,kea 還是沒來

於是小黑氣炸了,打算找 kea 算帳

「你以為會打排球、競程、攝影還交的到女朋友了不起喔!?給我走著瞧!」

隔天早上…

小黑帶著四十米長刀來到 106,準備討個明白

黑:「你怎麼沒來排球場?想死嗎?」

kea:「虫合我有跟你約ㄇ?」

黑:「我有傳紙條給你,還想賴帳,找死吧你!」

說完小黑就作勢朝 kea 腦袋砍下一刀,kea 躲開了

kea:「不是哥們我好像知道問題在哪了,你先冷靜。」

黑:「不可能,我的系統天下無敵!」

kea:「總之你先給我看你傳的紙條。」

小黑想了想,拿起來 kea 完全沒寫的對話式,在上面寫下紙條內容:

From 小黑 To kea:

放學打排球揪嗎

kea 看完紙條內容後:

你是不是北七?

kea:「你是不是傻逼?老哥,你覺得其他人知道我是 kea ㄇ?」

黑:「阿這…」

kea:「而且你要怎麼確保我收得到訊息?」

黑:「有一說一,我沒想過…那要怎麼解決這問題?」

kea:「目前這系統遇到兩個問題:如何確保訊息有傳遞到和如何知道要送給誰。讓我畫張圖解釋。」

黑:「嗯嗯。」

確保訊息傳、收得到

kea:「要確保訊息傳的到(即兩邊溝通成功)有四點得達成:

- A 的傳送功能沒問題

- A 的接收功能沒問題

- B 的傳送功能沒問題

- B 的接收功能沒問題

簡單來說,就是通訊雙方必須確定彼此發送、接收功能都正常。這四點必須都沒問題,兩邊才能成功溝通,不然可能會遺漏訊息。

有個方法叫做「三次打招呼」,能確保這四點成功

三次打招呼

第一次打招呼

- kea 知道小黑發送功能正常

- kea 知道自己接收功能正常

小黑

kea

「欸欸羅傑說你是 2486」

第二次打招呼

- 小黑知道 kea 發送功能正常(否則收不到訊息)

- 小黑知道自己接收功能正常(否則收不到訊息)

- 小黑知道 kea 接收功能正常(否則不會傳訊息來)

- 小黑知道自己發送功能正常(否則不會傳訊息來)

小黑

kea

「欸欸羅傑說你是 2486」

小黑

kea

「欸欸羅傑說你是 2486」

「羅傑什麼咖?」

第三次打招呼

- kea 知道自己發送功能正常

- kea 知道小黑接收功能正常

- 好耶,看來確實可以溝通了

小黑

kea

「欸欸羅傑說你是 2486」

小黑

kea

「欸欸羅傑說你是 2486」

「羅傑什麼咖?」

「羅傑叫你去北投區公館路找他」

確保送給誰

要怎麼知道送給誰

kea:「別人不知道我是 kea & 你是小黑,所以可以換成班上座位:

kea -> 106 第三排第五位

小黑 -> 102 第四排第一位

改完可能會像這個樣子。」

kea 拿了張紙來,重寫了一次:

From 102 第四排第一位

To 106 第三排第五位:

放學打排球揪嗎

可是這樣好麻煩喔…

黑:「但這樣有點麻煩…而且換位子怎麼辦?」

kea:「這倒也不難解決,只要在給各個信差一個名單就行:

- kea -> 106 第三排第五位

- 小黑 -> 102 第四排第一位

如果有換位子的話,更新這個名單就行。

你一開始的紙條也能用了。」

黑:「太感謝你了!!!」

系統正式啟用

於是小黑回到班上後重新傳了一次紙條約 kea 打排球,而 kea 也欣然答應。

等到放學後,kea 如期來到排球場,並和小黑展開一場男人之間充滿熱血與激情的決鬥,球場裡充滿著快活的空氣。

小黑把這套系統稱為「社恐終結者」,並向學校其他同學推銷這套系統。

不久,幾乎全校學生都用這套系統交流(畢竟這個平行時空沒有手機)。

小黑也因此成為學校的風雲人物,交了不少有趣的朋友。

不過還是沒有認識學妹就是了

第一集背後的網路概念解釋

傳紙條分層

- 故事中的傳紙條系統可以分成三層,每層做好一件事:

(本圖參考 Huli 文章)

保證發送正常

誰傳的、傳給誰

傳紙條的過程

如何傳送資料

加上收發地址

實際傳輸資料過程

網路分層

- 我們可以把紙條分層對應到網路分層:

(本圖參考 Huli 文章)

保證發送正常

誰傳的、傳給誰

傳紙條的過程

如何傳送資料

加上收發地址

實際傳輸資料過程

TCP

IP

海底電纜

TCP

- TCP 全稱 Transmission Control Protocol (傳輸控制協定)

- 所謂協定就是一套規則,要遵守這些規則電腦間才能做好某   些事

- 而 TCP 就是負責保證資料傳輸沒問題的協定

- 故事中的三次打招呼即對應到 TCP 中的三次握手

(Three-way handshake)

IP

- IP 全稱 Internet Protocol,是一套確保電腦知道彼此在哪的協定

- 故事中的座位 -> IP Address

- 每台電腦只會有一個特殊的 IP(不完全對,但留給你們找答案)

- 有兩個版本:IPv4 和 IPv6

- IPv4 的 Address 不夠用,所以才有 IPv6(加上其他東西)

- IP Address 舉例:142.250.66.78

DNS (Domain Name System)

- Domain -> 名單上的 kea 、小黑

- 每個 Domain 對應一個特定 IP (這 IP 可以更換)

- DNS Server -> 處理名單的信差

- Domain 舉例:ckefgisc.orgsuperhardalgebraproblems.com

Packet

- Packet -> 紙條

- 不過跟紙條不同,電腦傳送資料會把資料切成很多個 Packet

- 要很多個 Packet 才能組成完整內容

- 這樣能保證即使網路突然斷了,原有的資料也不會完全消失

- 傳送過程也會比較快(因為能同時用不同線纜傳)

第二集:臭甲

「社恐終結者」雖好評如潮…

可終究還是遇到了新問題

一段後的某天

打掃時間時,遠在自強樓的 Lan (不是 Ian)到明道樓找上小黑

黑:「Yo~ 這不是 Lan ㄇ 有什麼事ㄇ?」

Lan:「(怨歎)都是你啦!害班上同學都知道我是甲了…」

黑心裡 OS:(原來他真的是)

Lan 說完作勢要拿手上的四十米長刀砍向小黑。

黑:「我知道你很急但你先別急,能不能先跟我解釋發生什麼事了?講完再砍也行阿。咱都是文明人,沒必要訴諸暴力。」

Lan:「確實,你說的對,那我好好說。」

lan 出櫃了(那是小寫 L 不是 I)

Lan:「那天我用這系統跟我最好的朋友出櫃。我很確定他不會跟別人說,所以一定是你的系統有問題!」(嬌羞地)

黑心裡 OS:(一定是他講出去了)

黑:「情況我了解了,我會去處理的。」

自從有了上次經驗,小黑知道 kea 很電,所以又去找他解決這問題。

紙片內容可能被看到惹

黑:「kea 夢,我這次又遇到新問題惹。」

kea:「又怎麼了,這次又遇到啥倒楣問題?」

於是小黑把 lan 的狀況告訴了 kea。

kea:「我猜資料很有可能走漏了,可能有信差看到紙條內容覺得很有趣,所以就流出去了。」

黑:「那要怎麼解決呢?」

kea:「有個方法是把紙條內容加密。如果要加密的話,可以先把訊息內容轉成英文,然後所有的英文字母往右移兩個(a -> c, b-> d, 以此類推)。收到訊息的人在逆向回來就好了!

」(具體如下圖)

From kea To 小黑:

你是甲

From kea To 小黑:

Aqw ctg ica

小黑聽了覺得很有道理

於是小黑決定採用這套系統。

而自此之後確實沒再發生消息走漏的情況了。

感謝 kea 讚嘆 kea。

至於 lan ㄇ,那是他最好的朋友流出來的…

第二集背後的網路概念

SSL

- 保證封包被駭客幹走後解不了的協定

- 如果有 SSL ,網址欄會有 https

- 原理跟故事中一樣是 A 加密 B 解密

- 但 SSL 用的是非對稱加密,剛剛故事用的是對稱加密

- 對稱加密就是同一把金鑰加密解密(改英文,偏移量 2 )

- 但讓對方知道金鑰本身也要通訊過一次

(這樣就有可能被盜金鑰)

- 所以就有密碼學家跟一群瘋狂數學家搞出了非對稱加密

- 但講師懂的不多,所以留給下一位講師講

(或是你想聽也可以來私我沒問題)

第三集:便當

買便當好麻煩…

國語實中雖然可以中午出去吃飯,但小黑中午想玩爭吵星星跟看敗北女角,所以通常會去熱食部買便當。

但買便當麻煩的要死,每次都要翻山越嶺才能到熱食部。

小黑一直在想解決方法,但洋基世界大賽被道奇打爆了,美聯 MVP 連個中外野飛球也接不好,讓小黑很不爽,所以想不出好點子。

又是某天英文課上…

小黑這次決定來卷資訊,於是他打開了 SICP,但小黑同時是資訊和英文白癡,所以啥都沒讀進去。

小黑因此又做白日夢(夢的內容一樣不可言)。

三號同學,警告一支。」小黑被英文老師的造句嚇醒了。

這時,他腦中又迸出新的好點子:

讓別人幫我訂就好了ㄚ

訂便當系統

小黑想到能利用之前的傳紙條系統,讓想訂便當的人利用紙條來跟幫別人訂的人講,到時候就可以來領便當了。

小黑又去找他認識的朋友推銷這套系統,同時也用手續費聘請班上同學幫訂便當。

過了不久,學校已經有不少人使用這套系統。

雖然實中大部分人喜歡出去吃,但下雨天時還是有不少人改用這套系統訂便當。

小黑也因此發大財,不過時間一久還是出現了一些問題

問題一:格式不統一

小黑聘用的模數社美宣 aka 便當人跟他回報說,每個人填的格式都不一樣(舉例如下),處理起來很麻煩。

From kea To 102 便當

捌個大雞腿便當

From lan To 102 便當

1 << 2 個蛋炒飯

問題一解決方法:統一格式

小黑決定讓所有人都照一樣的格式填,格式不一樣就不接受。

From kea To 102 便當

排骨便當 8

問題二:特殊需求

有些人可能有些額外的需求,也都會寫在紙條上,只是格式也不太統一。

From cdbe To 102 便當

雞腿便當 8

第五節課後再送過來

醬油要跟你一樣甜

問題二解法:分塊

小黑把紙條分成上下兩個區塊:header 跟 body。

特殊需求放 header 裡,真正的訂單放 body 

From cdbe To 102 便當

送達時間:第五堂

醬油:甜

---------------------------

雞腿便當 8

問題三:回覆格式

對於每筆訂單,小黑收到後都要回覆。

比方說假如可以訂的話,小黑會回「下訂成功!」。

要是便當店沒開,小黑會回傳說「便當店沒開」。

小黑是個究極懶人,不想每次都動手寫這麼多字。

問題三解法:狀態對照表

小黑弄了對照表,每次回傳的數字可對應到對照表上的一種狀態。

神奇對照表

200 訂購成功

302 今天休息,我找其他人幫忙

400 你他媽紙條可以好好寫ㄇ

403 沒你的事

404 餐點跟你的女朋友一樣,根本不存在

500 兄弟我這裡出了一些事

503 暫時不能訂,等等回來

問題四:想換其他家吃

這套系統目前只能訂一家的便當,所以有些人反映說很容易吃膩,如果能給其他選擇會更好。

(這張照片沒意義,我只是想放一下我女朋友的照片

問題四解法:找其他人負責

小黑班上有不少朋友,所以他找其他人來幫忙訂其他家的便當。

From lan To 102 飴盛禾

送達時間:第五堂

---------------------------

秘醬火烤-勁道五花 1

From 章魚 To 102 三元堂

豚骨醬油拉麵 1

問題五:改訂單

 

有些人可能優柔寡斷,點了之後又想改訂單。

或是突然被溫柔的學妹(?)中午叫去告白,不用便當了。

這群人會寫紙條過來告知,但格式每次都不一樣,小黑看了很躁

問題五解法:一樣是統一格式

小黑把所有的動作分成四種:GET(取得訂單資訊)、POST(送訂單)、DELETE(取消訂單)、PUT(修改訂單)。

每次交訂單來都得在 header 寫其中一種動作。

From lan To 102 飴盛禾

POST

---------------------------

秘醬火烤-勁道五花 1

問題六:我不記得你

小黑想推出 VIP 會員「CK One」,讓同學可以一個月外送免手續費,但他遇到一個問題:鼎哥。

模數社美宣鼎哥記憶力不好,每張訂單在他看來都毫無關係。

他也記不起來誰有 CK One。

即使小黑想方設法提高鼎哥的記憶力,鼎哥的記憶力也絲毫沒有進步。

問題六解法:小紙條

小黑決定讓有買 CK One 的人拿一張小紙條,每次要訂便當就夾這張紙條一起送給鼎哥,這樣鼎哥就能知道誰有 CK One 了。

From lan To 102 飴盛禾

POST

---------------------------

秘醬火烤-勁道五花 1

Ian 有 CK One

問題六解法的衍生問題和解方

但過了不久,小黑發覺有人偽造紙條來用免費的 CK One。

於是小黑把那張紙條的內容改成一串沒人看得懂的字。

收到訂單後,鼎哥會再看手邊的清單,確認那個人有沒有 CK One。

From lan To 102 飴盛禾

POST

---------------------------

秘醬火烤-勁道五花 1

b54a95127a4b573f41e335fdbd339dcc2208fbfb1ae0b6fab7599d6e2d6ec754

大大大成功

解決以上問題後,小黑設計的系統獲得巨大成功,甚至連友校也來探詢合作意願。

小黑和他的同學也因此賺了不少零花錢。

至於之後有人亂生 VIP 會員,和小黑被迫在校慶穿女僕裝道歉,就又是另一回事了

(完。)

第二集背後的網路概念解釋

便當系統是傳紙條的應用

- 由上面的故事可知,便當系統利用了傳紙條這套系統

- 而這也能對應到網路分層那張圖

TCP

IP

海底電纜

保證發送正常

誰傳的、傳給誰

傳紙條的過程

如何傳送資料

加上收發地址

實際傳輸資料過程

實際應用

訂便當

HTTP

HTTP

- HTTP 全稱 HyperText Transfer Protocol

- 一種規範「怎麼傳網頁」的協定

- 讓電腦(Client)可以跟伺服器(Server)溝通

那什麼又是伺服器呢?

Client v.s. Server

- Client -> 故事中要訂便當的人

- Server -> 處理便當訂單的人(模數社美宣)

- Client 就是普通人用的電腦

- Server 一樣是電腦,只不過被設定成專門用來處理這些需求

- 一般電腦要裝一些軟體(Nginx, Apache)才能變成 Server

- Client 跟 Server 的溝通方式見下頁

Client v.s. Server

Client

 (訂便當的人)

Server

 (便當人)

Request

「我要訂便當」

Response

「知道了」

對應到實際上網

Request

「我要去 google.com」

Response

「我傳給你網頁喔」

瀏覽器

伺服器

Request

- 送訂單 -> Request

- 最重要的四種方法:

   GET 獲取資料(取得訂單資訊)

   POST 送資料(訂便當)

   DELETE 刪除資料(取消訂單)

   PUT(修改訂單)

- Request 分成 header 跟 body (跟剛剛故事中一樣)

Response

- 回覆 -> Response

- Response 上會寫不同的 status code,表示 Request 的狀態

常見 status code

200 系列(成功):200 成功

300 系列(重導向):301 永遠搬家、302 暫時搬家

400 系列(錯誤):400 Request 寫爛、403 碰到不該碰的、404 不存在

500 系列(伺服器錯誤):500 伺服器錯誤、503 伺服器暫時死掉

Port

- 故事中的不同店家 -> 不同 Port

- 每台 Server 有幾千個 Port,用來提供不同服務

- 最常見的是 80(HTTP 佔用的 Port)

- 之後幾週的課應該會很常用,所以得搞懂

Session & Cookie

- Session 是一套讓伺服器知道你是誰的機制

- 因為伺服器會把每個 Request 都當陌生人,所以需要 Session

- Cookie -> 故事中的 CK One 小紙條

- Cookie 就是實現 Session 的一種方式

- 一次 Request 後,伺服器會叫瀏覽器設 Cookie,存在電腦上     某個檔案(通常是 cookies.txt)

- 不能亂流出去,不然別人就能利用這東西盜你帳號

2024 建北電資上學期資安小社[3]——網路基礎概論

By Aaron Wu

2024 建北電資上學期資安小社[3]——網路基礎概論

  • 220