01

網路為什麼重要:分散式系統的五大需求

認識 host、node、subnet 等基本詞彙,並理解 latency 與 data transfer rate 如何決定訊息要花多久送達。

先讀原文開場,旁邊就是白話

這是一本英文書。左邊放原文、右邊放白話導讀——你既讀得懂,也順手碰了原文。

原文 · 網路與網際網路串連 81 3 NETWORKING AND INTERNETWORKING 3. 5 Case studies: Ethernet, WiFi and Bluetooth 3. 6 Summary Distributed systems use local area networks, wide area networks and internetworks for communication. The performance, reliability, scalability, mobility and quality of service characteristics of the underlying networks impact the behaviour of distributed systems and hence affect their design.
白話導讀

認識 host、node、subnet 等基本詞彙,並理解 latency 與 data transfer rate 如何決定訊息要花多久送達。

通訊子系統與效能:延遲與傳輸率

認識 host、node、subnet 等基本詞彙,並理解 latency 與 data transfer rate 如何決定訊息要花多久送達。

STEP 1

深度探秘

分散式系統靠什麼說話?

通訊子系統是分散式系統的「神經系統」

分散式系統是一群分散在不同電腦上的程式,靠互相傳訊息合作。讓它們能對話的所有硬體與軟體,合起來叫做通訊子系統(communication subsystem)

先把幾個常被混用的詞分清楚:

詞彙 白話意思
host(主機) 真正在用網路做事的電腦或裝置
node(節點) 任何接在網路上的東西,包含交換裝置
subnet(子網) 一群在同一個實體網路上、互相搆得到的節點

重點:網路的好壞,會直接決定整個分散式系統好不好用。所以我們最在意兩個效能指標:latency(延遲)data transfer rate(傳輸率)

💡
關鍵

通訊子系統是讓分散式系統能互相說話的所有硬體與軟體。

STEP 2

生活妙喻

寄包裹的兩個煩惱

把傳資料想成寄包裹

想像你要寄東西給朋友,你會在意兩件事:

  • 多久東西才開始動? 這就是 latency(延遲)——從你按下「送出」到資料「開始」抵達對方所花的時間。可以想成「寄一個空包裹要多久才到」。
  • 東西開始動之後跑多快? 這就是 data transfer rate(傳輸率)——資料開始傳之後每秒能塞多少位元(bits per second)。

於是有個很直覺的公式:

訊息傳輸時間 = latency + 訊息長度 / 傳輸率

寄一封小卡片(小訊息),主要時間花在「東西多久才動」(延遲);寄一整箱書(大訊息),主要時間花在「跑多快」(傳輸率)。

分散式系統裡有超多小訊息飛來飛去,所以延遲常常比傳輸率更要命

💡
關鍵

延遲是資料開始抵達前的等待,傳輸率是開始後的速度;小訊息多時延遲最關鍵。

STEP 3

實用超能力

為什麼工程師那麼怕遠端呼叫

算一筆速度帳

在一個輕度負載的區域網路上,傳一個短請求並收到短回覆,含系統開銷大約 0.5 毫秒;而呼叫本機記憶體裡的物件只要 不到 1 微秒

本機記憶體存取:< 1 微秒
區域網路往返:  約 500 微秒(0.5 毫秒)
Internet 往返:  20–200 毫秒(平均)

所以存取網路上的共享資源,比存取本機記憶體慢約一千倍;跨 Internet 又比快速區域網路慢 10–100 倍,主因是 router 的交換延遲與線路爭用。

flowchart TD
  A[程式發出請求] --> B[本機記憶體 不到一微秒]
  A --> C[區域網路 約半毫秒]
  A --> D[Internet 數十到數百毫秒]

這就是為什麼好的分散式系統設計,會盡量減少遠端呼叫、把資料快取在近處。

💡
關鍵

網路存取比本機記憶體慢約一千倍,所以要盡量減少遠端往返。

🔆
生活妙喻:latency 與 data transfer rate ≈ 寄包裹時的『多久開始動』與『動了之後跑多快』

延遲是按下送出到資料開始抵達的等待,傳輸率是資料開始流動後的速度,兩者一起決定總時間。

🔆
生活妙喻:通訊子系統 ≈ 身體的神經系統

它由所有傳輸媒介、硬體與軟體組成,負責把訊號在分散式系統的各個部位間傳遞。

本節字彙

host
真正使用網路來通訊的電腦或裝置。
🧠 host 就像派對主人,是真正在『辦事』的那台電腦。
latency
送出操作後、資料開始抵達目的地前的延遲時間。
🧠 late(遲到)+ ncy,就是『開始之前的遲到時間』。
data transfer rate
傳輸開始後資料移動的速度,通常以每秒位元數計。
🧠 transfer rate = 轉移的『速率』,東西動起來後跑多快。
某應用大量傳送極短的請求訊息。要改善它的整體反應速度,下列哪個方向最有效?
已知某網路延遲為 2 毫秒、傳輸率為每毫秒 1000 位元,要傳一個 3000 位元的訊息,傳輸時間最接近?
工程師說『存取網路資源比存取本機記憶體慢約一千倍』,這句話最直接的設計啟示是什麼?

可擴展、可靠、安全、行動與服務品質

從 Internet 的爆炸性成長談 scalability,再到 reliability 的端對端論點、firewall 安全、行動裝置與多媒體串流的 QoS。

STEP 1

深度探秘

網路要扛得住的五個要求

現代網路被要求的五件事

隨著 Internet 商業化與新用法爆發,網路被加上越來越嚴格的要求:

  • scalability(可擴展性):Internet 的主機數量幾乎要追上全球人口,可能達數十億節點。當年設計的定址與繞送機制竟撐住了,但仍需大改以應付下一波成長。
  • reliability(可靠性):很多應用本來就能從通訊失敗中復原,所以網路不必保證完全無錯。
  • security(安全):第一道防線通常是 firewall(防火牆)
  • mobility(行動性):筆電與手機常換位置,但 Internet 的定址與繞送是為固定裝置設計的。
  • quality of service(QoS,服務品質):多媒體串流需要保證頻寬與有界延遲。

另外還有 multicasting(多點傳送):一對多的傳送,比一個一個寄更省、更耐故障。

💡
關鍵

現代網路要同時兼顧可擴展、可靠、安全、行動與服務品質這五大需求。

STEP 2

生活妙喻

端對端論點:誰該負責檢查?

寄重要文件時,誰負責確認沒丟?

end-to-end argument(端對端論點)是個超重要的觀念。它說:要不要保證『完全無錯』,最好交給最了解需求的兩端應用程式去處理,而不是硬塞給中間的網路。

生活比喻:你寄一份重要合約。郵局(網路)會盡力送到,但**「對方真的收到正確版本了嗎」這件事,最可靠的做法是你和對方自己**通個電話確認,而不是要求郵局保證每張紙都完美無缺。

為什麼?因為:

  • 實體傳輸媒介本身其實很可靠,錯誤多半發生在收送兩端的軟體(例如收方來不及接封包、緩衝區溢位)。
  • 中間網路就算做了保證,兩端往往還是得自己再檢查一次,等於白做工。

所以網路層只要『盡力而為』就好,真正的把關交給應用層。

💡
關鍵

端對端論點:可靠性檢查最好交給最了解需求的兩端應用,而非中間網路。

STEP 3

實用超能力

防火牆與服務品質怎麼落地

firewall 與 QoS 的真實樣貌

firewall 跑在 gateway(組織網路入口的電腦)上,它收下並過濾所有進出組織的訊息,依安全政策放行或拒絕。它在 intranet 與外面的 Internet 之間畫出一條保護邊界。

flowchart LR
  Internet[外部 Internet] --> FW[防火牆 在 gateway 上]
  FW --> Intranet[組織內部 intranet]
  FW -.拒絕可疑訊息.-> Internet

但防火牆會擋住很多分散式應用,所以更細緻的安全要靠加密技術做端對端的認證與隱私(通常在通訊子系統之上的層次處理)。對行動裝置與外部節點的安全連線,可用 VPN(virtual private network)

至於 QoS:傳影片需要保證的頻寬與有界的延遲。一段壓縮影片約需 1.5 Mbps,未壓縮則高達 120 Mbps。一般 Internet 不保證 QoS,所以即時影片品質常會抖動。

💡
關鍵

防火牆在組織入口過濾流量,而細緻安全與 QoS 需要額外機制如加密與資源保留。

🔆
生活妙喻:end-to-end argument ≈ 寄合約時自己打電話跟對方確認,而不是要郵局保證每張紙完美

最了解需求的是兩端,由它們負責正確性檢查最可靠;中間網路盡力而為即可。

🔆
生活妙喻:firewall ≈ 社區大門的警衛

它站在組織入口檢查所有進出的訪客(訊息),依規定放行或拒絕,保護裡面的住戶。

本節字彙

firewall
在組織 intranet 與外部 Internet 之間建立保護邊界、過濾進出訊息的機制。
🧠 fire(火)+ wall(牆),擋住外面的火不讓它燒進來。
quality of service (QoS)
保證頻寬與有界延遲,讓即時多媒體串流能準時送達的能力。
🧠 QoS = 服務的『品質保證』,讓影片不卡頓。
scalability
系統在規模與負載大幅成長時仍能正常運作的能力。
🧠 scale(規模)+ ability,能隨規模長大的能力。
依據端對端論點,為什麼通訊子系統不必提供完全無錯的傳輸?
一家公司想讓出差員工從外部安全地連回公司內網,並擁有與內部相同的存取權。最適合的技術是?
下列哪一個情境最需要 quality of service(QoS)保證?
02

網路的種類:從口袋到全世界

用範圍、頻寬、延遲三個維度比較各類有線網路,理解 segment、router 等角色。

有線網路家族:PAN、LAN、MAN、WAN

用範圍、頻寬、延遲三個維度比較各類有線網路,理解 segment、router 等角色。

STEP 1

深度探秘

用範圍把網路分門別類

網路依『涵蓋範圍』分類

網路常用涵蓋範圍來命名,但要小心:這些名字同時也代表不同的傳輸技術與底層協定,不只是距離。

類型 範圍 特性
PAN(個人區域網路) 隨身、數公尺 連接個人裝置,低成本低耗能
LAN(區域網路) 1–2 公里 高頻寬、低延遲,單一媒介連接
MAN(都會區域網路) 數十公里 跨城市,DSL、cable modem 屬此類
WAN(廣域網路) 全球 跨組織跨城市,靠 router 轉送

在 LAN 裡,一段服務某樓層或部門的纜線叫 segment(網段),同一網段內不需繞送,因為媒介直接連接所有電腦。

💡
關鍵

網路依範圍分為 PAN、LAN、MAN、WAN,但名稱也代表不同的傳輸技術。

STEP 2

生活妙喻

從你的口袋到全世界

想像層層放大的生活圈

  • PAN 像你隨身攜帶的東西:手機、耳機、手錶彼此相連,就在你身上方圓幾公尺。
  • LAN一棟辦公大樓內部:所有人共用同一條走廊(單一媒介),找人不用『繞路』,速度快又即時。
  • MAN一座城市的公共運輸:把市內各區用高頻寬纜線串起來,距離可達 50 公里。
  • WAN國際快遞網:要跨城市、跨國家,包裹(封包)得經過一站站的轉運中心(router)才能到。
flowchart TD
  PAN[PAN 隨身數公尺] --> LAN[LAN 大樓內 1到2公里]
  LAN --> MAN[MAN 城市內數十公里]
  MAN --> WAN[WAN 跨國全球]

範圍越大,封包要轉的『站』越多,延遲也越高。

💡
關鍵

範圍從 PAN 到 WAN 逐層放大,越大的網路通常要經過越多 router、延遲越高。

STEP 3

實用超能力

讀懂效能表,挑對網路

用三個維度比較

比較不同網路時,看三個數字:範圍、頻寬、延遲

LAN(Ethernet)    1–2 km   10–10000 Mbps   1–10 ms
WAN(IP routing)  全球      0.01–600 Mbps   100–500 ms
MAN(ATM)         2–50 km   1–600 Mbps      約 10 ms

為什麼 WAN 延遲那麼高?因為:

  • 每經過一個 router 都會增加交換延遲。
  • 連光速都有極限:訊號從歐洲到澳洲約 0.13 秒,經地球同步衛星約 0.20 秒。

而 LAN 為什麼快?因為同一網段內媒介直接相連、不需繞送,總頻寬高、延遲低(除非流量極大)。Ethernet 從 10 Mbps 一路演進到 10 Gbps,是有線 LAN 的霸主。

設計分散式系統時,知道資料會走哪種網路,就能預期它有多快。

💡
關鍵

用範圍、頻寬、延遲三個維度比較網路;LAN 因無需繞送而快,WAN 因多跳與光速極限而慢。

🔆
生活妙喻:PAN / LAN / MAN / WAN 的範圍 ≈ 從口袋、辦公大樓、城市到國際快遞網的層層放大

範圍越大要經過越多轉運站(router),延遲也越高,呼應四類網路的特性。

🔆
生活妙喻:LAN 不需繞送 ≈ 同一條走廊上喊一聲大家都聽得到,不必派人轉達

同一網段媒介直接連接所有電腦,所以不需要 router 來決定路徑。

本節字彙

LAN
區域網路,在單一媒介上以高速、低延遲連接近距離的電腦。
🧠 Local Area Network,『本地』的網路,就在你附近。
WAN
廣域網路,跨城市或國家、靠 router 逐跳轉送訊息的網路。
🧠 Wide Area Network,『廣』到全世界。
segment
LAN 中服務某樓層或部門的一段纜線,段內不需繞送。
🧠 segment 就是一『段』纜線,連著同一群電腦。
為什麼同一個 LAN 網段內不需要繞送(routing)?
WAN 的端對端延遲通常遠高於 LAN,主要原因是?
『網路名稱看似只指範圍,其實也代表不同技術』這句話的最佳理解是?

無線網路與 internetwork

認識 WPAN、WLAN、WMAN、WWAN,以及把所有異質網路整合成單一虛擬網路的 internetwork 概念與其常見錯誤型態。

STEP 1

深度探秘

無線家族與『網路的網路』

無線版本與 internetwork

每種有線網路幾乎都有對應的無線版本:

無線類型 對應 例子
WPAN PAN Bluetooth
WLAN LAN WiFi(802.11)
WMAN MAN WiMAX(802.16)
WWAN WAN 3G/4G 手機網路

而 **internetwork(網際網路)**是把許多異質網路串連、整合成『單一資料通訊媒介』的通訊子系統。Internet 就是最典型的例子,由數百萬個 LAN、MAN、WAN 組成。

internetwork 靠 routergateway 連接,再用一層軟體負責跨網路的定址與傳輸,效果就像一個覆蓋在底層網路之上的虛擬網路

💡
關鍵

無線網路是有線網路的對應版本;internetwork 是把異質網路整合成單一虛擬網路。

STEP 2

生活妙喻

把各國鐵路接成一張票

internetwork 像跨國聯運車票

想像歐洲各國的鐵路系統,每國軌距、票券、語言都不一樣(這就是異質網路)。要讓旅客拿一張票就能從巴黎搭到羅馬,需要:

  1. 一套共通的編號方式(不管哪國車站都有統一編號)。
  2. 一套共通的規則(票怎麼用、怎麼轉乘)。
  3. 轉乘中心(router、gateway)幫你在不同系統間接駁。

這就是 internetwork 做的事:用一層『覆蓋層』把所有底層網路的差異藏起來,旅客(資料)感覺自己在一張完整的網路上移動。

flowchart TD
  A[Ethernet 區網] --> R[router 或 gateway]
  B[WiFi 無線網] --> R
  C[WAN 廣域網] --> R
  R --> V[單一虛擬網路 internetwork]

openness(開放性)需要這種可擴展、能整合的網路,這正是 internetwork 帶來的好處。

💡
關鍵

internetwork 用一層覆蓋層藏起底層異質網路的差異,像跨國聯運讓你一票到底。

STEP 3

實用超能力

預期網路會出哪些錯

不同網路會出哪些『包裹意外』

設計分散式系統時,要先預期網路可能出的錯,才能寫出穩健的程式:

  • 封包遺失(lost):最常見的原因其實不是傳輸媒介壞掉,而是交換節點或目的地處理不及、緩衝區溢位而丟棄封包。無線網路還會因外部干擾頻繁掉包。
  • 亂序到達(out of order):當每個封包各自獨立繞送(主要在 WAN),它們可能走不同路徑而先送後到
  • 重複到達(duplicate):通常是寄送方以為封包丟了而重傳,結果原件和重傳件都到了。
處理不及/緩衝溢位 → 遺失(所有網路最常見)
外部干擾         → 遺失(無線網路特有)
各自獨立繞送     → 亂序
誤判遺失而重傳   → 重複

記住這三種意外,你的程式就知道不能假設『送出去就一定原封不動、依序、只到一次』。

💡
關鍵

封包可能遺失、亂序、重複;最常見原因是緩衝溢位,無線網路另有干擾問題。

🔆
生活妙喻:internetwork ≈ 把各國軌距不同的鐵路接成一張跨國聯運車票

用共通編號、共通規則與轉乘中心,把異質網路整合成旅客(資料)感覺得到的單一網路。

🔆
生活妙喻:封包遺失與重複 ≈ 寄包裹時可能塞爆轉運站被丟掉,或你以為丟了重寄結果到兩件

對應緩衝區溢位造成遺失,以及誤判遺失重傳造成重複。

本節字彙

internetwork
把多個異質網路整合成單一資料通訊媒介的通訊子系統,如 Internet。
🧠 inter(之間)+ network,網路與網路『之間』串起來。
gateway
連接不同網路、位於網路入口的一般用途電腦。
🧠 gateway 就是『大門』,是進出不同網路的關口。
out of order delivery
封包到達順序與送出順序不同的現象,常見於各自獨立繞送的網路。
🧠 out of order = 『失序』,包裹先送的反而後到。
在所有類型的網路中,封包遺失最常見的原因是什麼?
為什麼封包『亂序到達』主要發生在廣域網路(WAN)?
封包『重複到達』最典型的成因是?
03

網路運作原理:封包如何穿越世界

理解為何把訊息切成封包,並比較 broadcast、circuit switching、packet switching、frame relay 四種交換方式。

封包交換與交換方式

理解為何把訊息切成封包,並比較 broadcast、circuit switching、packet switching、frame relay 四種交換方式。

STEP 1

深度探秘

為什麼要把訊息切成封包

packet switching 是一切的基礎

所有電腦網路的根基,是 1960 年代發展出的 packet switching(封包交換)技術。它讓送往不同目的地的封包共用同一條鏈路——這跟傳統電話用的 circuit switching(獨佔線路)完全不同。

傳訊息前,會先把它切成一個個封包(packet):一段受限長度的位元序列,外加足夠的定址資訊(來源與目的地)。

為什麼要限制封包長度?

  • 讓每台電腦都能配置足夠的緩衝區容納最大可能的封包。
  • 避免長訊息霸佔通道,造成其他人苦等通道空出來。

通訊是非同步的:訊息會在不定的延遲後抵達,因為封包穿越網路所需的時間會變動。

💡
關鍵

packet switching 把訊息切成小封包,讓不同目的地的封包共用同一條鏈路。

STEP 2

生活妙喻

包場專線 vs. 共用郵政

四種交換方式像四種寄送服務

  • broadcast(廣播):不做任何交換,全部喊給每個人聽,由接收者自己挑出寄給自己的。像里長拿大聲公廣播,誰有事誰自己注意。Ethernet 就是廣播式。
  • circuit switching(電路交換):像打傳統電話——先拉一條專線從你到對方,整通電話都獨佔這條線。沒在講話時線路也空著浪費。
  • packet switching(封包交換):像郵政系統——不拉專線,每個封包在每個轉運站先存下來、再轉發(store-and-forward),一站站接近目的地。
  • frame relay(訊框中繼):像高速分揀帶——封包(frame)不整個存下來,只看前幾個位元就邊看邊轉,速度極快。ATM 是代表。
flowchart TD
  A[要傳訊息] --> B[broadcast 全部喊]
  A --> C[circuit 拉專線獨佔]
  A --> D[packet 存下再轉發]
  A --> E[frame relay 看前幾位元即轉]
💡
關鍵

broadcast 全喊、circuit 拉專線、packet 存轉發、frame relay 邊看邊轉。

STEP 3

實用超能力

延遲從哪裡來、怎麼降低

store-and-forward 的延遲與 frame relay 的解法

在 store-and-forward 網路中,每個節點切換一個封包要幾十微秒到幾毫秒。它的下限由頻寬決定,因為整個封包必須先收完,才能往下轉發

所以即使短封包,在 Internet 上也常要花到 200 毫秒才抵達。但即時應用(電話、視訊會議)需要低於 50 毫秒才能維持高品質對話。

frame relay 的妙處:它不等整個封包收完,只看前幾個位元就決定怎麼轉,封包像一串位元流『穿過』節點,而非停下來存好。高速 ATM 因此能在幾十微秒內穿越多節點。

store-and-forward:收完整個封包 → 才轉發(延遲較高)
frame relay:     看前幾位元   → 邊看邊轉(延遲極低)

想壓低延遲、做即時應用,就需要 frame relay 這類『不整個存』的交換方式。

💡
關鍵

store-and-forward 須收完整包才轉發故延遲高,frame relay 只看前幾位元邊看邊轉故延遲低。

🔆
生活妙喻:circuit switching vs packet switching ≈ 打電話拉專線獨佔 vs 寄郵件一站站存轉發

電路交換獨佔線路、沒講話也佔著;封包交換共用線路、每站存下再轉發。

🔆
生活妙喻:frame relay ≈ 機場高速分揀帶,只看行李前幾個字就邊滑邊轉

不把整個封包停下來存好,只看前幾個位元就轉發,大幅降低延遲。

本節字彙

packet switching
把訊息切成封包、讓不同目的地的封包共用鏈路、逐站存轉發的技術。
🧠 packet(小包)+ switching(交換),小包共用線路輪流走。
store-and-forward
封包在每個節點先存進記憶體、再轉發到下一站的傳輸方式。
🧠 先 store(存)再 forward(轉),像郵局先收件再分送。
frame relay
只檢查封包前幾個位元就邊看邊轉的交換方式,延遲極低,如 ATM。
🧠 frame(訊框)relay(接力),像接力賽不停下來。
packet switching 相較於 circuit switching 的關鍵優勢是?
為什麼 store-and-forward 網路中,封包的轉發延遲下限由頻寬決定?
即時視訊會議需要極低延遲,下列哪種交換方式最契合這個需求?

協定與分層:OSI 七層與封裝

認識 protocol 的兩大組成、分層如何把複雜度切開,以及 encapsulation 如何一層層加上標頭。

STEP 1

深度探秘

協定是什麼?分層又為何重要

protocol:通訊的共同規則

**protocol(協定)**是一組眾所周知、用來讓程式間溝通的規則與格式。它有兩個重點:

  1. 訊息交換的順序該怎麼走。
  2. 訊息中資料的格式長怎樣。

有了共通協定,分散式系統的各個元件就能各自獨立開發、用不同語言寫、跑在不同架構的電腦上,仍能互通。

分層(layering)

網路軟體排成一層層的階層。每一層:

  • 上層提供一個服務介面(延伸了底層的能力)。
  • 透過本地程序呼叫和上下層溝通。

看起來像是『同層直接對話』,其實資料是一層層往下傳、往上收。最底層是 physical layer(實體層),由纜線、光纖、無線等媒介與訊號電路組成。

💡
關鍵

協定規定訊息順序與格式;分層讓每層只對上下層負責,把複雜度切開。

STEP 2

生活妙喻

一封信的層層信封

encapsulation 像一層層套信封

encapsulation(封裝)是分層的核心動作。在送出端,每一層都把上層交來的資料包進自己格式的信封,加上自己的標頭(header),再交給下一層。接收端則反過來,一層層拆封。

生活比喻:你寫了一張卡片(應用層訊息),然後:

  1. 裝進一個寫了收件人名字的小信封(presentation/session)。
  2. 再套一個寫了郵遞區號的大信封(transport:加上 port)。
  3. 最後貼上國際運送標籤(network:加上 IP 位址)。

每個信封上的標頭,都告訴接收端『裡面那層該交給誰處理』。

flowchart TD
  M[應用層訊息] --> T[加上 transport 標頭]
  T --> N[加上 network 標頭]
  N --> D[加上 data link 標頭]
  D --> P[實體層送出位元]

標頭裡會記錄『上一層的協定型別』,這樣接收端才知道該用哪個軟體元件拆封。

💡
關鍵

封裝就是每層把上層資料包進自己的信封並加標頭,接收端再逐層拆開。

STEP 3

實用超能力

OSI 七層與分層的代價

OSI 七層參考模型

ISO 制定的 OSI 七層參考模型是定義協定的框架(不是某套具體協定):

負責 Internet 例子
Application 滿足特定應用的通訊需求 HTTP, FTP, SMTP
Presentation 與機器無關的資料表示、加密 TLS
Session 可靠性與復原 SIP
Transport 處理訊息、定址到 port TCP, UDP
Network 在網路間傳封包、繞送 IP
Data link 在直接相連的節點間傳封包 Ethernet MAC
Physical 用類比訊號傳位元 Ethernet 基頻訊號

Internet 並未完全照搬:應用/展示/會話三層常合併成單一 middleware 層或各應用自理,且 session 與 transport 整合。

分層的代價

分層雖簡化了介面,但有效能成本:N 層協定傳一個訊息,要轉移 N 次控制權、複製 N 份資料(封裝),導致實際傳輸率遠低於網路頻寬。

💡
關鍵

OSI 七層是定義協定的框架;分層帶來模組化的好處,也帶來複製資料與轉移控制的效能成本。

🔆
生活妙喻:encapsulation ≈ 一張卡片被一層層套上不同信封,每層信封寫上自己的資訊

每層協定把上層資料包進自己的封包並加標頭,接收端再逐層拆封,對應封裝過程。

🔆
生活妙喻:protocol layering ≈ 公司各部門只跟相鄰部門對接,各司其職

每層只對上下層提供與使用服務,把整體複雜度切成可獨立開發的模組。

本節字彙

protocol
一組規定訊息交換順序與資料格式的通訊規則。
🧠 protocol = 通訊的『協定/約定』,雙方先講好規則。
encapsulation
每層把上層資料包進自己格式、加上標頭再往下傳的動作。
🧠 en-capsule,把資料裝進一顆『膠囊』再傳。
OSI 七層模型
ISO 制定、用來定義協定的七層參考框架。
🧠 OSI = Open Systems Interconnection,開放系統互連的七層藍圖。
一個 protocol 的定義必須包含哪兩個重要部分?
封裝(encapsulation)在送出端的運作方式是?
分層架構帶來模組化的好處,但也付出什麼代價?

埠、位址、封包遞送與繞送

理解 port 與 transport address、MTU 與分段,datagram 與 virtual circuit 兩種遞送,以及 distance-vector 繞送演算法。

STEP 1

深度探秘

找到正確的『門牌』與『房間』

port、address 與 MTU

資料要送到對的電腦、再送到對的程式,需要兩層定址:

  • network address(網路位址):唯一識別一台主機,讓它能被找到(如 IP 位址)。
  • port(埠):主機上由軟體定義的目的點,連到特定程序。

合起來就是 transport address = 網路位址 + port number

眾所周知的服務有固定 contact port(由 IANA 登記),例如 HTTP 是 80、FTP 是 21。1023 以下是受限的 well-known ports。

MTU 與分段

網路層封包的資料欄位有最大長度,稱 MTU(maximum transfer unit)。Ethernet 的 MTU 是 1500 bytes。若訊息超過 MTU,就得分段成多個封包,附上序號以便重組。

💡
關鍵

transport address = 網路位址 + port;超過 MTU 的訊息要分段並用序號重組。

STEP 2

生活妙喻

兩種寄送哲學

datagram vs virtual circuit

網路層遞送封包有兩種哲學:

  • datagram(資料報):像寄明信片——每張都寫上完整地址,一槍打完就不留記錄;每張可能走不同路線,可能亂序到達。IP、Ethernet 都是這種。
  • virtual circuit(虛擬電路):像先訂好一條固定路線再開始寄——傳輸前先建立路徑,沿途每個節點記下『下一站走哪』;之後每個封包只帶虛擬電路編號,不必再寫完整地址。ATM 是代表。
flowchart TD
  A[要送封包] --> B[datagram 每封寫完整地址各自走]
  A --> C[virtual circuit 先建路徑封包只帶編號]

注意:這跟 transport 層的 connectionless(UDP)/ connection-oriented(TCP)是不同層的概念,別搞混——兩者可任意組合。

💡
關鍵

datagram 像明信片各自獨立,virtual circuit 像先訂好路線再逐包沿用。

STEP 3

實用超能力

繞送表怎麼算出最短路

routing:逐跳找路

除了 Ethernet 這種全連接的 LAN,其他網路都需要 routing(繞送)。router 在每個連接點,負責把封包**逐跳(hop by hop)**轉到目的地。

繞送演算法有兩部分:

  1. 決定每個封包走哪條路(要快又有效率)。
  2. 動態更新對網路的認識(依流量與故障)。

經典的 distance-vector(距離向量)演算法(Bellman-Ford)這樣運作:每個 router 維護一張繞送表,每列記著『到某目的地,下一站走哪條 link、成本多少(幾跳)』。

router 用 RIP 定期把自己的表摘要送給鄰居:

收到鄰居的表時:
  若有到新目的地的路 → 加進來
  若有更低成本的路   → 更新
  成本記得 +1(因為多走一跳到鄰居)

當某 link 故障,就把相關成本設為無限大並廣播出去,最終會收斂到新的最佳路。Internet 中 RIP 每 30 秒傳一次以維持穩定。

💡
關鍵

distance-vector 用繞送表記錄到各目的地的下一跳與成本,靠與鄰居交換表逐步收斂到最佳路。

🔆
生活妙喻:datagram vs virtual circuit ≈ 寄明信片各自寫地址 vs 先和快遞約好固定路線再逐件沿用

datagram 每封獨立、可能亂序;virtual circuit 先建路徑、封包只帶編號沿用。

🔆
生活妙喻:port ≈ 大樓有地址(IP),但你還要知道是哪個房間(port)才找得到人

網路位址定位主機,port 定位主機上的特定程序,合起來才是完整目的地。

本節字彙

port
主機上由軟體定義、連到特定程序的目的點,讓資料能送到正確的程式。
🧠 port 是『門口』,一台電腦有很多門,每個門通到不同程式。
MTU
網路層封包資料欄位的最大長度,超過就須分段;Ethernet 為 1500 bytes。
🧠 Maximum Transfer Unit,一次最多能傳的『單位』大小。
distance-vector routing
每個 router 維護到各目的地的下一跳與成本表,與鄰居交換以收斂的繞送法。
🧠 distance(距離/成本)+ vector(方向/下一跳),記下『往哪走、多遠』。
為什麼光有 IP 位址還不足以把資料送到正確的『程式』?
一個 4000 bytes 的訊息要在 MTU 為 1500 bytes 的 Ethernet 上傳送,會發生什麼?
datagram 與 virtual circuit 遞送的核心差異是?

壅塞控制與 internetworking 元件

認識網路超載時的壅塞控制,以及 router、bridge、hub、switch 與 tunnelling 如何把異質網路接起來。

STEP 1

深度探秘

當網路塞車時

congestion control:避免雪崩

網路的容量受限於鏈路與交換節點的效能。當負載逼近容量,封包會在節點排隊,佇列越長到最後緩衝區滿,節點就只能丟棄封包

問題在於:丟棄已經消耗過資源的封包,等於浪費;而重傳又要花同樣的資源。

經驗法則:當負載超過約 80% 容量,總吞吐量反而會因丟包而下降

congestion control(壅塞控制)的核心想法:與其讓封包跑到塞爆的節點才被丟掉,不如在更早的節點先攔住,寧可增加延遲也不要崩潰式的吞吐量下降。

做法是通知沿途節點『塞車了,降低傳送率』。datagram 網路(IP、Ethernet)靠端對端控制:寄送方根據從接收方得到的資訊(如丟包、choke packet)來降速。

💡
關鍵

負載超過約 80% 容量吞吐量會崩跌;壅塞控制靠及早攔住封包並通知降速來避免。

STEP 2

生活妙喻

把異質網路接起來的『五金行』

internetworking 元件大集合

要把許多異質子網接成一個 internetwork,需要幾種角色不同的裝置:

  • router(路由器):跨網路轉送封包,維護繞送表,依目的地把封包送到正確的出口。像城際轉運中心
  • bridge(橋接器):連接不同型別的網路。
  • hub(集線器):單純把多段 Ethernet 接起來,收到的封包全部轉送到每一段。像老式廣播喇叭
  • switch(交換器):類似 router 但只服務區域網路;只把封包送到目的主機所在的網段,減少其他網段的壅塞。像聰明的分信員
flowchart TD
  H[hub 全部轉送] --> note1[每段都收到副本 較易壅塞]
  S[switch 只送相關網段] --> note2[減少其他網段壅塞]

hub 與 switch 最大差別:hub 全部轉送、switch 只送相關網段。

💡
關鍵

router 跨網路轉送、switch 只送相關網段、hub 全部轉送、bridge 連接異型網路。

STEP 3

實用超能力

tunnelling:穿越異族領土

tunnelling:把封包包起來偷渡

有時兩個相同型別的網路,中間隔著一個『異族』網路。tunnelling(隧道)就是一個軟體層,把封包封裝後讓它穿越這片異質環境。

生活比喻:山的兩邊都是同一條公路(同型網路),中間隔著一座山(異質網路)。挖一條隧道,車子(封包)就能直接開過去,完全不必管山裡的地形——隧道對車子是透明的。

真實應用:

  • IPv6 遷移:IPv4 大海中有 IPv6『小島』,島之間把 IPv6 封包封裝進 IPv4 封包偷渡過去。
  • MobileIP:從行動主機的『老家』建一條隧道把封包轉送給它。
  • IP multicast、PPP 也用類似手法。
隧道入口:把封包封裝進外層封包
中間網路:只看外層、照常轉送(看不到內層)
隧道出口:拆開外層、還原原始封包

妙處:中間的網路節點完全不用改造,就能讓特殊封包穿越。

💡
關鍵

tunnelling 把封包封裝後穿越異質網路,中間節點不必改造就能轉送,如 IPv6 遷移與 MobileIP。

🔆
生活妙喻:hub vs switch ≈ 老式廣播喇叭全社區都聽到 vs 聰明分信員只投到正確信箱

hub 把封包轉送到每一段,switch 只送到目的主機所在網段,減少壅塞。

🔆
生活妙喻:tunnelling ≈ 在異質網路這座山裡挖一條隧道,讓同型封包直接開過去

把封包封裝進外層偷渡過異質網路,中間節點只看外層、不必改造。

本節字彙

congestion control
在網路接近超載時,及早攔住封包並通知降速以避免吞吐量崩跌的技術。
🧠 congestion(壅塞)+ control,像交通管制不讓路全塞死。
switch
只把封包送到目的主機所在網段的區域網路交換裝置,能減少壅塞。
🧠 switch 會『切換』到正確的那一段,不亂送。
tunnelling
把封包封裝後穿越異質網路環境的軟體層技術。
🧠 tunnel(隧道),讓封包穿越中間的『異族山脈』。
為什麼網路負載超過約 80% 容量後,總吞吐量反而會下降?
壅塞控制的核心策略是什麼?
switch 相較於 hub 的主要優勢是?
04

Internet 協定:TCP/IP 的內幕

理解 TCP/IP 三層架構、IP 的盡力而為遞送,以及 IPv4 位址結構、class A/B/C 與位址短缺問題。

TCP/IP 概觀與 IP 定址

理解 TCP/IP 三層架構、IP 的盡力而為遞送,以及 IPv4 位址結構、class A/B/C 與位址短缺問題。

STEP 1

深度探秘

TCP/IP 為什麼能一統天下

TCP/IP 協定族

Internet 源自 1970 年代的 ARPANET,核心就是 TCP/IP 協定族:

  • TCP(Transmission Control Protocol):傳輸層,提供可靠、連線導向的串流。
  • IP(Internet Protocol):底層的『網路』協定,IP datagram 是 Internet 的基本傳輸機制。
  • 還有 UDP:不保證遞送的 datagram 傳輸協定。

TCP/IP 成功的關鍵:獨立於底層傳輸技術。不管底下是 Ethernet、ATM、電話線(PPP),IP 都能跑。使用者與程式看到的是單一虛擬網路,底層的多樣性被藏起來。

應用層:HTTP, FTP, SMTP ...
傳輸層:TCP(串流)/ UDP(訊息)
Internet 層:IP datagram
網路介面層:Ethernet 等底層網路

IP 提供 **best-effort(盡力而為)**遞送:不保證送達,封包可能遺失、重複、延遲或亂序——但只在底層網路故障或緩衝區滿時才發生。

💡
關鍵

TCP/IP 獨立於底層技術而能整合異質網路;IP 提供盡力而為、不保證的遞送。

STEP 2

生活妙喻

全球統一的門牌系統

IPv4 位址像門牌

IPv4 位址是一個 32 位元的數字,寫成四個十進位數字以點分隔(如 138.37.88.230),每個數字代表一個 byte(octet)。

它分成兩部分,就像門牌:

  • network ID(網路識別):你在哪個『社區』(子網)。
  • host ID(主機識別):你是社區裡的哪一戶。

位址要滿足三個要求:

  1. universal(普遍):任何主機都能寄給任何主機。
  2. 有效運用位址空間:當年覺得約 40 億個位址(2 的 32 次方)夠用,沒想到嚴重低估。
  3. 利於繞送,但位址本身又裝不下太多繞送資訊。

早期把位址分成 class A、B、C:A 給超大網路、B 給中型、C 給其他。這個分法後來證明很沒效率。

💡
關鍵

IPv4 是 32 位元位址,分成 network ID(社區)與 host ID(哪一戶),早期用 class A/B/C 劃分。

STEP 3

實用超能力

為什麼 IP 位址會不夠用

位址短缺的根源

class 制的問題在哪?

  • 網管無法預測未來主機數量,遇到不確定時就傾向多要——明明可能不需要那麼多,卻申請 class B。
  • 結果位址空間被分得又快又浪費

大約 1990 年,大家發現照當時的配發速度,IP 位址大概 1996 年就會用光。於是採取三步:

  1. 開發新協定與定址方案 → IPv6(128 位元位址)。
  2. 改革配發方式 → CIDR(classless interdomain routing),更有效利用空間。
  3. 讓未註冊電腦透過 NAT 間接上網。
flowchart TD
  P[IPv4 位址即將用盡] --> A[IPv6 全新大位址]
  P --> B[CIDR 更有效配發]
  P --> C[NAT 私有電腦共用公開位址]

這三招(後兩節詳述)成功延後了危機,也讓 Internet 繼續擴張。

💡
關鍵

IPv4 因 class 制浪費而面臨枯竭,催生了 IPv6、CIDR 與 NAT 三大對策。

🔆
生活妙喻:IPv4 位址結構 ≈ 門牌:前段是社區(network ID),後段是哪一戶(host ID)

位址分成網路與主機兩部分,前者定位子網,後者定位子網內的特定主機。

🔆
生活妙喻:TCP/IP 獨立於底層 ≈ 統一的國際包裹規格,不管底下是卡車、火車還是飛機都能送

IP 不在意底層是 Ethernet 或電話線,對上層呈現單一虛擬網路。

本節字彙

IP
Internet 的底層網路協定,以 datagram 提供盡力而為、不保證的封包遞送。
🧠 Internet Protocol,網際網路的『底層運送規則』。
best-effort delivery
盡力遞送但不保證送達的服務語意,封包可能遺失、重複或亂序。
🧠 best-effort = 『盡力就好』,不打包票。
IPv4 address
32 位元的 Internet 位址,含 network ID 與 host ID,寫成四段十進位數。
🧠 v4 = 32 位元(4 段 octet),像四格門牌號。
TCP/IP 能整合各種異質網路,最關鍵的設計特性是?
IP 提供『best-effort』遞送,這代表什麼?
IPv4 位址 138.37.88.230 中的 network ID 與 host ID 分別代表什麼?

IP 繞送、CIDR、NAT 與 IPv6

認識 ARP 位址解析、預設路由、CIDR 如何擴充位址、NAT 如何讓私有網路上網,以及 IPv6 的 128 位元位址。

STEP 1

深度探秘

ARP 與預設路由

ARP:把 IP 位址翻成實體位址

IP 位址要送上實際的 Ethernet,得先換成 Ethernet 的 48 位元實體位址。負責翻譯的是 ARP(address resolution protocol)

ARP 的聰明之處在於『廣播 + 快取』:

  1. 先查自己的 ARP cache,有就直接用。
  2. 沒有就廣播一個 ARP request:『誰是這個 IP?』
  3. 符合的主機回一個 ARP reply,附上自己的 Ethernet 位址。
  4. 把結果存進 cache,下次免廣播。

default route:用效率換表的大小

Internet 目的地超過百萬個,沒有 router 能記下全部。**default route(預設路由)**讓 router 對『表裡查不到的目的地』,一律走某條預設路徑。代價是某些封包可能多繞一兩跳,但換來小很多的繞送表。

💡
關鍵

ARP 用廣播加快取把 IP 翻成實體位址;default route 用些微繞送效率換取小很多的繞送表。

STEP 2

生活妙喻

CIDR:拆掉死板的房型限制

CIDR 像彈性切分土地

舊的 class A/B/C 像建商只賣『大豪宅、中別墅、小套房』三種固定房型——需要 300 戶的社區,小套房(class C,最多 255)不夠,只好買中別墅(class B),結果一堆空房浪費。

CIDR(classless interdomain routing)打破房型限制:可以把多個連續的 class C 位址打包給一個需要 300 戶的子網,也能把一個 class B 空間細切給多個子網。

關鍵是在繞送表加一個 mask(遮罩),用來決定『IP 位址的哪幾位元』要拿來比對。寫法像 138.37.95.232/29——/29 表示前 29 位元是網路部分。

138.37.95.232/29 → 遮罩 29 個 1,剩 3 個 0
→ 這群有 2^3 = 8 個位址

CIDR 讓位址配發像量身訂做,不再被 A/B/C 的死板尺寸綁住。

💡
關鍵

CIDR 用遮罩讓網路/主機的切分點任意,打破 class A/B/C 的固定尺寸,配發更彈性省位址。

STEP 3

實用超能力

NAT 與 IPv6:兩種擴張之道

NAT:一個公開 IP 撐起一整家

家裡很多裝置,卻只有一個公開 IP(如 83.215.152.95)。**NAT(network address translation)**讓它們都用私有位址(如 192.168.1.x),由 router 在出入口做翻譯:

  • 內部裝置送封包出去時,router 把來源換成自己的公開 IP,並用一個虛擬 port 編號記住是誰送的。
  • 外部回覆回來時,router 依目的 port 查表,還原成正確的內部裝置。
flowchart LR
  PC[內部 192.168.1.5] --> R[NAT router 記住 port 對應]
  R --> Net[外部 用公開 IP]
  Net --> R
  R --> PC

缺點:內部電腦預設難以當伺服器被外面主動連入(需手動設定 port 轉發)。

IPv6:根本解法

IPv6 用 128 位元位址,數量天文數字(約 3×10³⁸)。它還簡化標頭加快繞送、用 flow label 支援即時串流、內建安全與 anycast。遷移靠 tunnelling 形成 IPv6『小島』逐漸合併。

💡
關鍵

NAT 用 port 對應讓多台私有電腦共用一個公開 IP,IPv6 則用 128 位元位址徹底解決短缺。

🔆
生活妙喻:CIDR ≈ 打破『大中小』固定房型,按需求量身切分土地

用遮罩任意決定網路與主機的分界,避免 class B 那種買大屋空一堆的浪費。

🔆
生活妙喻:NAT ≈ 公司總機一支對外電話號碼,靠分機號碼把來電轉給正確的人

對外只露一個公開 IP,router 用 port 對應把回覆轉給正確的內部裝置。

本節字彙

ARP
把 IP 位址解析成底層網路實體位址的協定,用廣播加快取運作。
🧠 Address Resolution Protocol,把位址『解析』成實體位址。
CIDR
用遮罩任意切分網路/主機分界、取代 class A/B/C 的位址配發與繞送方案。
🧠 Classless(無類別)InterDomain Routing,擺脫死板的房型。
NAT
讓多台私有位址裝置透過 port 對應共用單一公開 IP 上網的技術。
🧠 Network Address Translation,在出入口『翻譯』位址。
ARP 為什麼要使用快取(cache)?
default route(預設路由)的設計取捨是什麼?
一個子網需要約 300 個位址。為什麼 CIDR 比舊的 class 制更合適?

TCP 與 UDP:兩種傳輸服務

比較不保證遞送的 UDP 與可靠連線導向的 TCP,理解 TCP 的序號、流量控制、重傳、緩衝與校驗。

STEP 1

深度探秘

從 IP 到程式間的對話

TCP 與 UDP 補足了 IP 缺的什麼

IP 只負責電腦對電腦(用 IP 位址),但程式要的是程式對程式。TCP 與 UDP 這兩個傳輸協定,透過 **port number(16 位元整數)**把訊息送到主機內的特定程序。

兩者代表兩種哲學:

  • UDP(User Datagram Protocol):幾乎就是 IP 的傳輸層複製品。一個 UDP datagram 包在 IP 封包裡,只多了來源/目的 port、長度與一個(選用的)checksum。不保證遞送、無建立成本、無確認訊息。
  • TCP(Transmission Control Protocol):複雜得多,提供可靠、有序的位元組串流。

簡言之:UDP 輕量但不保證,TCP 厚重但可靠。

💡
關鍵

TCP 與 UDP 用 port 把資料送到特定程序;UDP 輕量不保證,TCP 厚重可靠。

STEP 2

生活妙喻

明信片 vs 掛號連續劇

兩種寄送服務

UDP 像寄明信片

  • 寫上去就丟進郵筒,便宜又快。
  • 不知道對方有沒有收到,也不保證順序。
  • 適合『偶爾掉一張也沒差』的情境,例如即時遊戲座標、串流影格。

TCP 像追一部需要按集數收看的掛號劇集

  • 寄出前要先雙方握手建立連線(connection-oriented)。
  • 每一集都編號(sequence number),對方依序收齊才往下看。
  • 收到會回確認(acknowledgement),沒收到的會重傳
  • 寄方還會看對方的『收看速度』調整節奏(flow control),不把對方淹沒。
flowchart TD
  S[寄送方] -->|帶序號的 segment| R[接收方]
  R -->|ack 與 window 大小| S
  S -->|逾時未 ack 則重傳| R

TCP 用序號、確認、重傳、緩衝、校驗五招撐起『可靠』兩個字。

💡
關鍵

UDP 像寄明信片快但不保證,TCP 像握手後依序追劇、收齊確認、缺漏重傳。

STEP 3

實用超能力

flow control 與選用準則

TCP 的流量控制

TCP 怎麼避免把接收方或中間節點淹沒?靠 acknowledgement + window

  • 接收方每收到 segment 就記下序號,並不時回一個 ack,附上目前已收齊到第幾號,外加一個 window size
  • window size 告訴寄方:『下一次確認前,你最多還能再送這麼多』。

對互動式程式(如鍵盤輸入),資料量小又零碎,TCP 設一個本地緩衝逾時 T(典型 0.5 秒):資料等了 T 秒、或緩衝滿到 MTU,就送出,確保使用者很快看到打字結果。

怎麼選?

需求
要可靠、有序、不能掉資料 TCP
要輕量、低延遲、容許偶爾掉包 UDP
檔案傳輸、網頁、郵件 TCP
即時串流、DNS 查詢、線上遊戲 UDP

因無線網路常掉包,TCP 的流控對無線較不理想,這也是 WAP 等改用不同傳輸機制的原因之一。

💡
關鍵

TCP 用 ack 與 window 做流量控制避免淹沒接收方;需可靠選 TCP、需輕量低延遲選 UDP。

🔆
生活妙喻:UDP ≈ 寄明信片:便宜快速,但不保證收到也不保證順序

UDP 無建立成本、不確認、不保證遞送,適合容許偶爾掉包的即時應用。

🔆
生活妙喻:TCP ≈ 握手後追一部按集數收看的掛號劇,缺集會補寄、看完回報

TCP 連線導向,用序號、確認、重傳保證有序可靠的位元組串流。

本節字彙

UDP
輕量、不保證遞送的傳輸協定,幾乎是 IP 的傳輸層複製品。
🧠 User Datagram Protocol,像 datagram 一槍打完不負責。
TCP
連線導向、提供可靠有序位元組串流的傳輸協定。
🧠 Transmission Control Protocol,受『控制』所以可靠。
flow control
TCP 用 ack 與 window 大小調節傳送速度、避免淹沒接收方的機制。
🧠 flow(流量)control,像水龍頭依水槽容量調節。
TCP 與 UDP 相較於 IP,額外提供的最關鍵能力是?
一款線上射擊遊戲需要極低延遲傳送玩家座標,偶爾掉一兩個更新可接受。最適合的傳輸協定是?
TCP 如何保證資料『有序』地交給接收程式?

DNS、MobileIP 與 firewall

認識把網域名稱轉成 IP 的 DNS、讓行動主機保留單一位址的 MobileIP,以及 firewall 的三種過濾層次。

STEP 1

深度探秘

DNS:把名字翻成位址

DNS:人記名字、電腦記號碼

人類記得住 www.amazon.com,記不住一串 IP 數字。DNS(Domain Name System)就負責把網域名稱翻成 IP 位址。

命名是階層式的(如 essex.ac.uk),反映組織結構,且與實體網路佈局完全無關

DNS 由分散在 Internet 各處的伺服器程序實作:

  • 每個 domain 至少有兩台 DNS 伺服器,持有其下的部分名稱樹。
  • 查不到的名稱,就遞迴地向相關 domain 的伺服器發問,由右到左一段段解析。
  • 解析結果會被快取,下次同 domain 的查詢就免再問別人。

沒有快取,根伺服器幾乎每次都會被查,形成嚴重瓶頸——快取是 DNS 能運作的關鍵。

💡
關鍵

DNS 把階層式網域名稱遞迴解析成 IP 位址,並靠快取避免根伺服器成為瓶頸。

STEP 2

生活妙喻

MobileIP:搬家也收得到信

MobileIP:行動主機的轉信服務

簡單上網的行動裝置可以每換一個地方就用 DHCP 拿一個新 IP。但若要讓別人始終用同一個 IP 找到它(例如它在跑伺服器),就需要 MobileIP

生活比喻:你搬家了,但希望寄到老家地址的信還是收得到。做法是請『老家管理員』幫你轉信:

  • home agent(HA,老家管理員):知道你目前在哪、幫你代收與轉送。
  • foreign agent(FA,新住處管理員):在你新落腳處給你一個臨時的 care-of address,並通知 HA。

當信(IP 封包)寄到你老家位址,HA 把它封裝成 MobileIP 封包,透過tunnelling送到 FA,FA 再拆開交給你。

flowchart LR
  Sender[寄件者寄到家用位址] --> HA[home agent 代收]
  HA -->|tunnel 封裝轉送| FA[foreign agent]
  FA --> MH[行動主機]

HA 還會把 care-of address 告訴寄件者,讓支援 MobileIP 的寄件者之後直接寄、省去繞路。

💡
關鍵

MobileIP 讓行動主機保留單一 IP,靠 home agent 與 foreign agent 加 tunnelling 把封包轉送過去。

STEP 3

實用超能力

firewall 的三層過濾

firewall:在三個層次把關

組織內電腦軟體安全參差不齊,難免有弱點。firewall 的目的就是監控並控制所有進出 intranet 的通訊,依安全政策放行或拒絕。它常由多個程序在不同協定層次過濾:

層次 做什麼
IP packet filtering 看 IP 封包的來源/目的位址、port,決定放行或拒絕(例如擋掉外部存取 NFS)
TCP gateway 檢查 TCP 連線請求與 segment 正確性(擋掉畸形 segment 的攻擊)
Application-level gateway 當應用程式的 proxy,逐一審核(如允許特定使用者 Telnet 到特定主機)

常見配置:用 router/filter 做 IP 過濾,加一台 **bastion(堡壘主機)**跑 TCP 與應用層 gateway;安全要求高時用兩台 router/filter 夾住 bastion。

延伸:VPN 用 IP 層的加密安全通道,把防火牆的保護邊界延伸到外部使用者或異地 intranet。

💡
關鍵

firewall 在 IP、TCP、應用三個層次過濾進出流量,常搭配 bastion;VPN 再把保護邊界延伸到外部。

🔆
生活妙喻:DNS ≈ 電話簿:你記得住人名,查一下就得到號碼

DNS 把好記的網域名稱翻成電腦用的 IP 位址,並靠快取加速重複查詢。

🔆
生活妙喻:MobileIP ≈ 搬家後請老家管理員幫你轉信到新住處

home agent 代收寄到家用位址的封包,透過 tunnel 轉送到 foreign agent 再交給你。

本節字彙

DNS
把階層式網域名稱解析成 IP 位址的服務,廣泛使用快取。
🧠 Domain Name System,網域『名字』的查號台。
MobileIP
讓行動主機在不同子網間移動仍保留單一 IP 的機制,用 HA、FA 與 tunnelling。
🧠 Mobile(行動)+ IP,搬家也保留同一個 IP。
bastion
位於受 IP 過濾保護的 intranet 內、執行 TCP 與應用層 gateway 的堡壘主機。
🧠 bastion 是城堡的『瞭望塔/堡壘』,集中防守。
為什麼快取(caching)對 DNS 的運作如此關鍵?
DNS 的命名階層與實體網路佈局的關係是?
MobileIP 中,home agent(HA)與 foreign agent(FA)的分工是?
05

真實案例:Ethernet、WiFi 與 Bluetooth

理解 Ethernet 的廣播式運作、MAC 位址、CSMA/CD 的載波偵聽、碰撞偵測與 back-off,以及交換式 Ethernet 的效能。

Ethernet:CSMA/CD 與碰撞處理

理解 Ethernet 的廣播式運作、MAC 位址、CSMA/CD 的載波偵聽、碰撞偵測與 back-off,以及交換式 Ethernet 的效能。

STEP 1

深度探秘

Ethernet 的運作核心

Ethernet 是廣播式的 contention bus

Ethernet 1973 年生於 Xerox PARC,是第一個高速區域網路。它的運作核心是 CSMA/CD

carrier sensing, multiple access with collision detection(載波偵聽、多重存取、碰撞偵測)

Ethernet 屬於 contention bus(爭用匯流排):所有主機共用單一傳輸媒介。管理媒介存取的協定叫 MAC(medium access control)。因為一條線連所有主機,MAC 同時兼了 data link 層與 network 層的功能。

通訊方式是廣播封包:所有站持續『聽』媒介,比對封包裡的目的地位址與自己的硬體位址,符合才收下,否則忽略。

每個網路介面有全球唯一的 MAC 位址(48 位元),由製造商從 IEEE 配發的範圍寫死進硬體。這套 MAC 位址後來也被 WiFi、Bluetooth 採用。

💡
關鍵

Ethernet 是廣播式 contention bus,用 CSMA/CD 管理共用媒介,每介面有全球唯一的 48 位元 MAC 位址。

STEP 2

生活妙喻

禮貌的會議室發言規則

CSMA/CD 像會議室發言禮儀

想像一間沒有主席的會議室,大家共用『空氣』這個媒介說話。為避免吵成一團,有三條規則:

  1. carrier sensing(先聽再說):想發言前先聽,有人在講就等,沒人講才開口。
  2. collision detection(邊講邊聽):開口後仍繼續聽,如果聽到自己的話和別人的混在一起,就知道『撞車』了(collision)。
  3. back-off(撞到先隨機冷靜一下):發生碰撞後,每個人各自隨機等一段時間再重講,避免大家又同時開口。若再撞,等待範圍加倍,最多重試 10 次。
flowchart TD
  A[想傳送] --> B{媒介有訊號嗎}
  B -->|有| A
  B -->|無| C[開始傳並邊聽]
  C --> D{偵測到碰撞}
  D -->|否| E[傳送成功]
  D -->|是| F[送干擾訊號 隨機 back-off 後重試]
  F --> A

妙處:完全不需要中央控制或同步,各站自己就能協調用線。

💡
關鍵

CSMA/CD 像無主席會議:先聽再說、邊講邊聽偵測撞車、撞到就隨機冷靜再重試,無需中央控制。

STEP 3

實用超能力

最小封包、效率與交換式 Ethernet

為什麼封包有最小長度

Ethernet 封包介於 64–1518 bytes。為什麼要有最小 64 bytes?因為訊號從一端傳到另一端要時間 τ。若封包太短,某站可能在另一端的封包還沒傳到前就傳完了,碰撞偵測不到,造成資料毀損卻無人察覺。最小長度確保碰撞一定被偵測到。

效率

碰撞的『機會窗口』是封包開始傳後的 2τ。對 1 公里纜線,τ 不到 5 微秒,碰撞機率低,通道利用率可達 80–95%。但超過 50% 利用率時,爭用造成的延遲就明顯了。

交換式 Ethernet:把爭用幾乎消滅

現代 Ethernet 多用 switch(而非 hub):每台主機獨享一個網段,網段上只有寄給它的封包。若流量來自單一來源,毫無爭用——效率近 100%、延遲穩定。爭用只可能發生在 switch 內部,而 switch 常能並行處理多個封包。

因此輕載的交換式 Ethernet 接近 100% 效率與穩定低延遲,連即時/QoS 關鍵應用也常成功採用。

💡
關鍵

最小封包長度保證碰撞被偵測;交換式 Ethernet 讓每台主機獨享網段、幾乎無爭用、效率近 100%。

🔆
生活妙喻:CSMA/CD ≈ 無主席會議室的發言禮儀:先聽再說、邊講邊聽、撞到隨機冷靜再重試

對應載波偵聽、碰撞偵測與 back-off,讓各站不需中央控制就能協調共用媒介。

🔆
生活妙喻:switched Ethernet ≈ 把大通鋪改成每人一間獨立房間,互不干擾

switch 讓每台主機獨享網段,幾乎無爭用,效率近 100%、延遲穩定。

本節字彙

CSMA/CD
載波偵聽、多重存取、碰撞偵測,Ethernet 管理共用媒介的 MAC 協定。
🧠 先 Carrier Sense(聽),Multiple Access(共用),Collision Detect(偵測撞車)。
MAC address
寫死進網路介面硬體的 48 位元全球唯一位址,由製造商從 IEEE 配發。
🧠 Medium Access Control 位址,硬體出廠就帶的『身分證號』。
back-off
碰撞後各站隨機等待一段時間再重傳,以避免再次同時碰撞的機制。
🧠 back off = 『退一步』,撞到先冷靜隨機等等。
CSMA/CD 中的『carrier sensing』具體指什麼行為?
為什麼 Ethernet 封包要有最小長度(64 bytes)?
兩站碰撞後若立刻同時重傳,會發生什麼?Ethernet 如何避免?

WiFi 與 Bluetooth:無線的挑戰

理解無線帶來的 hidden station、fading、collision masking 問題,以及 802.11 用 CSMA/CA 與 RTS/CTS 解決,並認識 Bluetooth WPAN。

STEP 1

深度探秘

無線為何不能照搬 Ethernet

無線打破了 Ethernet 的前提

IEEE 802.11(WiFi)把 Ethernet 的載波偵聽原理延伸到無線。但無線有個致命前提被打破:訊號強度在空間中並不均勻。這讓 Ethernet 的碰撞偵測失效,主要有三種狀況:

  • hidden station(隱藏站):A 與 D 都想送給基地台 E,但 A、D 之間有障礙物互相聽不到,於是 A 偵測不到 D 正在傳,貿然開口造成 E 端碰撞。
  • fading(衰減):電磁波依平方反比衰減,距離一遠就聽不到對方,載波偵聽與碰撞偵測雙雙失效。
  • collision masking(碰撞遮蔽):自己發出的訊號永遠比遠方訊號強得多,會蓋過遠方訊號,所以同時傳送也偵測不到碰撞。

WiFi 還用 infrastructure network(透過基地台/access point 連到有線網)或 ad hoc network(裝置之間臨時自組)兩種型態。

💡
關鍵

無線訊號強度不均,使 Ethernet 的碰撞偵測因 hidden station、fading、collision masking 而失效。

STEP 2

生活妙喻

CSMA/CA:先舉手預約發言

從 CD 到 CA:改用『預約』

既然『邊講邊聽偵測撞車』在無線行不通,802.11 改用 CSMA/CA(collision avoidance,碰撞避免),核心是預約時槽:用 RTS/CTS 一對短訊息:

  1. 想送的人先送 **RTS(request to send)**給接收方,註明要用多久。
  2. 接收方回 CTS(clear to send),重述這段時長。

效果:

  • 聽得到寄送方的站,會收到 RTS,記下這段時間別出聲。
  • 聽得到接收方的站,會收到 CTS,同樣安靜。
flowchart TD
  S[寄送方送 RTS 註明時長] --> R[接收方回 CTS 重述時長]
  R --> Q[兩端附近的站都安靜下來]
  Q --> D[寄送方安心傳資料]
  D --> ACK[接收方回 ACK 確認]

生活比喻:吵雜大廳裡你先舉手大聲說『我要講 30 秒』,附近的人就先閉嘴,連聽不到你但聽得到對方的人,也因為對方回應而安靜——這正好解決隱藏站與衰減問題。

💡
關鍵

CSMA/CA 用 RTS/CTS 預約時槽,讓收送兩端附近的站都先安靜,避開隱藏站與衰減造成的碰撞。

STEP 3

實用超能力

Bluetooth:低功耗的隨身網路

Bluetooth:口袋裡的 WPAN

**Bluetooth(IEEE 802.15.1)**是 WPAN(無線個人區域網路),1999 年由 Ericsson 開發,用來在隨身裝置間傳低頻寬的數位語音與資料——手機、平板、耳機、鍵盤之間的連線都是它。

它的定位和 WiFi 不同:

比較 WiFi(802.11) Bluetooth(802.15.1)
類型 WLAN WPAN
範圍 約 150 m 約 10–30 m
頻寬 高(可達 54 Mbps 以上) 低(約 0.5–2 Mbps)
目的 取代有線 LAN、上網 連接隨身個人裝置
耗能 較高 低功耗

在典型的 NAT 家庭網路圖中,WiFi 裝置透過 access point 連到 router 上網,但 Bluetooth 裝置通常不直接接上 router,因此無法直接上 Internet——它的舞台是裝置與裝置之間的近距連線。

同家族還有 ZigBee(802.15.4),給更低頻寬、更省電的感測器網路。

💡
關鍵

Bluetooth 是低功耗、短距、低頻寬的 WPAN,專注於隨身裝置間連線,與主打上網的 WiFi 定位不同。

🔆
生活妙喻:CSMA/CA 的 RTS/CTS ≈ 吵雜大廳先舉手大聲說『我要講 30 秒』,附近的人就先安靜

用 RTS/CTS 預約時槽讓收送兩端附近的站都閉嘴,解決聽不到對方的隱藏站問題。

🔆
生活妙喻:hidden station ≈ 兩人隔著一根柱子都想跟同一個人講話,彼此看不到而同時開口

兩站互相偵測不到對方訊號,卻同時傳給同一接收方而造成碰撞。

本節字彙

CSMA/CA
載波偵聽、多重存取、碰撞避免;802.11 用 RTS/CTS 預約時槽避免無線碰撞。
🧠 把 CD 的 Detect(偵測)換成 Avoid(避免),無線改成事前預約。
hidden station
兩個互相偵測不到對方的站,可能同時傳給同一接收方而造成碰撞。
🧠 hidden = 『藏起來』,彼此藏在對方的偵測範圍外。
Bluetooth
低功耗、短距的無線個人區域網路(WPAN),用於連接隨身裝置。
🧠 藍牙,把口袋裡的小裝置『牙牙學語』地連起來。
為什麼 Ethernet 的碰撞偵測(CD)無法直接搬到無線網路?
『hidden station』問題的本質是什麼?
802.11 的 RTS/CTS 機制如何幫助避免碰撞?