CDN 是什麼?一次搞懂 CDN 的用途和三大好處

古古

2025/03/18


在網路全球化的趨勢下,CDN 現今已經是一個很重要的技術了,但是 CDN 的用途到底是什麼?以及使用 CDN 的好處有哪些?這篇文章我們就來詳細了解一下吧!

什麼是 CDN(內容傳遞網路)? #

所謂的 CDN,他的全稱是 Content Delivery Network,中文翻譯為「內容傳遞網路」,而 CDN 的用途,就是 「將靜態資源(ex: 圖片、影片、JavaScript 套件)部署到全球化的節點上,讓當地的居民可以更快速的取得到這些內容」。

不過,在了解 CDN 所帶來的好處之前,大家要先對「海底電纜」有一點基本的認識,因此下面我們就先來介紹一下什麼是海底電纜,再回頭來說明 CDN 所帶來的好處有哪些。

海底電纜的故事 #

大家有沒有曾經好奇過,為什麼我們人明明站在台灣,但是卻能夠看到美國網友所上傳的影片或梗圖呢?這確實是透過「網路」來傳遞沒錯,但是這個「網路」,他到底是如何從美國發送到台灣的?是透過衛星嗎?還是透過高壓電?還是說是透過微波通訊來傳遞??

特別像是台灣這種海島來說,我們四周都是海,感覺要拉高壓電也不太可能,全部透過衛星來傳遞成本也太高了,因此所謂的「海底電纜」,就是台灣主要的對外網路連線方式。

大家可以把「海底電纜」想像成是中華電信在台灣四周海域中所鋪設的光纖,每一條光纖會長得像是下面這樣,也就是因為有鋪設這些海底電纜,因此我們的網路訊號才可以傳遞出去,外部的網路訊號也才可以傳遞進來。

而其實不光是中華電信,很多大型企業如 Google、Amazon…等,也都會鋪設自己的海底電纜!像是 Google 一直以來都有海底電纜的鋪設計畫,下圖就是 Google 目前為止所鋪設的海底電纜。

而 Google 自己鋪電纜的好處是可以拉一條專線給 Google 自己的服務使用,確保未來不會因為各種因素(ex: 地緣政治)導致全球化的網路失效。

所以在現今的網路時代下,我們人處在台灣卻可以刷著 YouTube、Instagram,觀看其他國家的人所上傳的影片,背後就是因為有海底電纜在進行網路數據的傳輸。

海底電纜的限制 #

而說到這裡,就不得不提一下海底電纜的一些物理限制了。

因為海底電纜畢竟還是屬於光纖網路,因此 「兩者距離越長,傳輸的時間就要越久」,這個完全是物理上的限制,現今沒有更好的方式可以解決。

所以換句話說,即使台灣和美國之間有一條海底電纜,能夠把彼此的網路串接在一起,但是彼此傳輸的時間仍舊需要很久,可能你人在台北,傳一張圖片給高雄的朋友只要 1 秒,但是傳給海的另一邊的美國朋友卻需要 20 秒,這個就是海底電纜的網路傳輸限制,專業術語稱為 「latency(延遲)」

因此簡單的說的話,物理距離越遠,你們之間的網路 latency 就會越高,因此就算全球化的海底電纜能夠將你我連接在一起,但是這個使用者體驗其實是不太好的。

所以為了解決這個問題,CDN 就出現了!!

CDN 如何解決網路傳輸的限制? #

基於上述的限制,現在我們知道 「物理距離越遠,傳輸的時間就要越久」,那麼,我們是不是只要把圖片放在離使用者近一點的地方,這樣子使用者就可以更快的拿到那張圖片了?沒錯!!這個就是 CDN 的核心邏輯,也就是 「將靜態資源(ex: 圖片、影片、JavaScript 套件)部署到 全球化 的節點上,讓 當地的居民 可以更快速的取得到這些內容」。

舉例來說,當 Netflix 製作完一部新的影集之後,他除了把這個影集上傳到美國的主 server 之外(稱為 Origin Server),他還可以把這部影集也上傳到其他地區的 server(稱為 Edge Server),譬如說日本、台灣、新加坡、澳洲…等。

因此到時候,使用者就可以「就近」挑選離他最近的 Edge Server,並且可以直接從該 Edge Server 中串流一模一樣的影集觀看,因此就可以達到「降低網路傳輸時間」的好處了!

所以透過 CDN,Netflix 就可以在世界各地提供高品質、無延遲的影片觀看服務了!

補充:使用 CDN 的注意事項 #

不過在這邊要再特別提醒一下,只有「靜態資源」(ex: 圖片、影片、JavaScript 套件…等檔案)才能夠放在 CDN 上,借助 CDN 的力量擴散到全世界,因此像是後端程式的動態處理,這些是沒辦法放到 CDN 上面的,只能夠自己在雲端中部署。

所以基本上在後端開發中,最常見的部署到 CDN 上的就是影片和圖片,其他像是前端的 JS 等相關檔案,因為後端不太會接觸到,所以比較少需要處理這部分。

使用 CDN 的三大好處 #

了解了 CDN 的用途和限制之後,接下來我們也可以來看一下使用 CDN 的三大好處。

使用 CDN 有三大好處,分別是:

  1. 降低網路延遲、降低頻寬成本
  2. 提升網站可靠性、平衡流量
  3. 防禦資安 DDoS 攻擊

1. 降低網路延遲、降低頻寬成本 #

使用 CDN 的第一個好處,就是可以降低網路延遲和頻寬成本。

降低網路延遲其實就是 CDN 當初被發明出來的目的,也就是上面所介紹的內容,透過將靜態資源部署在「全球化」的 Edge Server 上,就可以讓「當地的居民」就近取得到相關內容,降低網路傳輸的延遲,進而提升使用者體驗。

而且也因為有了 CDN 之後,台灣人就可以就近取得影片,因此 Netflix 就不需要每次都把影片從美國傳到台灣,也就可以降低海底電纜的傳輸頻寬成本了。

2. 提升網站可靠性、平衡流量 #

使用 CDN 的另一個好處,就是可以提升網站的可靠性、以及平衡相關的流量。

舉例來說,假設 Netflix 在台灣的 CDN 節點掛掉了,那就可以趕快把台灣的流量轉移到附近地區(ex: 日本、香港、新加坡),確保台灣的 Netflix 用戶能夠繼續觀看劇集(雖然這不可避免地會多增加一些網路延遲,但是總比完全不能看好)。

除此之外,即使台灣的 CDN 節點沒掛掉,Netflix 也可以根據台灣的尖峰流量,動態的調整香港的 CDN 來協助分攤,因為有的時候可能台灣某一陣子很瘋某個劇,流量就會大量上升,因此這時候就可以讓附近的 CDN 一起幫忙分擔流量,降低台灣 CDN 節點的負擔。

3. 防禦資安 DDoS 攻擊 #

使用 CDN 的第三個好處,是可以防禦資安相關的 DDoS 攻擊。

不過這部分我其實還不太熟,因此只能先貼相關的連結給大家參考(Cloudflare 官方的 CDN SSL/TLS | CDN security )。

其實資安的部分算是使用 CDN 的附加好處啦,因為這跟 CDN 最一開始要解決的問題不太一樣,算是大家先因為「降低網路延遲」的原因用了 CDN 之後,才發現 CDN 在資安的表現上也很讚這樣,因此目前也常常會透過 CDN,來避免相關的資安攻擊。

更新:以下是來自 Kuma 大大使用 CDN 防禦 DDoS 的實務經驗分享!大家有興趣也可以追蹤他的 YouTube 頻道: Kuma 老師的軟體工程教室

DDoS 我可以粗淺的補充一下,以前我前公司被打爆勒索過。

如果你把 domain name 直接指到你的伺服器,當網路上的惡意人士要攻擊你的服務,只要一直大量發垃圾請求過來,你的機器與網路忙著處理這些垃圾請求就飽了,自然服務就斷了。

CDN 提供的防禦原理說到底就是頻寬夠寬,我們讓整套機器躲到 CDN 後面去,外界只能透過 CDN 存取我們提供的資料,沒有人知道我們機房實際位址在哪。這時惡意人士要來 DDoS ,他首先要面對 CDN 自帶的超大量頻寬。

要知道要發攻擊別人的封包也是要錢的。像 Cloudflare 這種大公司的防禦頻寬,一般人的財力根本打不下來。既然花了錢又打不下來,那本益比一算,我當然就選擇打別人去了。

說到底就是口袋深不深跟拳頭粗不粗的問題。

CDN 總結 #

所以總結上面的介紹,所謂的 CDN,他的全稱是 Content Delivery Network,中文翻譯為「內容傳遞網路」,而 CDN 的用途,就是 「將靜態資源(ex: 圖片、影片、JavaScript 套件)部署到全球化的節點上,讓當地居民可以更快速的取得到這些內容」。

而在使用了 CDN 之後,可以有三大好處:

  1. 降低網路延遲、降低頻寬成本
  2. 提升網站可靠性、平衡流量
  3. 防禦資安 DDoS 攻擊

也因為 CDN 可以說是在現今全球化的浪潮下,必備的技術和服務,因此了解 CDN 實際要解決的問題、以及他的來龍去脈,可以更好的理解 CDN 的設計邏輯。

如果大家對於 CDN 有興趣的話,後續也可以參考 ByteByteGo 錄製的這支影片 What Is A CDN? How Does It Work? (英文),裡面不只有提到本文的內容,還有補充 CDN 是如何「就近」尋找附近的節點的技術,大家有興趣也可以再研究一下~

結語 #

這篇文章我們先介紹了什麼是海底電纜,也介紹了 CDN 實際上要解決的問題是什麼,最後也補充了使用 CDN 的三大好處,希望可以幫助大家對 CDN 有一個比較全面的了解。

如果你對後端技術有興趣的話,也歡迎免費訂閱 《古古的後端筆記》電子報 ,每週二為你送上一篇後端技術分享,那我們就下一篇文章見啦!

補充:我開設的 Spring Boot 零基礎入門 Spring Security 零基礎入門 GitHub 免費架站術 已在 Hahow 平台上架啦!輸入折扣碼「HH202503KU」即可享 85 折優惠。

免費訂閱《古古的後端筆記》電子報

每週二學習後端技術,和 3100 人一起變強💪