文章目录

  • 12.1 随机访问
    • 12.1.1 ALOHA
      • 1. 纯ALOHA
        • (1) 脆弱时间
        • (2) 吞吐量
      • 2. 时隙ALOHA
        • 吞吐量
    • 12.1.2 载波侦听多路访问 `CSMA`
      • 1. 脆弱时间
      • 2. 持续方法
    • 12.1.3 带冲突检测的载波侦听多路访问 `CSMA/CD`
      • 1. 帧的最小长度
      • 2. 程序
      • 3. 能量级别
      • 4. 吞吐量
    • 12.1.4 带冲突避免的载波侦听多路访问 `CSMA/CA`
      • 1. 帧间间隔 `IFS`
      • 2. 竞争窗口
      • 3. 确认
      • 4、 程序
      • 5. CSMA/CA和无线网络
  • 12.2 受控访问
    • 12.2.1 预约
    • 12.2.2 轮询
      • 1. 选择
      • 2. 轮询
    • 12.2.3 令牌传递
      • 逻辑环
  • 12.3 通道化
    • 12.3.1 频分多路访问 `FDMA`
    • 12.3.2 时分多路访问(TDMA)
    • 12.3.3 码分多路访问 `CDMA`
      • 1. 类比
      • 2. 思想
      • 3. 芯片
      • 4. 数据的表示
      • 5. 编码和解码
      • 6. 信号水平
      • 7. 序列的产生

在【计算机网络】第三部分 数据链路层(11) 数据链路控制讨论了数据链路控制,它是为链路提供可靠通信的一种机制。在我们描述的(那些)协议中,假定在发送方和接收方之间存在可用的专用链路(或通道)。这个假定可能不是真的。如果我们确实有一条专用链路,比如当我们使用PPP作为数据链路控制协议连接因特网时,那么这个假定是正确的,我们不需要任何其他东西。。

另一方面,如果我们使用移动电话去与其他移动电话连接,通道(分配给售方公司的波段)并不是专用的。离我们几英尺远的人,可能正在使用同一个通道与她的朋友交谈。

我们认为数据链路层有两个子层,上子层负责数据链路控制,下子层负责解决对共享介质的访问。如果通道是专用的,我们并不需要下子层;如果上层协议负责流量控制、差错控制和拥塞控制,则不需要上子层。图12.1显示了在数据链路层中的两个子层。在【计算机网络】第三部分 数据链路层(13) 有线局域网:以太网中,将会看到IEEE确实为LAN做了如此的分割:上子层负责流量控制和差错控制,被称为逻辑链路控制层 LLC ,下子层主要负责多路访问的解决方法,被称为介质访问控制层 MAC

当节点或站点被连接、并使用一个称为多点链路广播链路 multipoint or broadcast link 的公共链路时,我们就需要一个多路访问协议 multiple-access protocol 去协调链路的访问。介质访问的控制问题,与在集会上发言的规则相似——有程序来为发言授权,并保证没有两个人会在同一时间发言,发言者不会打扰到彼此,不会独占发言权等。多点网络的情况与此相似。

许多正式的协议被设计出来,用于处理共享链路的访问。我们将这些协议分为三类,如图12.2所示。


12.1 随机访问

随机访问 random access竞争访问方法 contention methods 中,没有任何站点是优于其他站点的,也没有任何站点能控制其他站点。一个站点没有权利允许、或者不允许另一个站点的发送。每一次,当一个站点要发送数据时,都要用「协议定义的程序」来决定是否要发送,这个决定取决于「介质的状态(空闲或忙碌)」。换言之,只要遵循预定义的程序,包括介质状态的检测,满足条件的每一个站点都能传输数据。

该方法之所以如此命名,是因为两个特性。

  • 第一,每一个站点的传输没有特定的时间表,站点的传输是随机的。这就是该方法称为随机访问的原因。
  • 第二,没有规则来规定下一个将要发送的站点是哪一个。为了访问介质,站点展开竞争。这就是该方法称为竞争访问的原因。

在随机访问中,每个站点都有权访问介质、且不受控于其他站点。然而,如果当一个以上的站点想要发送时,便会产生冲突 collision ,那么便会有帧被损坏或修改。为了避免访问冲突、或在访问冲突发生时解决这个问题,每个站点遵循一个程序,该程序回答了以下问题:

  • 站点何时能访问介质?
  • 如果介质忙碌,站点能做什么?
  • 站点如何确定传输的成功或者失败?
  • 如果发生访问冲突,站点能做什么?

这里学习的随机访问方法,是由一个十分有趣的称之为ALOHA的协议发展而来的,ALOHA使用一个十分简单的程序,其称为多路访问 multiple access, MA 。该方法是通过外加一种程序(在站点传送之前要对介质进行侦听)改进而来。它称为载波侦听多路访问 CSMA 。该方法后来又演化成两个并行的方法:带冲突检测的载波侦听多路访问 carrier sense multiple access with collision detection, CSMA/CD带避免冲突的载波侦听多路访问 carrier sense multiple access with collision avoidance, CSMA/CA 。CSMA/CD告诉站点一旦检测到冲突,下一步该做什么,而CSMA/CA尝试如何避免冲突。

12.1.1 ALOHA

ALOHA是最早的随机访问方法,它由夏威夷大学在20世纪70年代初期开发出来。它被设计用于无线电(无线)LAN ,但也可以使用在任何共享介质上

很明显,在这种安排中有一些潜在的冲突。介质为各个站点所共享,当一个站点发送数据时,其他站点也可能在同时尝试发送,两个站点的数据相互冲突、并且相互混淆。

1. 纯ALOHA

最早的ALOHA协议,称为纯ALOHA pure ALOHA 。这是一个简单的、但优秀的协议。它的概念是只要每个站点有帧要发送,它就发送帧。然而,既然只有一条共享通道,不同站点之间的帧就有可能发生冲突。图12.3描述了一个在纯ALOHA中帧冲突的例子。

图中有 444 个站点(非现实的假设)为访问共享通道彼此竞争。每个站点发送两个帧,共享介质中共有 888 个帧。在为共享通道展开的多帧竞争中,某些帧冲突了。图12.3中只有两个帧是成功的:来自站点 111 的帧 1.11.11.1 和来自站点 333 的帧 3.23.23.2 。必须要提醒的是,只要一个帧的一个位与另一个帧的一个位同时存在于通道中,就会产生冲突、且两个帧都会被损坏。

很明显,我们需要重发在传输过程中损坏的帧。纯ALOHA协议依赖于接收方的确认,当一个站点发送一个帧时,它就等待接收方发送一个确认。如果超时之后确认还未达到,站点就认为帧(或者确认)被损坏了,于是重发帧(确认+超时重传机制)。

一个冲突涉及两个或更多的站点。如果这些站点在超时后都尝试重发帧,那么这些帧可能再次发生冲突。纯ALOHA规定,当超时时间过去时 the time-out period passes ,每个站点在重发帧之前,都会随机等待一段时间。这个随机性将有助于避免更多的冲突。我们称这个时间为补偿时间 back-off time TBT_BTB​ 。

纯ALOHA还需要第二个方法来阻止重新传输的帧造成通道拥堵。一个站点在经过最大次数 Kmax⁡K_{\max}Kmax​ 的重发尝试后,它必须放弃并在以后再试。图12.4描述了基于上述策略的纯ALOHA进程。

超时周期等于往返传播延迟的最大可能值 The time-out period is equal to the maximum possible round-trip propagation delay ,也就是两个最远距离站点之间发送一个帧所需时间的两倍 2×Tp2 \times T_p2×Tp​ 。补偿时间 TBT_BTB​ 是一个随机值,主要取决于 KKK(未成功的传输尝试次数)的值,且 TBT_BTB​ 的公式取决于实现。一个通用公式是二进制指数回退 binary exponential back-off 。这种方法中,每一次传输随机选择 000 到 2k−12^k -12k−1 范围内的一个数,该数乘以 TpT_pTp​(传输的最长时间)或乘以 TfrT_{fr}Tfr​(一个帧的平均传输时间)以得到 TBT_BTB​ 的值。注意:在这个过程中,每一次冲突后随机数的范围便扩大了。Kmax⁡K_{\max}Kmax​ 的常用值是 151515 。

【例12.1】一个无线ALOHA网络中的站点之间的最远距离是 600600600 公里。如果我们假设信号的传播速度是 3×1083 \times 10^83×108 米/秒,那么 Tp=600×105/(3×10)=2msT_p=600\times 10^5 / (3 \times 10)=2\textrm{ms}Tp​=600×105/(3×10)=2ms 。于是,对于不同的 KKK 值,我们可以得到不同的 TBT_BTB​ 值。

  • 如果 K=1K= 1K=1, 取值范围是 {0,1}\{0 ,1\}{0,1} 。站点会产生一个随机变量,变量值为 000 或 111 。这就意味着 TBT_BTB​ 是 0(0×2)0\ (0\times 2)0 (0×2) 毫秒或 2(1×2)2\ (1 \times 2)2 (1×2) 毫秒,取决于产生的随机变量
  • 如果 K=2K=2K=2 , 取值范围是 {0,1,2,3}\{0 ,1, 2, 3\}{0,1,2,3} 。这就意味着 TBT_BTB​ 是 0,2,4,60, 2, 4, 60,2,4,6 毫秒,取决于产生的随机变量
  • 如果 K=3K=3K=3 , 取值范围是 {0,1,2,3,4,5,6,7}\{0 ,1, 2, 3, 4, 5, 6, 7\}{0,1,2,3,4,5,6,7} 。这就意味着 TBT_BTB​ 是 0,2,4,…,140 , 2, 4, …, 140,2,4,…,14 毫秒,取决于产生的随机变量
  • 要提醒的一点是,如果 K>10K>10K>10 , 它通常被设定为 101010。

(1) 脆弱时间

我们来计算有可能发生冲突的时间(区域)的长度 the length of time in which there is a possibility of collision ,即脆弱时间 vulnerable time 。假设站点发送固定长度的帧,且每个帧的发送时间是 TfrT_{fr}Tfr​ 秒 Average transmission time for a frame 。图12.5显示了站点 AAA 的脆弱时间。

站点 AAA 在时刻 ttt 发送一个帧。设想站点 BBB 在时刻 t−Tfrt- T_{fr}t−Tfr​ 和 ttt 之间已经发送了一个帧,BBB 帧的末端与 AAA 帧的始端发生了冲突。另一方面,假定站点 CCC 在时刻 ttt 和 t+Tfrt+T_{fr}t+Tfr​ 之间发送了一个帧。此时,站点 AAA 和站点 CCC 的帧之间发生了冲突。CCC 帧的始端与 AAA 帧的末端发生了冲突。

图12.5中,我们可以看到,纯ALOHA中的脆弱时间(其中一个冲突可能发生)是帧传输时间的 222 倍,为 2×Tfr2\times T_{fr}2×Tfr​ 。

【例12.2】一个纯ALOHA网络,在一个传输速度为 200kbps200\textrm{kbps}200kbps 的共享通道上,传输 200200200 位的帧。使这个帧在传输过程中避免冲突,要达到什么样的条件?
解:帧的平均传输时间 TfrT_{fr}Tfr​ 是 200bits 200kbps=1ms\dfrac{200\textrm{bits } }{ 200\textrm{kbps}} = 1 \textrm{ms}200kbps200bits ​=1ms 。脆弱时间是 2×1ms=2ms2\times 1 \textrm{ms} =2\textrm{ms}2×1ms=2ms 。这就意味着,在该站点开始传输前的 111 毫秒,没有站点会开始传输,并且当该站点正在传输的 111 毫秒期间,也没有站点会开始传输。

(2) 吞吐量

我们称 GGG 为一个帧传输时间内、系统产生的帧的平均数量。能证明 纯ALOHA成功传输帧的平均数量是 S=G×e−2GS=G \times e^{-2G}S=G×e−2G 。当 G=12G= \dfrac{1}{2}G=21​ ,得到最大吞吐量 Smax⁡S_{\max}Smax​ 是 0.1840.1840.184 。即,在一个帧的传输时间内产生二分之一个帧(即两个帧的传输时间产生一个帧),这些帧的 18.4%18.4\%18.4% 能成功到达目的地。因为脆弱时间是帧传输时间的 222 倍,故这是一个可预期的结果。因此,如果一个站点在脆弱时间内只产生一个帧(且在这段时间内没有其他站点产生帧),这个帧便能成功地到达它的目的地。

【例12.3】一个纯ALOHA网络,在一个传输速度为 200kbps200\textrm{kbps}200kbps 的共享通道上传输 200200200 位的帧。如果系统(包括所有站点)产生以下数量的帧,吞吐量将是多少?1. 每秒 100010001000 个帧;2. 每秒 500500500 个帧;3. 每秒 250250250 个帧。
解:帧的传输时间是 200bits/200kbps200\textrm{bits}/200\textrm{kbps}200bits/200kbps ,即 111 毫秒。

  1. 如果系统每秒产生 100010001000 个帧,也就是每毫秒产生一个帧。负载为 111 。在这种情况下,即 S=e−2=0.135(13.5%)S=e^{-2} = 0.135\ (13.5\%)S=e−2=0.135 (13.5%) 。也就是说,吞吐量是 1000×0.135=1351000\times 0.135=1351000×0.135=135 帧。100010001000 个帧中只有 135135135 个可能成功。
  2. 如果系统每秒产生 500500500 个帧,也就是每毫秒产生 12\dfrac{1}{ 2}21​ 个帧。负载为 12\dfrac{1}{2}21​ 。在这种情况下,即 S=e12=0.184(18.4%)S=e^{\dfrac{1}{2}} = 0.184\ (18.4\%)S=e21​=0.184 (18.4%) 。也就是说,吞吐量是 500×0.184=92500 \times 0.184= 92500×0.184=92 帧。500500500 个帧中只有 929292 个可能成功。注意:这就是最大吞吐量百分比的例子。
  3. 如果系统每秒产生 250250250 个帧,也就是每毫秒产生 14\dfrac{1}{4}41​ 个帧。负载为 14\dfrac{1}{4}41​ 。在这种情况下,即 S=0.152(15.2%)S=0.152\ (15.2\%)S=0.152 (15.2%) 。也就是说,吞吐量是 250×0.152=38250 \times 0.152=38250×0.152=38 帧。250250250 个帧中只有 383838 个可能成功。

2. 时隙ALOHA

纯ALOHA的脆弱时间是 2×Tfr2\times T_{fr}2×Tfr​ 。这是因为没有规则来定义站点何时能发送。一个站点可能在另一个站点已经开始发送之后马上发送,也可能在另一个站点完成发送之前马上发送。

时隙ALOHA的发明改进了纯ALOHA的效率。在时隙ALOHA slotted ALOHA 中,我们把时间分割成 TfrT_{fr}Tfr​ 秒的时隙,并强制站点只有在时隙开始之时才能发送。图12.6描述了一个在时隙ALOHA中帧冲突的例子,帧 2.1,3.12.1, 3.12.1,3.1 冲突,帧 1.2,4.11.2, 4.11.2,4.1 冲突。

因为只允一个站点在同步时隙的开始时发送帧,如果一个站点错过了这个时刻,就要等到下一个时隙的开始之时。这就意味着:从这个时隙开始时发送帧的站点,在该时隙就已经完成了发送。当然,如果两个站点试图在同一个时隙的开始之时发送帧,那么仍然存在冲突的可能。无论如何,现在脆弱时间减少了一半,如图12.7所示,它等于 TfrT_{fr}Tfr​ 。图12.7说明了,时隙 ALOHA的脆弱时间只是纯ALOHA的一半。

吞吐量

能证明 时隙ALOHA成功传输帧的平均数量是 S=G×e−GS=G \times e^{-G}S=G×e−G 。当 G=1G=1G=1 时,得到最大吞吐量 Smax⁡S_{\max}Smax​ 是 0.3680.3680.368 。即,当一个帧传输时间内有一个帧产生的话 a frame is generated during one frame transmission time这些帧 these frames 的 36.8%36.8\%36.8% 会成功达到它们的目的地。这个结果是能被预知的,因为脆弱时间等于帧传输时间。因此,如果一个站点在脆弱时间内只产生一个帧(且在这个时段内没有其他站点产生帧),这个帧便能成功地到达它的目的地。

【例12.4】一个时隙ALOHA网络使用一个带宽为 200kbps200\textrm{kbps}200kbps 的共享通道发送 200200200 比特的帧。如果系统(包括所有站点)产生以下数量的帧,吞吐量将是多少?1. 每秒 100010001000 个帧;2. 每秒 500500500 个帧;3. 每秒 250250250 个帧。
解:此情况与前一个练习相似,除了网络使用时隙ALOHA来代替纯ALOHA之外。帧传输时间是 200/200kbps200/200\textrm{kbps}200/200kbps ,即 111 毫秒。

  1. 此例中 GGG 为 111 ,因此 S=G×e−GS=G\times e^{-G}S=G×e−G,即 S=0.368(36.8%)S=0.368\ (36.8\%)S=0.368 (36.8%) 。这意味着吞吐量是 1000×0.368=3681 000 \times 0.368 = 3681000×0.368=368 帧。100010001000 个帧中只有 368368368 个能成功。注意这就是最大吞吐量百分比的例子。
  2. 此例中 GGG 为 1/21/21/2 ,因此 S=G×e−GS=G\times e^{-G}S=G×e−G ,即 S=0.303(30.3%)S=0.303\ (30.3\%)S=0.303 (30.3%) 。这意味着吞吐量是 500×0.303=151500\times 0.303 = 151500×0.303=151 帧。500500500 个帧中只有 151151151 个能成功。
  3. 此例中 GGG 为 1/41/41/4 ,因此 S=G×e−GS=G \times e^{-G}S=G×e−G,即 S=0.195(19.5%)S=0.195\ (19.5\%)S=0.195 (19.5%) 。这意味着吞吐量是 250×0.195=49250\times 0.195=49250×0.195=49 帧。250250250 个帧中只有 494949 个能成功。

12.1.2 载波侦听多路访问 CSMA

为了减少冲突发生的概率、从而提高性能,我们采用CSMA方法。如果站点在发送前先侦听一下介质,其冲突的概率就会减少。载波侦听多路访问 Carrier sense multiple access, CSMA 要求:每一个站点在发送之前首先要监听介质(或者检查介质的状态)。换句话说,CSMA基于的原理就是"传输前先侦听"或"说话前先听"。

虽然CSMA能够减少冲突的概率,但是它不能消除冲突。原因如图12.8 ,一个CSMA网络的时空模型中所示。站点与一个共享通道连接(通常是一个专用介质)。

冲突的概率依然存在的原因是因为传播延迟 propagation delay 。当站点发送一帧时,它的第一个位到达每一个站点、和每一个站点检查到它的信号,都需要一定的时间(尽管这一时间非常之短)。即,一个站点之所以能够侦听到介质、并发现它处于空闲状态,仅仅是因为其他站点的传播信号还没有到达该站点

在时刻 t1t_1t1​ ,站点 BBB 侦听介质、并发现介质处于空闲状态,所以它发送一个帧。在时刻 t2(t2>t1)t_2\ (t_2 >t_1)t2​ (t2​>t1​) ,站点 CCC 侦听介质、并发现它处于空闲状态,因为这时从站点 BBB 发来的第一个位还没有到达站点 CCC 。站点 CCC 也发送一个帧。于是这两个信号冲突、且两个帧同时被损坏了。

1. 脆弱时间

CSMA的脆弱时间是传播时间 TpT_pTp​ ,这是一个信号从介质的末端到另一端的传播时间。当一个站点发送一个帧,且其他站点也试图在这个时间段内发送帧时,就会发生冲突;但是,如果帧的第一个位已经到达了介质的末端,其他每个站点都能"听到"这个位,并停止发送。图12.9显示了最差的状况。最左边的站点 AAA 在时刻 t1t_1t1​ 发送一个帧,它在时刻 t1+Tpt_1 +T_pt1​+Tp​ 到达最右边的站点 DDD 。灰色区域显示了时间上和空间上的脆弱区域。

2. 持续方法

如果通道繁忙,站点将如何做?如果通道空闲,站点又将做什么?有三种方法被设计用来回答这些问题:1-持续方法,非持续方法和 p-持续方法。图12.10描述了当一个站点发现通道繁忙时,三种持续方法的表现。

图12.11描述了这些方法的流量图。

  • 1-持续方法 1-persistent method 是最简单直接的。该方法是,如果站点发现线路空闲,那么它就立即发送帧(概率是 111 )。这种方法发生冲突的机率最高,因为在发现了线路空闲后,两个或更多的站点都可以发送它们的帧。在【计算机网络】第三部分 数据链路层(13) 有线局域网:以太网中,我们将看到以太网使用该方法。
  • 非持续方法 nonpersistent method 中,要发送帧的站点侦听线路,如果线路空闲,它就立即发送;如果线路不空闲,站点就等待一个随机时间,然后再次侦听线路。非持续策略可以减少冲突的概率,因为不太可能存在两个或更多个站点,等待相同的时间、并且再次立即重新尝试。然而,这种方法降低了网络的效率,因为有时可能有要发送帧的站点、而介质保持空闲状态 because the medium remains idle when there may be stations with frames to send
  • 如果通道有时隙、且时隙周期等于或大于最大传播时间时,使用p-持续方法 p-persistent method 。p-持续方法综合了其他两个策略的优点,它既减少了冲突的机会,又提高了网络效率。在此方法中,如果线路繁忙,则一直侦听;当站点发现线路空闲后,它会采取以下步骤:
    1. 如果概率是 ppp ,站点发送帧。
    2. 如果概率是 q=1−pq=1-pq=1−p , 站点会等待下一个时隙的开始,并再次检查线路。a. 如果线路空闲,它将进入步骤 111 。b.如果线路繁忙,它会当做一个冲突已经发生了、并使用补偿程序

12.1.3 带冲突检测的载波侦听多路访问 CSMA/CD

CSMA方法没有规定冲突之后的处理程序。带冲突检测的载波侦听多路访问 CSMA/CD 提出了处理冲突的算法——在这一方法中,任意站点都可以发送帧,然后就监控介质看传送是否成功。如果成功,站点完成发送,如果不成功,就说明存在冲突,需要重新发送此帧。

为了更好地理解CMSA/CD ,看看冲突涉及的两个站点发送的第一个位的情况。每个站点都继续发送帧中的其他位、直到它检测到冲突,图12.12描述了第一个位发生冲突的情况,冲突的双方是站点 AAA 和站点 CCC 。
在时刻 t1t_1t1​ ,站点 AAA 执行它的持续程序并开始发送帧。在时刻 t2t_2t2​ ,站点 CCC 还未侦听到 AAA 发送的第一个位,站点 CCC 执行它的持续程序并开始发送帧,都是从左向右传输的。在时刻 t2t_2t2​ 后的某一时刻,冲突发生了。在时刻 t3t_3t3​ ,当站点 CCC 收到 AAA 的第一个位时,它检测到冲突,站点 CCC 马上(或者一小段时间后,但我们假设为马上)放弃了传输。在时刻 t4t_4t4​ ,当站点 AAA 收到 CCC 的第一个位时,它检测到冲突,它也同样马上放弃了传输。在图12.12中,我们可以看到站点 AAA 进行传输的持续时间是 t4−t1t_4-t_1t4​−t1​ ,站点 CCC 进行传输的持续时间是 t3−t2t_3-t_2t3​−t2​ 。

随后我们可以看到,在此协议中,任何帧的长度除以比特率(即该帧的传输延迟)必须大于这两个持续时间中的任何一个(或这些持续的时间段)。在时刻 t4t_4t4​ ,虽然 AAA 帧的传输还未完成,但却被放弃了;在时刻 t3t_3t3​ ,虽然 CCC 帧的传输还未完成,但却也被放弃了。

现在我们明白了这两个传输的持续时间,图12.13显示了一张更为完整的图。

1. 帧的最小长度

为了实现CSMA/CD,需要限定帧的长度:在发送帧的最后一位前,发送站点必须检测冲突,如有任何冲突要放弃传输。这是因为一旦整个帧被发送了,站点就无法保留帧的副本,并无法掌控线路的冲突检测。因此,帧传输时间 TfrT_{fr}Tfr​ 必须至少是最大传播时间 TpT_pTp​ 的两倍

为了理解这个缘由,让我们来考虑最差的情况。如果两个站点卷入一个冲突中,且这两个站点距离最远,信号从第一个站点到达第二个站点要花费时间 TpT_pTp​ ,冲突的作用使得到达第一个站点还需要花费时间 TpT_pTp​ 。因此,便要求第一个站点在 2Tp2T_p2Tp​ 时间后仍在进行传输。

【例12.5】使用CMSA/CD的一个网络,带宽是 10Mbps10\textrm{Mbps}10Mbps 。如果最大传播时间(包括设备的延迟、并忽略发送一个干扰信号所需的时间)是 25.6μs25.6\textrm{μs}25.6μs ,那么帧的最小长度是多少?
解:帧的传输时间是 Tfr=2×Tp=51.2μsT_{fr} =2 \times T_p=51.2 \textrm{μs}Tfr​=2×Tp​=51.2μs 。这就是说,最差的情况下,一个站点需要传输 51.2μs51.2 \textrm{μs}51.2μs 后才能检测到冲突。帧的最小长度是 10Mbps×51.2μs=512bits10\textrm{Mbps} \times 51.2\textrm{μs}=512\textrm{bits}10Mbps×51.2μs=512bits 或 64bytes64\textrm{bytes}64bytes 。这是标准以太网中帧的最小尺寸,在数据链路层(13) 有线局域网:以太网中会有介绍。

2. 程序

现在让我们看一下图12.14中的CMSA/CD流量图。它与ALOHA协议的流量图相似,但存在着不同。

第一个不同是增加了持续程序。在开始发送帧之前,我们要使用之前讨论过的持续程序中的一种(1-持续,非持续或者p-持续)来侦听通道。图12.11中相关的图形,将被持续程序中的一种所代替。

第二个不同是帧的传输。在ALOHA中,我们先传输一个完整的帧,然后等待确认。在CMSA/CD中,传输和冲突检测是一个连续的过程——我们并不是先发送一个完整的帧,然后才检测冲突。此外,站点的传输和接收是连续的和同步的(使用两个不同的端口),我们用一个循环来说明,传输是一个连续的过程 transmission is a continuous process 。我们不断地进行监控、以检测出以下两种情况中的一种:传输完成了或者检测到一个冲突。这两个事件都能使传输停止。如果从循环出来,还是没有检测到冲突,这就意味着传输已经完成了,整个帧被传输了。否则,便有冲突发生了。

第三个不同是万一其他站点仍未检查到冲突,便发送一个短小的干扰信号 j amming signal 使冲突加强。

3. 能量级别

通道中的能量级别有三个值:000 、正常和不正常 zero, normal, and abnormal 。在级别 000 ,通道是空闲的;在正常级别,一个站点成功地占用了通道,并正在发送一个帧;在非正常级别,发生了冲突、且能量的级别是正常级别的两倍。将要发送或者正在发送帧的站点,必须监控能力级别来测定通道是处于空闲、繁忙还是冲突状态 idle, busy, or in collision mode 。图12.15描述了这个情形。

4. 吞吐量

CSMA/CD的吞吐量大于纯ALOHA或时隙ALOHA。不同的最大吞吐量将出现在不同的 GGG 值,且基于不同的持续方法、以及在p持续方法中不同的 ppp 值。1-持续方法中,当 G=1G=1G=1 时,得到最大吞吐量约为 50%50\%50% 。非持续方法中,当 GGG 值在 333 到 888 之间时,能得到高达 90%90\%90% 的最大吞吐量。

12.1.4 带冲突避免的载波侦听多路访问 CSMA/CA

CMSA/CD的基本理念是:一个站点为了在传输过程中检测到冲突,就要有能力去接收(信号)。没有冲突时,站点接收到一种信号:它自身的信号;冲突发生时,站点接收到两种信号:它自身的信号和第二个站点传输的信号。为了区分以上两种情况,不同情况中接收到的信号应该明显不同。换言之,来自第二个站点的信号需要为第一个站点产生的信号增加大量的能量 add a significant amount of energy

  • 在一个有线网络中,接收信号的能量与发送信号的能量基本一样,或因线路长度较短,或因存在中继器放大了发送方和接收方之间的能量。这就是说在冲突中,被检测到的能量几乎翻倍
  • 然而,在一个无线网络中,大量发送信号的能量在传输中丢失。接收信号的能量也很小。因此,一个冲突可能只增加 5%∼10%5\% \sim 10\%5%∼10% 的额外能量。这对有效的冲突检测起不了什么作用。

因为无线网络的冲突无法检测到,故而我们要避免冲突。带冲突避免的载波侦听多路访问 CSMA/CA 就是为这种网络发明的。CSMA/CA通过使用三种方法来避免冲突:帧间间隔、竞争窗口和确认,如图12.16所示。

1. 帧间间隔 IFS

首先,可以通过推迟传输来避免冲突,即使通道是空闲的。当发现通道是空闲的时,站点并不马上发送。它会等待一段时间,这段时间称之为帧间间隔 interframe space, IFS 。即使当通道被侦听时,它看上去是空闲的,但是一个远端站点可能早已开始传输了,只是远端站点的信号还未到达这个站点而已。IFS 时间使得远端站点传输的信号能到达该站点。如果在 IFS 时间后,通道仍然是空闲的,那么站点就能发送了,但是它仍然要等待一段时间,这段时间等于竞争时间

在CSMA/CA中,IFS 变量也能用来定义或区分一个站点或帧的优先次序。例如,一个站点被赋值的 IFS 越短,它的优先权越高。

2. 竞争窗口

竞争窗口将时间分割成时隙 The contention window is an amount of time divided into slots ,预备发送的站点选择随机数目的时隙 a random number of slots 作为等待的时间。窗口中时隙的数量,是根据二进制指数回避策略 binary exponential back-off strategy 而变化的。这意味着,它第一次被设置为一个时隙,以后每次站点在 IFS 时间后无法检测到空闲通道时,时隙的数量都要翻番 it is set to one slot the first time and then doubles each time the station cannot detect an idle channel after the IFS time 。这与p-持续方法很相似,除了等待站点根据随机结果来决定时隙的数量以外 a random outcome defines the number of slots taken by the waiting station

竞争窗口中有趣的一点是,每个时隙后站点都要侦听通道。然而,如果站点发现通道繁忙,它并不重启程序,而是停止定时器,并当侦听到通道空闲时再重启定时器。这给了等待时间最长的站点以优先权 This gives priority to the station with the longest waiting time.

3. 确认

虽然用了所有这些防范措施,但是仍然有可能产生冲突、而导致帧的损坏。另外,数据也可能在传输中被损坏。肯定的确认和定时器的超时将有助于确保接收方收到帧

4、 程序

图12.17说明了程序。注意:通道在 IFS 之前和之后都要被侦听;在竞争时间内,通道也要被侦听——在竞争窗口中的每一个时隙内,通道都要被侦听。如果发现通道空闲,定时器继续;如果通道繁忙,定时器停止并在通道空闲后再继续。

5. CSMA/CA和无线网络

CSMA/CA被广泛地使用在无线网络中。然而,上述的程序还不能处理一些「与无线网络相关的特殊问题」,比如隐藏终端或暴露终端问题。我们将看到,如何通过为上述协议添加握手特性,来解决这些问题。CSMA/CA在无线网络中的应用,会在【计算机网络】第三部分 数据链路层(14) 无线局域网和蓝牙技术中讨论。


12.2 受控访问

受控访问 controlled access 中,站点之间相互协商,以确定哪一个站点有权发送;某一个站点没有得到其他站点的认可,就无权发送。下面讨论三种流行的受控访问方法。

12.2.1 预约

预约 reservation 方法中,站点在发送数据之前需要预约。将时间划分为时隙,在每一个时隙内,在该时隙中发送的数据帧之前有一个预约帧(预约帧 →\to→ 数据帧)。如果系统中有 NNN 个站点,在预约帧中就恰好会有 NNN 个预约子时隙。每个子时隙均属于一个站点。当一个站点想要发送一个数据帧时,它在自己的子时隙中做一个预约。已经预约完的站点,可以在预约帧之后发送数据帧。

图12.18描述了一个有五个站点和「有五个子时隙的预约帧」的情形。在第一个间隙,只有站点 1,3,41, 3, 41,3,4 做了预约。在第二个问隙,只有站点 111 做了预约。

12.2.2 轮询

轮询 polling 方法的拓扑结构是:一个设备作为主站 prirnary station ,而另一些设备作为从站 secondary station所有的数据交换都要通过主站点进行,即使最终的目的站点是从站点时也是这样。主设备控制链路,而从设备只是跟随着它的指令工作。主设备决定在给定的时间内,哪个设备被容许使用通道。所以,主设备始终是一个会话的发起者。(见图12.19 )

如果主设备希望接收数据,它就询问从设备是否有数据要发送,这一功能称做轮询。如果主设备希望发送数据,它就通知从设备准备接收,这一功能称做选择 select

1. 选择

在主设备要发送数据时,就使用选择功能。请记住,主设备控制链路。如果主设备既不发送数据、也不接收数据,那么它就知道链路是可用的。这时,如果它有数据要发送,主设备就可以发送,但是它不清楚的是,目标设备是否准备接收。所以,主设备必须通知从设备,为这即将到来的传输,并等待从设备发送「它已经处于准备好状态」的确认。

在发送数据之前,主设备要创建并发送一个选择 SEL,其中的一个字段包含目标从设备的地址。

2. 轮询

主设备使用轮询功能,请求从设备传输数据。当主设备准备接收数据时,它必须逐个询问每一个设备是否要发送数据:

  • 当询问到第一个设备时,如果它没有数据要发送,就用一个 NAK 帧来响应;
  • 如果它要发送数据,就用数据(用数据帧格式)来响应。
  • 如果响应的是否认帧 NAK ,主设备就用同样的方法,轮询下一个从站点,直到它找到一个要发送数据的站点为止
  • 如果响应是数据帧,主设备就读取该帧并返回一个确认 ACK,表示已经接收。

12.2.3 令牌传递

令牌传递 token-passing 方法中,网络中的站点被组织在一个逻辑环中。换言之,对每一个站点来说,都有它的前驱和后继。前驱是指逻辑环中处于该站点之前的站点;而后继是指在环中处于该站点之后的站点。该站点是目前正在进行访问的站点。访问的权限由该站点的前驱站点传递给它;当该站点没有数据再要发送时,便将权限传递给它的后继站点。

但是访问通道的权限如何一个站点一个站点地进行传递呢?在此方法中,一个特殊的信息分组被称为令牌 token 在环中循环。令牌的持有,赋予站点访问通道并发送数据的权限

当一个站点有一些数据要发送时,它要等待从它的前驱站点传来的令牌。然后,它持有令牌并发送数据。当这个站点没有数据再要发送时,它释放令牌并传递给环中的下一个逻辑站点。站点只有在下一个循环中再次收到令牌时,才能再发送数据。在这个过程中,如果一个站点收到了令牌,但是它没有数据要发送,它便将令牌传递给下一个站点。

在这种访问方法中,令牌管理是必需的。站点占有令牌的时间必须得到限制;令牌必须得到监控,以确定它没有丢失或损坏。例如,如果一个站点持有令牌失败了,令牌就会在网络中消失。令牌管理的另一个功能是,给站点和被传输的数据类型分配优先权。最后,需要进行令牌管理,使低优先级站点将令牌释放给高优先级站点。

逻辑环

在令牌传递网络中,站点不必要真的连接在一个环中,这个环只是逻辑的。图12.20显示了能创造逻辑环的、四种不同的物理拓扑结构。

  • 物理环拓扑结构中,当一个站点把令牌传给它的后继站点时,其他站点无法看到令牌;后继站点是线路中的下一个。这意味着,令牌不必知道下一个后继站点的地址。这种结构的问题是:如果链路中的一个链路(在两个邻近站点之间的介质)出现了故障,整个系统就失败了。
  • 二重环拓扑结构中,则使用了一个二级(辅助的)环,二级环的运行方向与主环的正好相反。只在紧急情况才使用二级环(就像汽车的备用胎一样)。如果在主环链路中的一个链路发生了故障,系统会自动地将两个环合并为一个临时的环;当发生故障的链路修复好后,辅助环又进入空闲状态。注意:要运行这种拓扑结构,每个站点都要有两个传输端口和两个接收端口。
    被称为光纤分布式数据接口 Fiber Distributed Data Interface, FDDI铜线分布式数据接口 Copper Distributed Data Interface, CDDI 的高速令牌环网络,就使用这个拓扑结构。
  • 总线环拓扑结构(也称为令牌总线)中,站点与称为总线的单根光纤连接。然而,它们也组成了一个逻辑环,因为每个站点都知道它后继站点的地址(为了令牌管理的目的,它们同样也知道前驱站点的地址)。当一个站点完成数据发送后,它释放令牌、并将后继站点的地址插入令牌中,只有地址与令牌的目的地址相匹配的站点,才能访问共享介质。IEEE标准化的令牌总线局域网,就使用这种拓扑结构。
  • 星状环拓扑结构中,物理拓扑结构是星状的。其中,有一个网络集线器充当连接器。网络集线器中的电线形成了环;站点通过两根电线与环相连。这种拓扑结构使得网络不容易发生故障,因为如果一个链路失败了,网络集线器可以忽略它,而其他的站点还是能够运行的。而且,从环中增加和减少站点比较方便。IBM设计的令牌环局域网仍在使用这种拓扑结构。

12.3 通道化

通道化 channelization 也是一种多路访问方挂。在这一方法中,不同的站点间在时间上、频率上或通过编码来共享链路的可用带宽,相当于形成不同的通道。本节讨论三种通道化协议:FDMA、TDMA和CDMA。第16章中,讨论移动电话系统时,将看到所有这些方法的应用。

12.3.1 频分多路访问 FDMA

频分多路访问 frequency-division multiple access, FDMA中,可用的带宽由所有的站点共享:公共通道的可用带宽被划分成频带,每一个站点都使用分配给它的频带发送数据。换言之,每一个频带都预留给特定的站点使用,该频带永远属于一个站点。每个站点也使用带通滤波器来限定传输器的频率。为了防止站点间的冲突,通过小的防护频带 guard bands 将指定的波段彼此分开。图12.21说明了FDMA的概念。

FDMA为整个通信期间指定一个预定频率的频带。这就意味着,FDMA能方便地使用流数据(无法分组的连续的数据流)。在第16章中,将看到移动电话系统是如何利用这一特性的。

必须强调的是,虽然FMDA与FDM概念上看似相似,但是两者之间存在区别

  • 第6章介绍的FDM是一种物理层技术,能组合低带宽通道的负载、并使用一个高带宽通道来传输它们,这些被组合的通道是低通的。多路复用器调制信号、将它们组合并产生一个带通信号。每个通道的带宽都被多路复用器移动了 The bandwidth of each channel is shifted by the multiplexer
  • 另一方面,FDMA是数据链路层的一种访问方法。每个站点的数据链路层都告知它的物理层,把传递给它的数据转换成带通信号,且信号必须在被指定的频带中产生。在物理层并没有实际的多路复用器存在。每个站点产生的信号是自动带通过滤的。当它们被发送到公共通道时,它们是混合在一起的

12.3.2 时分多路访问(TDMA)

时分多路访问 time-division multiple access, TDMA 中,所有的站点在时间上共享通道的带宽:每一个站点被分配一个时隙,只有在这一时隙内它才能够发送数据。每个站点在指定的时隙中传输数据。图12.22说明了TDMA的概念。

TDMA的主要问题在于:如何使不同的站点达到同步。每个站点都要知晓自身时隙的开始点和所处的位置。如果站点分布在一个广泛的区域内,那么系统产生的传播延迟会给前述问题带来困难。为了使延迟得到补偿,我们插入了保护时间 guard times 。通过在时隙开始点插入同步位(通常称为前导位),我们完成同步化。

在TDMA中,带宽被视为是时间上共享的一个通道。同样要强调,虽然TDMA与TDM在概念上看似相似,但它们也存在不同。

  • 第6章中介绍的TDM是一种物理层技术,它将来自低速通道的数据组合起来、并使用一个高速通道来传输它们。这个过程使用一个物理多路复用器,从每个通道交叉存取数据单元。
  • 另一方面,TDMA是数据链路层的一种访问方法。每个站点的数据链路层都告知它的物理层使用指定的时隙。在物理层并没有实际的多路复用器存在

12.3.3 码分多路访问 CDMA

码分多路访问 code-division multiple access, CDMA 的概念,在几十年前就已经提出来了。电子技术的新发展使得它的实现成为可能。与FDMA不同,CDMA仅有一个通道占据链路整个的带宽。而与TDMA不同的是,所有的站点都可以同时发送数据,没有时间的共享问题。即在CDMA中,一个通道同时承载所有的传输

总体来说,在码分多路访问中,站点使用不同的编码以达到多路访问。CDMA基于编码理论、并使用芯片序列,且通过使用例如 Walsh 表的正交编码方法来产生芯片序列。这些在后文中会一一介绍。

1. 类比

我们先来给出一个类比。CDMA简指使用不同的编码来通信。例如,在一个大房间里有许多人,有两个人能用英语通话、而其他的人不懂英语。另外两个人能用中文通话,也只有他们两人懂中文,依此类推。换言之,公共通道即该例中的房屋空间,几对人很容易进行沟通,却要使用不同的语言(编码)。

2. 思想

我们假设有四个站点 1,2,3,41, 2, 3, 41,2,3,4 连接在同一通道上。来自站点 111 的数据是 d1d_1d1​ ,站点 222 的是 d2d_2d2​ ,依此类推。分配给第一个站点的编码是 c1c_1c1​ ,第二个的是 c2c_2c2​ , 依此类推。假定被分配的编码有两个特性:

  1. 两个编码相乘得 000(正交)
  2. 编码自身相乘得 444(站点的数量)。

通过这两个假想的特性,看看以上四个站点如何使用同一公共通道同时发送数据,如图12.23所示。

站点 111 将它的数据与编码相乘(正如我们将看到的那样,这是一种特殊的乘法)得到 d1×c1d_1\times c_1d1​×c1​ ,站点 222 将它的数据与编码相乘得到 d2×c2d_2 \times c_2d2​×c2​ , 依此类推。如图中方块部分所示,通道上的数据是所有这些结果的总和,任何站点想要接收的数据是发送方的编码和数据的乘积。

例如,假定站点 111 和站点 222 正在通话,站点 222 想知道站点 111 在说什么。它在通道中将数据和站点 111 的编码 d1d_1d1​ 相乘。因为 c1×c1=4c_1\times c_1=4c1​×c1​=4 ,但 c2×c1,c3×c1,c4×c1c_2 \times c_1,\ c_3 \times c_1, c_4 \times c_1c2​×c1​, c3​×c1​,c4​×c1​ 都为 000 ,站点 222 为了获取从站点 111 传来的数据,还需将结果除以 444 。
data=(d1c1+d2c2+d3c3+d4c4)×c1=d1c1c1+d2c2c1+d3c3c1+d4c4c1=4×d1\textrm{data} =(d_1 c_1+d_ 2c_2+d_3c_3+d_4c_4) \times c_1 = d_1c_1 c_1+d_2 c_2 c_1+d_3 c_3 c_1+d_4 c_4 c_1=4 \times d_1data=(d1​c1​+d2​c2​+d3​c3​+d4​c4​)×c1​=d1​c1​c1​+d2​c2​c1​+d3​c3​c1​+d4​c4​c1​=4×d1​

3. 芯片

CDMA基于编码理论。每个站点被指定一个编码,编码是一个被称之为芯片 chips 的数字序列,如图12.24所示。图中的编码是上一个例子中的。

后面的内容还会介绍如何选择序列。现在,我们需要知道的是:序列的选择并非随机的,它们是被谨慎选择的,它们被称为正交序列 orthogonal sequences ,有以下的特性:

  1. 每个序列有 NNN 个元素,而 NNN 正是站点的数量
  2. 如果将序列乘以一个数,序列中的每个元素都乘以这个数。这称为序列和标量的乘积。例如,2×[+1+1−1−1]=[+2+2−2−2]2 \times [+1\ +1\ -1 - 1 ]=[ +2\ +2\ -2\ -2]2×[+1 +1 −1−1]=[+2 +2 −2 −2]
  3. 如果将两个相同序列的元素逐个相乘,并将结果相加,结果为 NNN , 而 NNN 是每个序列中元素的数量,也是站点的数量。这就是两个相同序列的内积。例如,[+1+1−1−1]×[+1+1−1−1]=1+1+1+1=4[+1\ +1\ -1\ - 1] \times [+1\ +1\ - 1\ - 1 ]=1+ 1 +1+1=4[+1 +1 −1 −1]×[+1 +1 −1 −1]=1+1+1+1=4
  4. 如果将两个不同序列的元素逐个相乘,并将结果相加,结果为 000 。这就是两个不同序列的内积。例如,
    [+1+1−1−1]×[+1+1+1+1]=1+1−1−1=0[+1\ +1\ - 1\ - 1]\times [+1\ +1\ +1\ +1]=1+1 - 1- 1=0[+1 +1 −1 −1]×[+1 +1 +1 +1]=1+1−1−1=0
  5. 将两个序列相应的元素相加,结果是另一个序列。例如,
    [+1+1−1−1]+[+1+1+1+1]=[+2+200][+1\ +1\ - 1\ -1] + [+1\ +1\ +1\ +1]=[+2\ +2\ 0\ 0][+1 +1 −1 −1]+[+1 +1 +1 +1]=[+2 +2 0 0]

4. 数据的表示

我们遵循的编码规则:如果一个站点发送位 000,编码为 −1- 1−1 ,如果发送位 111,编码为 +1+1+1 。当站点空闲时,它不发送信号,编码为 000 。如图山5所示。

5. 编码和解码

作为一个简单的例子,我们来看看四个站点如何在 111 位间隔 a 1-bit interval 内共享链路。可以在额外的时间间隔,很容易地重复这个过程 The procedure can easily be repeated for additional intervals 。我们假定站点 111 和站点 222 正在发送 000 位,站点 444 正发送 111 位,而站点 333 是静止的。发送方的数据被依次编码为 −1,−1,0,+1-1, -1, 0, +1−1,−1,0,+1 。每个站点将相应的数与它的芯片序列(正交序列)相乘,这对每个站点来说都是唯一的。结果是产生一个新的序列,并被发送到通道上。为了简化,我们假定所有的站点在同一时点发送结果序列。通道上的序列是所有四个序列的总和。图12.26说明了该种情况。

现在假定静止的站点 333 正在"听"站点 222 。站点 333 将通道上的数据乘以站点 222 的编码 [+1−1+1−1][+1\ -1\ +1\ -1 ][+1 −1 +1 −1] ,得到:[−1−1−3+1]×[+1−1+1−1]=−4/4=−1⇒位0[- 1\ -1\ -3\ +1]\times [+1\ - 1\ +1\ - 1] = -4/4=- 1\Rightarrow 位 0[−1 −1 −3 +1]×[+1 −1 +1 −1]=−4/4=−1⇒位0

6. 信号水平

如果我们说明了每个站点产生的数字信号、及目的地所恢复的数据(见图12.27) ,就能更好的理解这个过程。图中显示了每个站点相应的信号(为简化使用了 NRZ-L)以及在公共通道中的信号。

图12.28显示了,通过使用站点 222 的编码,站点 333 可以检测到来自站点 222 的数据。「通道中的总数据」与「代表站点 222 的芯片编码」的信号相乘(内积运算)产生一个新的信号。然后,站点将信号下的区域积分并相加 integrates and adds the area under the signal ,得到的值是 −4-4−4 ,−4- 4−4 除以 444 的结果 −1- 1−1 代表位 000 。

7. 序列的产生

为产生芯片序列,我们使用一张行列数相同的 Walsh,这是一张二维表(见图12.29)。

Walsh 表中,每一行是一个芯片序列。单芯片序列的 W1W_1W1​ 有一行和一列。我们可以为 W1W_1W1​ 选 +1+1+1 或 −1- 1−1 ,这里选 +1+1+1 。根据 Walsh 表的通用规则和示例,如果我们知道 NNN 序列 WNW_NWN​ 的表,我们就能产生 2N2N2N 序列 W2NW_{2N}W2N​ 的表,如图12.29所示。

带上标线的 WN‾\overline {W_N}WN​​ 代表 WNW_NWN​ 的反码,这里 +1+1+1 的反码是 −1- 1−1 ,而 −1- 1−1 的反码是 +1+1+1 。图12.29也说明了我们如何从 W1W_1W1​ 产生 W2W_2W2​ 和 W4W_4W4​ 。在我们选择了 W1W_1W1​ 之后,W2W_2W2​ 就能从四个 W1W_1W1​ 中得出,最后一个是 W1W_1W1​ 的反码。在 W2W_2W2​ 产生之后,W4W_4W4​ 就能从四个 W2W_2W2​ 得出,最后一个是 W2W_2W2​ 的反码。当然 ,W8W_8W8​ 由四个 W4W_4W4​ 组成,依此类推。注意,在 WNW_NWN​ 产生后,会分配给每个站点「与某一行对应的芯片」。我们需要强调的是,(Walsh 表中的)序列个数 NNN 需要是 222 的幂次 N=2mN=2^mN=2m 。

【例12.6】找出以下网络的芯片:1. 两个站点;2. 四个站点。
解:我们可以使用图12.29中的 W2W_2W2​ 和 W4W_4W4​ 。

  1. 对于两个站点的网络,我们有 [+1+1][+1\ +1][+1 +1] 和 [+1−1][+1\ - 1][+1 −1] 。
  2. 对于四个站点的网络,我们有 [+1+1+1+1],[+1−1+1−1],[+1+1−1−1][+1\ +1\ +1\ +1 ],\ [+1\ - 1\ +1\ -1],\ [+1\ +1\ -1\ -1][+1 +1 +1 +1], [+1 −1 +1 −1], [+1 +1 −1 −1] 和 [+1−1−1+1][+1\ -1\ -1\ +1][+1 −1 −1 +1] 。

【例12.7】如果在网络中有 909090 个站点,序列个数是多少?
解:序列个数需要是 TTT 。我们可以选择 m=7m=7m=7 ,N=27=128N=2^7=128N=27=128 。那么我们可以使用 909090 个序列作为芯片。

【例12.8】如果用通道中总的数据乘以发送方的芯片编码再除以站点个数,那么可以证明:接收站点能够接收特定发送方发送的数据。
解:让我们使用前面的四个站点的例子证明第一个站点。我们可以说通道上的数据 D=d1c1+d2c2+d3c3+d4c4D=d_1c_1+d_2 c_2+d_3 c_3+d_4 c_4D=d1​c1​+d2​c2​+d3​c3​+d4​c4​ 。需要得到站点 111 发送的数据的接收方用 c1c_1c1​ 乘以这个数据。
Dc1=(d1c1+d2c2+d3c3+d4c4)×c1=d1c1c1+d2c2c1+d3c3c1+d4c4+c1=d1×N+d2×0+d3×0+d4×0=d1×N\begin{aligned} Dc_1 &=(d_1c_1 +d_2 c_2 +d_3 c_3 +d_4 c_4 )\times c1 \\ &= d_1 c_1 c_1 + d_2 c_2c_1 + d_3 c_3 c_1 + d_4 c_4 + c_1 \\ &= d_1 \times N + d_2 \times 0 + d_3 \times 0 + d_4 \times 0 \\ &=d_1 \times N \end{aligned}Dc1​​=(d1​c1​+d2​c2​+d3​c3​+d4​c4​)×c1=d1​c1​c1​+d2​c2​c1​+d3​c3​c1​+d4​c4​+c1​=d1​×N+d2​×0+d3​×0+d4​×0=d1​×N​

当我们将结果除以 NNN ,我们就得到 d1d_1d1​ 。

【计算机网络】第三部分 数据链路层 (12) 多路访问相关推荐

  1. 计算机网络第三章——数据链路层(仅记录我所认为重要的知识点)

    计算机网络第三章--数据链路层 数据链路层使用的信道类型 点对点信道 广播信道 数据链路层位置 数据链路层的3个基本问题 数据链路和帧 链路 数据链路 数据链路层传输的是帧 封装成帧 透明传输问题 差 ...

  2. 【计算机网络】南航计算机网络第三章 数据链路层

    文章目录 计算机网络第三章 数据链路层 3.1 使用点对点信道的数据链路层 帧--数据链路层的协议数据单元 基本问题 封装成帧 透明传输 差错检测 3.2 点对点协议PPP(Point-to-Poin ...

  3. 计算机网络第三章数据链路层习题答案

    计算机网络第三章数据链路层习题答案 3-02数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点. 答:链路管理 帧定界 流量控制 差错控制 将数据和控制信息区分开 透 ...

  4. 计算机网络第三章 数据链路层重点复习(点对点)

    目录 前言 系列文章目录 3.1 使用点对点通信的数据链路层 3.1.1 点对点通信的主要步骤 3.1.2 三个基本问题 3.2 点对点协议PPP 3.2.1 PPP协议的特点 3.2.2 PPP协议 ...

  5. 计算机网络 第三章 数据链路层

    有一说一,王道的计算机网络个人感觉不尽如意,数据链路层的内容安排实在是有些乱,里面并不是按照课本来的,而是穿插了很多其它章节的知识. 3.1 数据链路层的功能 数据链路层在物理层提供服务的基础上,向网 ...

  6. 计算机网络第三章-数据链路层

    数据链路层知识结构 文章目录 一.数据链路层的功能 二.组帧 三.差错控制 四.流量控制与可靠传输机制 五.介质访问控制 六.局域网 七.广域网 八.数据链路层设备 一.数据链路层的功能 1.为网络层 ...

  7. 计算机网络(三)数据链路层详解

    目录 第三章 数据链路层和局域网技术 3.1 数据链路层功能 3.2 点到点信道的数据链路 PPP协议的特点 PPP协议的帧格式 PPP协议的工作状态 3.3 广播信道的数据链路 局域网的数据链路层 ...

  8. 计算机网络(三)—— 数据链路层

    本文幕布: 文档链接: https://www.mubucm.com/doc/7psaav2QHtm 密码: 9twi 文章目录 第三章 数据链路层 3.0 数据链路层 1. 数据链路层的信道类型 3 ...

  9. 计算机网络(三)——数据链路层(待完善)

    核心考点: 1.流量控制与可靠传输机制.CSMA/CD原理,特别是争用期和截断二进制指数退避算法 2.网桥的概念和基本原理 3.组帧机制和差错控制机制,特别是循环冗余码和海明码 4.以太网的MAC帧格 ...

最新文章

  1. ​全球首个视频实验期刊JOVE征稿:植物微生物组学方法专刊(牛犇、韦中、高峥、王蒙岑)...
  2. 玩聚的Blog墙 VIII
  3. ETSI GS MEC 012,RNIS API
  4. MybatisPlus中insert方法与insertAllColumn方法的区别
  5. 【若依(ruoyi)】字典管理
  6. 「软件项目管理」软件项目范围计划——需求管理与任务分解
  7. 我的Android进阶之旅------百度地图学习:BDLocation.getLocType ( )值分析
  8. Struts2笔记——通配符和动态方法调用
  9. Win10升级到最新版本
  10. python多线程爬取图虫网图片
  11. 金融人必须掌握的词汇
  12. Gnome3 快捷键
  13. 【线代】行/列分块矩阵中向量正交有什么用?如何表述?向量正交和线性无关有什么关系?
  14. 新型旅游网站热地带SEO优化建议
  15. 深度学习在训练时对图片随机剪裁(random crop)
  16. QQ邮箱的POP3与SMTP服务器是什么?
  17. elasticsearch知识库
  18. 别嫌工资少,高薪资的标准你符合几条
  19. 堆排序(大根堆与小根堆)
  20. 如何集中注意力,专注地干一件事情?

热门文章

  1. DBC文件解析——基于DBCView工具
  2. 清除的文件怎么才能完整准确的恢复呢
  3. 阿里面试Redis最常问的三个问题:缓存雪崩、击穿、穿透(带答案)
  4. php语言的form,PHP语言 HTTP请求类,支持GET,POST,Multipart、form-data
  5. 性能测试:压力测试、负载测试、并发测试和稳定性测试的区别
  6. 【matlab图像处理】图像的算术运算实践
  7. 七把利器助你打造充满竞争力的商业模式
  8. ts和vscode设置中文错误提示
  9. jzoj3290. 【JSOI2013】吃货JYY
  10. ACRCOCAD盘凸轮DMIS程序