看板 Network 關於我們 聯絡資訊
darkcc跟你討論很好玩XDDD 閒的話就不用說了,我把這個問題PO上來不是顯得我更閒XD (其實是想看有沒有人跟我有一樣的問題Orz) 終於下班了,可以好好再來PO文… 回到話題(繼續討論)… 我不懂你為什麼說: 「實際上A的訊號會干擾C->B,但B->C是可以接受的」 就我的認知而言,這兩種狀況都會被干攘。 因為他們應該是ad-hoc網路,每一個station所用的channel應該一樣, 既然一樣,任何一個station所發出的無線訊號都會曝露在同一個channel上, 所以只要有兩個station同時(或小於傳輸時間)要發聲, 就會造成干攘。 這就像在會議室上,同時有兩個人要講話一樣,此時他們要表達的訊息就交結在一起 沒人能知道他們要講什麼。 再舉更貼切的例子--如打開收音機轉FM92.1台北X音, 如果有人惡作劇在這個Channel上講話,全國在聽FM92.1的人除了會聽到台北X音的廣播, 還會聽到那個人惡作劇的聲音。 這也就是為什麼各大無線電信業者要花大錢跟國家買channel, 因為買了就是你的了,也只有你能在那個channel上發聲。否則就違法。 當然有一些channel是for free的。 所以我的意思是,無論是C->B 還是B->C, 因為A的無線訊號範圍包含了B, B無論是收還是送,都必需和A共用同一個Channel,所以要正確傳輸, 無論是c->b 或b->c A都必需閉嘴。 這也是為什麼RTS/CTS是廣播的方式, 因為在同一時間同一channel上,只可以有某一種訊號(無論收或送) 否則都會被干攘,被視為collision。 除非擺明了收和送的ISM不一樣,那就不會有影響。 另外… 你說:偵測僅限於該機器所在的那個點,而不是整個訊號範圍 也和我所認知的衝突,我所知道的應該是整個訊號範圍 原因就是因為同一個channel上有兩個人以上發訊號,就是collision, 所以機器不是看自己所在的這個點有沒有collision, 而是偵測它和大家共用的channel上有沒有collision, 所以802.11的精神就是:"channel很珍貴且任一station唯有在channel是idle時才能發言" 所以802.11底下所發展出來的RTS/CTS 才會以廣播的方式, 告訴所有 "有效範圍且同一channel" 的station說, 有人要講話了,請所有人在NAV時間裡閉嘴。 如果偵測Collision是你說的定義:即限於該機器所在的node。 那RTS/CTS 演算法顯得愚笨許多。 因為RTS/CTS大可不必告訴所有人請閉嘴, 只要告訴大家誰誰誰正在接收訊號,請不要跟他講話就好。 事實上也很好做到這件事情,因為每一個station都有唯一的AID(Associate ID) 顯然RTS/CTS並不這麼做,原因不是因為複雜難以實現, 而是因為Collision的定義是在channel上有兩個以上的人在說話 而不是你說的限於機器本身。 還有… 你說:因此會有RTS/CTS的出現,就是補充偵測上的不足 我所認知…偵測上並沒有不足。 Physical carrier-sensing和RTS/CTS是兩個不同的Sensing function 而實作802.11必需完成CSMACA, 所以目前有兩種方式如下: +Physical carrier-sensing: 每一個station有一個實體的偵測裝置,會把接收器放在channel上看是否idle, 如果是idle的話,他才會送訊息,否則不會送。但是有一種情況 還是會在Channel上發生Colision,就是"同時有人要送",這也就是 為什麼是CA而不是CD,所以,所謂的CA並不是只有RTS/CTS才能完成, 光靠一個Physical carrier-sensing的方法就叫做CA了。 +Virtual carier-sensing(即RTS/CTS Procedure) 透過NAV向量,告訴大家"閉嘴的時間", 大家拿到NAV向量就好比接收器偵測到有人有用Channel, 但實際上它是沒有放接收器在channel上的, 所以才叫做"虛擬偵測"。 它是用這樣的方式達到所謂的CA。 所以應該不是你以為的那樣, 這兩個是可以獨立運作的。 都能達到CSMACA的功能。 只是RTS/CTS是目前實作上比較常用的方式, 以致於大部份的人都以為CA就是RTS/CTS 好拉…打累了… 很高興與你討論… 看有什麼還需要指教的XDDDDD ps:你居然忘記802.11要回ACK XDDD 有嚴重到唷XD ※ 引述《darkcc (will)》之銘言: : 我這樣一直回一直回會不會顯示我太閒... : 先為我的錯誤道歉,我忘記最後還有一個ACK封包了... : Q1:為啥收到RTS/CTS都要安靜 : 實際上A的訊號會干擾C->B,但B->C是可以接受的 : 但是ACK封包的存在表示即使是B->C,C最後丟ACK給B還是會被A干擾 : 因此不論是聽到RTS跟CTS要安靜,就是因為在此時間任何傳輸的動作都有可能造成干擾 : (收到CTS代表會干擾到資料封包,收到RTS代表會干擾到ACK封包) : Q2:做Physical Carrier Sensing不做Virtual Carrier Sensing可以嗎 : Physical Carrier Sense指的應該是偵測實際載波是否有訊號 : 但是偵測僅限於該機器所在的那個點,而不是整個訊號範圍 : 所以實際上C的訊號是不會被A偵測到的,因為距離太遠了 : 如果沒有B發出CTS,A勢必在此時間會嘗試丟訊息 : (不限定B,反正都可能讓B收不到C發出的ACK封包) : 因此會有RTS/CTS的出現,就是補充偵測上的不足 : NAV實際上並不需要隨時做sensing的動作,一切都靠RTS/CTS的資訊做判斷 : 收到就把整個Duration都當成BUSY,不管有沒有偵測到 : 一直到時間過了再回到競爭狀態 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.81.169 ※ 編輯: nicepizza 來自: 220.130.81.169 (10/17 19:26)
jien:你們的討論很有趣,版主要不要收進精華區XDD 10/17 19:57
darkcc:重點是沒有其他人要湊一腳...XD 10/17 22:00
HiJimmy:重點是我看不懂@@ 10/19 21:44