剛開始乙太網是用一條『同軸電纜』當作信號訊息傳送的骨幹,它的網路拓撲就像一個『丰』字,稱之為匯流排 BUS,是個載運『信號波』的公車站。由於每一個連接到 BUS 的節點 = 接點 NODE,都可用作『收發』點,那就必須考慮對應的通訊機制。當然一個節點發送,每個接點都同時接收沒有什麼問題;然而多個節點同時發送,就會產生信號『碰撞』以致訊息錯誤。這些特性的總稱叫做 CSMA/CD ── CS = 載波偵聽、MA=多路存取和CD=碰撞察覺 ──,可以說 BUS 上廣告著 ALOHA 在這裡!
由於任一節點的收發都是連通的,自己發送的自己也可以接收,這稱為 loopback 回送;在 Raspbian 裡,就是你用 ifconfig 命令看到的 lo ,它的 IP 地址通常是 127.0.0.1 ,這是 IPv4 所保留的 256 個地址區塊 127.0.0.0/8 ── 127.0.0.0 到127.0.0.255 ──之一。其次任一個節點都可以接收所有其它接點的信號,不管是不是發送給它的;通常乙太網卡驅動程式會過濾掉這些不是自己應該接收的訊息,但是你也可以進入所謂混雜模式 Promiscuous mode 去監聽所有的收發。再者,乙太網使用自己全球唯一的 48 位元 MAC 媒介存取控制位址,約為二百八十兆個地址來區別連上它的整個世界不同的節點。不知是夠是不夠??
碰撞察覺的載波偵聽多路存取 CSMA/CD 技術要如何實現通訊機制呢?藉著節點收發守則︰
一、開始發送前── 偵聽到線路空閒才啟動傳輸,否則移至第四步
二、發送──即使察覺碰撞,繼續發送一段最小的時距,用以確保 所有其它節點都能察覺碰撞,再移至第四步
三、發送成功──回報上層的網路協定傳送成功,結束發送模式。
四、忙線中──等待,直至偵聽到線路空閒
五、擲骰子──線路雖已進入空閒狀態 ,必須等待隨機的一段時間,才可移至第一步,假如超過約定的最大嘗試次數,就走下一步吧
六、失敗── 回報上層的網路協定傳送失敗,結束發送模式
咦!說的不是收發守則嗎?怎們沒講到『接收』呢?節點總是在接收的,就像耳朵聽的到自己說話一樣;更何況以對談的目的而言,一大半都是聽別人講話,所以講的人需要懂得『禮貌』,如果大家『搶著說』那就一團混亂了。哦!愛因斯坦不是說『上帝不擲骰子』嗎?為什麼要擲骰子呢?由於『等待多久』是很難決定的,所以才把它交給能確定『隨機』的上帝!!
早先乙太網因為使用同軸電纜之故,為了確保信號收發品質,必須使用適當的『終端電阻』。這使的這個 BUS 增加減少節點困難,一旦某一個接點故障,檢查起來非常費事,整個 BUS 多半得停下來,就像丰貌的『含羞草』一碰就收起來了。所以後來保留了 ALOHA 守則 的精神,把網路拓樸就從匯流排改成了以『HUB』集線器為中心較簡便好用的『星形網路』了!現在集線器又已被交換機 Network switch 所取代。
那要怎麽把兩個乙太網介接起來呢?用丰 + 丰就能加成豐字嗎?假如設想一種東西就叫做『橋接器』吧!把它接上把左右乙太網兩邊各選的一個節點,它能把左邊聽到的,向右邊轉說,將右邊聽到的,往左邊重複。因著 ALOHA 守則的作用,兩個乙太網就被合而為一了,你網中有我,我網中有你!!
─── …待續,啃一塊唄 K TCPIP!!下 ──