歡迎來到網絡世界!
在本章中,我們將深入探討互聯網(The Internet)。我們每天都在使用它來串流影片、發送訊息和搜尋資料,但你有沒有想過,數據到底是如何從加州的伺服器傳送到你身處英國(或香港)的手機呢?如果一開始覺得涉及太多技術細節,請別擔心——我們將使用你已經熟悉的類比,將這些內容拆解成簡單易懂的片段。
看完這些筆記後,你將明白螢幕背後的「魔法」:數據包(Packets)是如何移動的、安全性是如何保障我們的,以及不同的設備是如何使用同一種語言溝通的。
1. 互聯網的結構
互聯網本質上是一個「網絡的網絡」(network of networks)。它並非單一的實體,而是數以百萬計的私人、公共、學術及政府網絡互相連接而成。
分組交換(Packet Switching)
當你傳送一個大型檔案(例如照片)時,它並不會作為一個龐大的數據塊發送。相反,它會被拆分成稱為數據包(packets)的小塊。這個過程稱為分組交換(packet switching)。
類比:想像你想通過郵寄方式將一幅 1,000 片的拼圖寄給朋友。你不會直接寄出整盒拼圖(因為可能會被卡住或弄丟),而是將每一片拼圖分別放入獨立的信封中並寫上地址。它們可能會走不同的路線,但最終都會到達朋友的家,然後重新組合起來。
數據包的主要組成部分:
1. 標頭(Header):包含發送者的 IP、接收者的 IP、數據包編號(例如 50 個中的第 1 個)以及所使用的協議。
2. 有效載荷(Payload):實際傳送的數據(即「拼圖碎片」)。
3. 尾部(Trailer):包含錯誤檢查數據(校驗和 checksum),以確保數據包在傳輸過程中沒有損壞。
路由器(Routers)與網關(Gateways)
這些數據包是如何找到路的?它們依靠路由器(routers)和網關(gateways)。
- 路由器:一種查看數據包上的 IP 地址並決定其到達目的地最佳路徑的設備。
- 網關:當兩個網絡使用不同的協議(protocols)時使用。它會進行數據「翻譯」,讓不同的網絡能夠互相理解。
快速回顧:分組交換非常高效,因為如果其中一條路徑繁忙或中斷,數據包可以直接走另一條路!
2. 地址與命名
就像你的房子有郵政編碼一樣,互聯網上的每個設備和資源都需要一個唯一的地址。
IP 地址與完整網域名稱(FQDN)
電腦喜歡數字,而人類喜歡文字。這就是為什麼我們有不同的方式來標識事物:
- IP 地址(IP Address):一個唯一的數值地址(例如 192.168.1.1)。
- 域名(Domain Name):人類友好的版本(例如 google.com)。
- 完整網域名稱(Fully Qualified Domain Name, FQDN):特定電腦或「主機」的完整名稱(例如 www.aqa.org.uk)。
域名系統(DNS)
當你在瀏覽器中輸入 www.youtube.com 時,你的電腦其實並不知道它在哪裡。它必須向 DNS 伺服器查詢。
步驟流程:
1. 你在瀏覽器中輸入 URL。
2. 你的瀏覽器將域名發送到 DNS 伺服器。
3. DNS 伺服器在其資料庫中查找與該名稱關聯的 IP 地址。
4. DNS 伺服器將 IP 地址發回給你的瀏覽器。
5. 你的瀏覽器現在可以使用該 IP 直接連接到目標伺服器。
你知道嗎?如果一台 DNS 伺服器不知道該地址,它會詢問另一台「更高級別」的 DNS 伺服器。這是一個全球性的層級系統!
互聯網註冊管理機構(Internet Registries)
互聯網註冊管理機構是負責追蹤哪些 IP 地址和域名分配給誰的組織。我們需要它們來確保沒有兩個人同時擁有同一個域名或使用同一個公共 IP 地址。
重點總結:DNS 就像互聯網的「電話簿」。它將我們能記住的名字轉換成電腦能使用的數字。
3. TCP/IP 協議堆疊
為了讓不同類型的電腦能夠溝通,它們必須遵守一組規則,稱為協議(protocol)。TCP/IP 堆疊(TCP/IP Stack)是互聯網上最重要的規則集。它被組織成四個層級。
記憶小技巧:使用 A T N L 來記憶這些層級(**A**ll **T**igers **N**eed **L**unch):
- 應用層(Application Layer):應用程式所在的地方(例如你的瀏覽器)。使用 HTTP, FTP, SMTP 等協議。
- 傳輸層(Transport Layer):將數據拆分成數據包,並確保它們無錯誤地送達(使用 TCP)。
- 網絡層(Network Layer):添加來源和目的地的 IP 地址。路由器就在此層運作。
- 鏈路層(Link Layer):處理物理連接(電纜、Wi-Fi)並使用 MAC 地址。
Socket 與連接埠(Ports)
Socket(套接字)就像通往電腦上特定應用程式的「門」。它是由 IP 地址和連接埠號碼(Port Number)組合而成的。
\( \text{Socket} = \text{IP Address} + \text{Port Number} \)
- 常用連接埠(Well-known Ports):(0–1023) 用於標準服務。例如,連接埠 80 用於 HTTP,連接埠 25 用於 SMTP(電子郵件)。
- 客戶端連接埠(Client Ports):你的設備用於從伺服器接收回傳數據的臨時連接埠。
類比:如果 IP 地址是公寓大樓的地址,那麼連接埠號碼就是住著特定人物(應用程式)的特定門牌號碼。
4. IP 標準:IPv4 與 IPv6
IPv4 使用 32 位元,容許大約 40 億個地址。信不信由你,由於現在有太多手機、熱水壺和燈泡都連接到互聯網,這些地址實際上已經用完了!
IPv6 的引入就是為了解決這個問題。它使用 128 位元,提供的地址數量比地球上所有沙粒還要多!它以十六進制編寫,以便於人類閱讀。
公共 IP 與私有 IP 地址
- 公共 IP(Public IP):可在整個互聯網上路由。每個家庭通常由供應商分配一個唯一的公共 IP。
- 私有 IP(Private IP):用於你的家庭網絡內部。你的手機和筆記型電腦擁有私有 IP(例如 192.168.0.5),這些 IP 在外部世界是看不見的。
NAT 與 DHCP
- DHCP(動態主機設定協議):當設備加入網絡時自動為其分配 IP 地址。就像飯店前台在你入住時給你房卡一樣。
- NAT(網絡地址轉換):當你存取互聯網時,路由器會使用 NAT 將你的私有 IP「隱藏」在單一公共 IP 之後。
5. 互聯網安全
互聯網可能是一個危險的地方!我們使用多種方法來保持安全。
防火牆(Firewalls)
防火牆位於私人網絡和互聯網之間,負責監控流量。
- 數據包過濾(Packet Filtering):檢查每個數據包的標頭,如果它們來自被禁止的 IP 或連接埠,則將其丟棄。
- 代理伺服器(Proxy Server):充當中介人。你的電腦向代理伺服器請求網頁;代理伺服器為你獲取內容。這隱藏了你的內部網絡資訊,使外部伺服器無法直接接觸。
- 狀態檢測(Stateful Inspection):不僅查看數據包,還會查看其上下文。它會檢查該數據包是否屬於你已發起的現有安全會話的一部分。
加密(Encryption)
- 對稱加密(Symmetric Encryption):發送者和接收者使用相同的金鑰來加密和解密。(就像一把鑰匙開一個實體日記本)。
- 非對稱加密(Asymmetric Encryption):使用公開金鑰(Public Key)(與所有人共享以加密數據)和私人金鑰(Private Key)(由擁有者保密以解密數據)。
惡意軟件:病毒、蠕蟲與特洛伊木馬
- 病毒(Virus):一種依附於檔案的程式碼片段,需要人類執行/開啟才能傳播。
- 蠕蟲(Worm):一個獨立的程式,可以自我複製並在網絡上自動傳播,無需人類協助。
- 特洛伊木馬(Trojan):偽裝成有用東西(如「免費遊戲」)的惡意軟件,誘騙你安裝它。
重點總結:安全是關於多層次的防護。防火牆將壞人擋在外面,加密保持數據機密,而數位簽章則證明訊息的真實性。
6. 現代網絡技術
CRUD 與 REST
大多數網絡應用程式對數據執行四種操作:Create(建立)、Retrieve(檢索)、Update(更新)和 Delete(刪除)(簡稱 CRUD)。
REST 是一種將這些操作映射到網絡指令(HTTP)的方法:
- POST → 建立(Create)
- GET → 檢索(Retrieve)
- PUT → 更新(Update)
- DELETE → 刪除(Delete)
JSON 與 XML
這些是在伺服器和網絡應用程式之間傳輸數據的方式。
- JSON:現代、輕量級,且非常容易被電腦(和人類)閱讀。
- XML:較舊,使用像 HTML 那樣的「標籤」。它比較「冗長」,佔用更多頻寬。
瘦客戶端與胖客戶端(Thin vs Thick Clients)
- 瘦客戶端(Thin Client):大部分處理發生在伺服器端。你的設備僅用於顯示結果(例如,使用瀏覽器查看 Gmail)。
- 胖客戶端(Thick Client):大部分處理發生在你的設備上。它可能可以離線運作(例如,安裝在你電腦上的電子遊戲)。
最終總結:互聯網是一個複雜的規則堆疊(TCP/IP)、地址系統(IP/DNS)和安全措施(防火牆/加密)的集合,讓我們能夠在毫秒內將數據(JSON/REST)傳遍全球!