方格精選

你有沒有想過實際網路資訊是如何傳輸的?-用白話範例說CSMA/CA與CSMA/CD給你聽

更新於 發佈於 閱讀時間約 7 分鐘
在學習網際網路技術中,不管是有線技術(e.g. 802.3 ethernet)或是無線技術(e.g. 802.11 wireless nertwork)都必須要了解「網路設備是如何把訊息傳送到實體媒介上」的觀念,而這也就是CSMA/CA與CSMA/CD存在的意義。
Collision Detection 與 Collision avoidance的不同
CSMA的全名為Carrier Sense Multiple Access,中文翻譯為載波偵聽多路存取(非常直白),Carrier Sense中的Carrier指的是媒介中傳遞的訊號,所以整體白話的來說就是「監聽媒介上的訊號」。那在什麼時候監聽呢?監聽則會發生在傳輸前與傳輸的過程中。那Multiple Access 則指的是「多個裝置可以同時存取媒介」
那我們了解完了CSMA的意思之後,那CA(碰撞避免)跟CD(碰撞偵測)的差異又是什麼?碰撞偵測的機制應用在於那些「容易聽到碰撞的網路環境」,比如說以同軸電纜或是雙絞線基於乙太網路(ethernet)技術架設的區域網路(大家都連在同一條線上),只要監聽媒介,就可以聽到傳輸訊號;而碰撞偵測則適用於那些「不容易聽到碰撞的網路環境」,比如說無線網路,可能會發生像是隱藏節點這樣的問題。
那這設計這兩個機制的前提都是一樣的,只為了解決一個問題,也就是:
如何讓多台裝置,在一個共享的媒介上有效的存取資料
那我們就來簡單了解CSMA/CD以及CSMA/CA的機制吧!

CSMA/CD

CSMA/CD的步驟

  1. 首先在電腦或網路設備要傳送資料前,先偵測媒介上是否有訊號傳輸,如果有訊號,就等到訊號結束;如果沒有就開始傳輸訊號。
  2. 傳輸訊號的同時也要監聽是不是有其他訊號同時傳送而導致訊號碰撞。
  3. 如果發生碰撞了,則馬上停止傳送,並且接著傳送一個不是資料訊號的一個「擾亂訊號」(Jamming signal),讓訊號碰撞持續,此用意在於讓所有連接同樣共享媒介的裝置都可以明確的聽到訊號碰撞的發生;而如果沒有發生碰撞,直到最後一個位元傳送完畢後則代表傳送成功。
  4. 那在傳送完擾亂訊號後,傳送裝置則會隨機的等待一段時間再重新由第一個步驟開始,而每碰撞一次,代表資料沒有成功傳送,就會裝置內的計數器就會加一,直到嘗試失敗16次後就不再傳送,則代表此次傳送失敗。
如果以好懂一點的比喻來說,這樣的機制如果應用在一個多人語音群聊的通話裡面大概會像這樣:
  1. 我想要講話,我先聽有沒有人在講話,如果有人講我就不講,沒有人講話我就開始講。
  2. 我在講話的時候,我同時也在聽別人有沒有插嘴
  3. 如果有人插嘴,我聽到了,我就不會繼續話題,然後接著跟大家說「請大家不要同時講話好嗎?」,而那個插嘴的人聽到也會中斷話題然後也說「請大家不要同時講話喔!」。
  4. 然後我跟那個講話的人都會等一小段時間(Backoff time),然後我就會再聽看看有沒有人要講話,然後嘗試繼續剛剛的話題。如果我一直被打斷超過16次,我就會不爽,就不會想要繼續剛才的話題了

CSMA/CA

無線網路的基本概念

在我們實際開始說明步驟之前,我們需要說明幾個無線網路與有線網路的差別
無線網路因為是透過空氣中的電波傳輸資料,相較於有線網路的傳輸媒介,無線電波更容易受到干擾,因此為確保正確傳輸,每當傳輸一個裝置收到另外一個裝置傳送的資料,他就要回傳一個「確認封包」(Ack Frame)給發送的裝置,讓發送裝置知道他有成功傳送,反之則表示沒有成功傳送
Atomic operation
有這樣基本的觀念後,讓我們來看看CSMA/CA有什麼不同。

CSMA/CA的步驟

  1. 跟CSMA/CD一樣,首先在電腦或網路設備要傳送資料前,先偵測媒介上是否有訊號傳輸,如果有訊號,就等到訊號結束;而如果沒有偵測到訊號,我會等一個訊框間隔時間(IFS, Interframe space),如果還是沒有聽到任何訊號才會嘗試傳送
  2. 那在傳送的機制也相當特別,因為不是直接傳送,而是再隨機倒數一個時間,當我倒數的時間到了,我才真正的把訊號傳送到媒介上。也就是透過這個IFS以及隨機等待的時間(Backoff time),來嘗試做到「碰撞避免」。
  3. 那在傳送的同時,傳送裝置也會同時監聽,但是當封包傳送後就會完整傳送不會中斷。另外在封包內會保留一個「通道保留時間」(NAV),用意是讓聽到這一個封包的裝置會知道他該停止傳送多久時間
  4. 然後當傳送完成後,傳送裝置會等待一小段時間接收確認封包(Ack),如果有收到,就表示傳送成功,反之則沒有,則裝置會再回到步驟一再次嘗試。而每一次傳送過後沒有收到確認封包,代表資料沒有成功傳送,就會裝置內的計數器就會加一,直到嘗試失敗一定次數後就不再傳送,則代表此次傳送失敗。
同樣的,我們也用一個比較好懂的比喻來說,這樣的機制如果用在一群正在露營的人們大概會像這樣:
  1. 現在快要接近晚餐時間,所以要來準備食材,大家都在露營區不同的地方做事,所以當我想叫一位朋友幫我拿某樣東西,我會先聽一下是不是有人在講話,不管是在露營的其他遊客或是一起來的朋友們,當沒有人在說話時,我會深吸一口氣準備大聲說話(等待訊框間隔時間)
  2. 那我吸飽氣後,我會隨機再等一下(Backoff time),再次確保沒有人在講話後,我就會大聲的喊出「大家先不要講話10秒鐘(NAV),林登請幫我拿東西過來!」,只要在這個範圍能夠聽到我說話的人,就都不會講話10秒(通道保留時間),除了我要講話的對象林登。
  3. 當林登聽到後,林登就會回應說「聽到了!」(確認封包),那收到林登的確認後,我就不會再呼叫一次;反之如果我沒有聽到,我就會再次嘗試,直到我喊的很累了之後,我就決定不再喊了。
透過這樣的方法看似解決了無線傳輸上的問題,但是如果碰到下面這樣的狀況,我們又該怎麼辦呢?

隱藏節點問題

這次的狀況是,阿綠跟阿菊想要跟位中間的林登講話,但是他們彼此聽不到對方說話,所以當阿綠嘗試想要跟林登說話的時候,他也就不會察覺可能阿菊也正要跟林登講話,或是林登因為聽到阿菊正在跟別人說話而不能說話。那此時該怎麼辦呢?
隱藏結點問題(Hidden node problem)
我們可以透過多幾個溝通的步驟來解決這個問題:
  1. 如果阿綠想要跟林登溝通,在實際說出他要講的話之前,他會先跟林登確認他能不能說話,所以他在確認沒有人說話後,就會吸飽氣,然後嘗試跟林登說「大家先不要講話5秒,林登我要跟你說話!」(RTS, Request to send)
  2. 當林登聽到後,而剛好也可以說話,那他也會在別人沒有說話的期間,吸飽氣,大聲跟阿綠說「大家先不要講話10秒,阿綠你可以說!」(Clear to Send)而這時的阿菊,因為聽到了林登跟阿綠說的話,他就會先安靜10秒鐘
  3. 當阿綠聽到了林登的回覆,他就會吸飽氣,然後開始講他想要講的話,那內容大概會像這樣:「大家還是繼續不要講話10秒,林登我跟你說....」
  4. 當林登聽到了阿綠說完他想要講的之後,林登就會回覆阿綠說「阿綠我知道了,大家可以開始講話了!」(確認封包)
如此一來就可以解決這樣隱藏節點的問題了,是不是很聰明呢?

經過這樣簡單的範例說明,是不是感覺這些網路傳送訊息的機制不再這麼艱澀難懂,反而更像是我們早就已經知道的溝通方式呢?雖然實際的細節有很多,但我希望能透過淺顯易懂的說明,讓讀到這篇文章的你能夠了解其中的奧秘所在。
如果你對這樣的內容有興趣,可以幫我按個愛心,我們之後會繼續分享更多有關網路技術的內容喔!艾克森跟你說,網路技術其實很有趣喔!
為什麼會看到廣告
艾克森是一群人,一群初來乍到,但卻渴望在網路上用文字留下足跡的人。我們不斷體驗,並練習分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本次要介紹Rapid Spanning Tree Protocol (RSTP) 這個protocol的重點與核心,後續將說明應用上的topology。 首先介紹protocol的目的 : 最大的目的就是redundant 簡單講就是Topology(拓樸)中,一些重要的path想做到backup
本次要介紹Rapid Spanning Tree Protocol (RSTP) 這個protocol的重點與核心,後續將說明應用上的topology。 首先介紹protocol的目的 : 最大的目的就是redundant 簡單講就是Topology(拓樸)中,一些重要的path想做到backup
你可能也想看
Google News 追蹤
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
內容交付網路(CDN)是一種網路架構,旨在提高用戶訪問網站內容的速度和效能。其基本原則是將網站內容分佈在全球的伺服器節點上。當使用者訪問網站時,CDN會根據使用者的地理位置和網路狀況,自動從最近的節點傳送內容,降低數據傳輸。
Thumbnail
有鑑於於市場上總是無法將 CPO 技術與光通訊模組之架構、運行方式與發展個別說清,讓非技術背景出身之投資人容易產生混淆,個人則希望透過本篇介紹將讓投資人對於 CPO 技術有一基本認知。下一篇則將針對該族群進行營運與財務數據分析。 (本篇僅開放2小時觀看,之後僅供訂閱會員參考! 歡迎加入訂閱
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
跨鏈通信協議(Cross-Chain Communication)又常被稱為跨鏈橋,意旨在公鏈與公鏈之間資訊傳遞的協議,能整合每條公鏈的長處,進行更有效的應用。
過客每天的工作白天都是面對著電腦,昨天來上班一如往常第一個動作就是打開電腦連線,無奈怎麼樣都連不上網路° 第一個念頭就是打給電腦工程師,工程師請我把WiFi分享先關機,結果還是一樣都連不上,只好打電話跟中華電信求救,原來是中華電信那邊出了問題° 昨天就在跟家長聊這件事情,因為這位
Thumbnail
寫願望清單是好事還是壞事呢?   我們從念頭開始分析,答案留給你最後去答   一念不覺,就是從你的心,一開始有一個微小的波動或振動,讓你沒有感覺到的頻率。   這個波動的頻率,就像無線電視接收地上波,開始讓電視螢幕,產生了畫面與聲音,讓你感覺到怎麼電視打開了,有好奇的聲音與變化萬千的影像
Thumbnail
** 3C機構設計爸版權所有 ** 在這幾天過年的年假期間,還是有很多業界的朋友很認真的靜修自己的專業知識。假日期間,業界朋友所提的問題之中,有一個問題是比較typical一點,所以3C機構設計爸特別拿出來分享,同時也再次強調TA初始的觀念建立非常重要,否則在職場上所提出的TA報告都會讓客戶或同事
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
內容交付網路(CDN)是一種網路架構,旨在提高用戶訪問網站內容的速度和效能。其基本原則是將網站內容分佈在全球的伺服器節點上。當使用者訪問網站時,CDN會根據使用者的地理位置和網路狀況,自動從最近的節點傳送內容,降低數據傳輸。
Thumbnail
有鑑於於市場上總是無法將 CPO 技術與光通訊模組之架構、運行方式與發展個別說清,讓非技術背景出身之投資人容易產生混淆,個人則希望透過本篇介紹將讓投資人對於 CPO 技術有一基本認知。下一篇則將針對該族群進行營運與財務數據分析。 (本篇僅開放2小時觀看,之後僅供訂閱會員參考! 歡迎加入訂閱
※ 介面是什麼: 介面:人跟電腦互相溝通的管道。 使用者與電腦互相溝通的方式稱為使用者的介面。 ※ 使用者的介面類型: 文字使用者介面:CUI。使用純鍵盤來下指令溝通,對象是伺服器(SERVER)。 圖型使用者介面:GUI。使用圖像去做點擊或拖拉的方式。 ※ 命令列(Command li
跨鏈通信協議(Cross-Chain Communication)又常被稱為跨鏈橋,意旨在公鏈與公鏈之間資訊傳遞的協議,能整合每條公鏈的長處,進行更有效的應用。
過客每天的工作白天都是面對著電腦,昨天來上班一如往常第一個動作就是打開電腦連線,無奈怎麼樣都連不上網路° 第一個念頭就是打給電腦工程師,工程師請我把WiFi分享先關機,結果還是一樣都連不上,只好打電話跟中華電信求救,原來是中華電信那邊出了問題° 昨天就在跟家長聊這件事情,因為這位
Thumbnail
寫願望清單是好事還是壞事呢?   我們從念頭開始分析,答案留給你最後去答   一念不覺,就是從你的心,一開始有一個微小的波動或振動,讓你沒有感覺到的頻率。   這個波動的頻率,就像無線電視接收地上波,開始讓電視螢幕,產生了畫面與聲音,讓你感覺到怎麼電視打開了,有好奇的聲音與變化萬千的影像
Thumbnail
** 3C機構設計爸版權所有 ** 在這幾天過年的年假期間,還是有很多業界的朋友很認真的靜修自己的專業知識。假日期間,業界朋友所提的問題之中,有一個問題是比較typical一點,所以3C機構設計爸特別拿出來分享,同時也再次強調TA初始的觀念建立非常重要,否則在職場上所提出的TA報告都會讓客戶或同事