作者nicepizza (pizza)
看板Network
标题Re: [问题] About Hidden Node Problem..
时间Fri Oct 17 19:24:59 2008
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)
1F:推 jien:你们的讨论很有趣,版主要不要收进XDD 10/17 19:57
2F:推 darkcc:重点是没有其他人要凑一脚...XD 10/17 22:00
3F:推 HiJimmy:重点是我看不懂@@ 10/19 21:44