🚀 學習筆記:通訊 (Communications, 9645) 🚀
各位未來的電腦科學家好!本章節至關重要,因為我們將從單台電腦的內部運作,轉向探討電腦之間如何進行「對話」——這正是整個互聯網的基石!別擔心「波特率 (baud)」或「非同步 (asynchronous)」這些術語聽起來很專業,我們會用簡單的日常類比來拆解它們。讓我們一起來看看數據是如何傳輸的吧!
3.14.1 通訊 (Communications)
3.14.1.1 通訊方法:數據如何移動
序列傳輸 (Serial) 與 平行傳輸 (Parallel)
當電腦向另一台設備發送數據(一系列位元,例如 10110010)時,主要有兩種選擇:
1. 平行傳輸 (Parallel Transmission):想像一條多車道高速公路。
- 數據通過多條導線同時發送(例如,8 位元透過 8 條獨立導線同時傳送)。
- 優點:在短距離內非常快速,因為一個完整的位元組可以在一個時鐘週期內傳送完畢。
- 缺點:在長距離下,時序誤差會成為主要問題。這稱為偏移 (skew),即由於導線長度不完全相同,導致位元抵達的時間不一致。此外,它還需要更昂貴且笨重的線纜。
2. 序列傳輸 (Serial Transmission):想像一條單車道公路。
- 數據透過單一導線或通道,一次一個位元地發送。
- 優點:在長距離下非常可靠且成本低廉。由於所有位元都走同一條路徑,不存在偏移風險。
- 缺點:在極短距離下,傳輸速度比平行傳輸慢。
💡 現實生活中的例子:
你每天都在使用序列傳輸!USB (通用序列匯流排) 就是一種序列技術。乙太網路線 (Ethernet) 也是序列傳輸。儘管它看起來較慢,但其在長距離傳輸下的可靠性,使其成為網絡連接和外部設備的首選。
重點總結:序列傳輸適用於長距離和追求可靠性的場合;平行傳輸則適用於短距離、內部的任務(例如從 CPU 向內部 RAM 發送數據)。
同步 (Synchronous) 與 非同步 (Asynchronous) 數據傳輸
確定了使用多少條導線後,我們需要決定如何控制數據傳輸的時間。
1. 同步傳輸 (Synchronous Transmission):
- 數據以大型區塊或資料流形式發送。
- 發送端和接收端共享一個共同的時鐘訊號 (clock signal) 或時間參考。接收端根據此時鐘精確知道下一個數據區塊何時到達。
- 數據塊之間不需要額外的起始位元或停止位元,因此對於大量數據傳輸而言非常有效率。
- 類比:韻律泳隊。每個人都隨著同一個節拍器行動。
2. 非同步傳輸 (Asynchronous Transmission):
- 數據以單個位元組或小數據包形式發送。
- 發送端和接收端不共享共同時鐘。每一塊數據的時間安排都是獨立決定的。
- 這需要額外的控制位元(起始位元 Start bit 和 停止位元 Stop bits)來定義數據幀。
- 類比:發送一條文字訊息。每則訊息都是獨立的,並附帶其自己的定址資訊。
起始位元與停止位元的目的
在非同步通訊中,這些額外的位元對於接收端正確解讀數據至關重要:
- 起始位元 (Start Bit):這是一個特殊訊號(通常為 0),在實際數據位元組之前發送。其目的是立即將接收端的計時機制(其內部時鐘)與發送端的時鐘同步。它告訴接收端:「一個新的數據位元組現在要進來了!」
- 停止位元 (Stop Bit(s)):這是一個在數據位元組之後立即發送的訊號(通常為 1 個或多個位元)。
- 它告訴接收端:「這個位元組結束了。」
- 在舊式或較慢的系統中,它還提供必要的時間間隔,讓接收端處理剛收到的位元組,並準備迎接下一個潛在的起始位元。
序列/平行 (Serial/Parallel) 決定了「使用多少條導線」(物理配置)。
同步/非同步 (Synchronous/Asynchronous) 決定了「如何控制時間」(邏輯結構)。
3.14.1.2 通訊基礎:效能衡量
當我們討論網絡效能時,會使用幾個關鍵術語來衡量速度、容量和延遲。
關鍵定義
掌握以下術語的精確定義非常重要:
1. 協定 (Protocol):
是一套共同約定的規則和標準,規範設備之間如何發送和接收數據。協定確保所有設備都能使用同一種「語言」。
例子:TCP/IP, HTTP。
2. 波特率 (Baud Rate):
在傳輸介質上,每秒發生的訊號事件(或符號變更)數量。
類比:紅綠燈每分鐘狀態改變的次數。
3. 位元率 (Bit Rate):
每秒傳輸的位元數 (bps)。這衡量的是數據移動的*實際*數量。
類比:每秒經過某一點的汽車實際數量。
4. 頻寬 (Bandwidth):
數據在網絡路徑上傳輸的最大速率。通常被形象化為「水管的大小」。
注意:通常以每秒位元數 (bps) 為單位,代表容量上限。
5. 延遲 (Latency):
在發出傳輸指令後,到數據傳輸開始前的時間延遲。本質上是第一個位元從源頭傳送到目的地所需的時間。
類比:快遞的送貨時間——從點擊「發送」到接收者開始收到數據之間的延遲。
波特率 vs. 位元率:關鍵區別
這是學生最容易混淆的地方。
核心區別在於:位元率可以高於波特率。
- 波特率衡量訊號*變更*了多少次狀態。
- 位元率衡量實際承載了多少個*位元*。
為什麼會有差別?先進的編碼技術(如現代數據機所使用的技術)可以在單次訊號變更(符號)中編碼多於一個位元的數據。
例子:如果一次訊號變更承載 4 個位元(例如使用 16 種不同的電壓級別),且訊號每秒變更 1000 次(1000 Baud):
位元率 = 1000 (Baud) $\times$ 4 (每個訊號變更承載的位元數) = 4000 bps。
記住:始終專注於位元率作為衡量數據吞吐量的真實標準。如果未特別說明,1 Baud 通常等於 1 bps,但在高速通訊中,位元率往往遠高於波特率。
位元率與頻寬的關係
位元率直接與頻寬成正比。
將頻寬想像為通訊通道的理論最大容量。位元率則是實際達到的速度。較大的頻寬允許較高的潛在位元率(每秒可傳輸更多數據)。如果你增加了頻寬(把「水管」加粗),你就能增加位元率(泵送更多數據通過)。
你知道嗎?
「Baud」一詞源自 Émile Baudot,他發明了早期形式的電報碼。這個術語的存在時間比現代數位通訊還要久遠!
✅ 通訊總結重點
- 序列傳輸是網絡首選,因為它避免了長距離下的偏移 (skew)(時序誤差)。
- 非同步傳輸需要起始/停止位元來管理每個位元組的時序。
- 位元率 (bps) 是實際數據速度;波特率 (Baud Rate) 是訊號變更速度。位元率 $\ge$ 波特率。
- 頻寬是容量上限,直接限制了可實現的位元率。