计算机网络-第六章-数据链路层和局域网

第六章 数据链路层和局域网

网络层解决了以子网为单位的通告,本章研究的是:

  • 子网内部节点到节点(相邻节点)的通信
  • 主机到网关路由器的通信
  • 网关路由器之间的通信

广域网的链路层比较简单,因此本章重点讲解局域网的链路层;同样,是先原理,后实现

  • 理解数据链路层服务的原理:

    • 检错和纠错
    • 共享广播信道:多点接入(多路访问)
    • 链路层寻址
    • LAN:以太网、WLAN、VLANs
    • 可靠数据传输,流控制(RTT和流量控制传输层已经讲过了)
  • 实例和各种链路层技术的实现


WAN—— 广域网,LAN —— 局域网

为什么这样选择,可以再听一下

  1. WAN:网络形式采用点到点链路(比如两个国家之间拉一条海底电缆连接路由器)
    • 带宽大
    • 距离远(延迟大) 带宽延迟积大
    • 如果采用多点连接方式
      • 竞争方式:一旦冲突代价 大
      • 令牌等协调方式:在其中 协调节点的发送代价大
  • 点到点链路的链路层服务 实现非常简单,只要封装和解封装就行
  1. LAN(局域网)一般采用多点连接方式
    • 连接节点非常方便(指有线)
    • 接到共享型介质上(或网络 交换机),就可以连接所有其他节点
  • 多点连接方式网络的链路层 功能实现相当复杂
    • 多点接入:协调各节点对共 享性介质的访问和使用
    • 竞争方式:冲突之后的协调 ;
    • 令牌方式:令牌产生,占有 和释放等

6.1 导论

6.1.1 相关术语

  • 节点:主机和路由器是节点(网桥和交换机也是)
  • 链路:沿着通信路径,连接个相邻节点通信信道的是
    • 有线链路(网线,光纤,光缆等)
    • 无线链路
    • 局域网,共享性链路
  • 帧:第二层协议数据单元帧frame,封装数据报(数据报是网络层的分组)

数据链路层负责从一个节点通过链路将(帧中的)数据报发送到相邻的物理节点(一个子网内部的2节点)

6.1.2 链路层协议分类

链路层的协议也大致分为如下三类

数据报(分组)在不同的链路上以不同的链路协议传送:

  1. 第一跳链路:以太网
  2. 中间链路:帧中继链路
  3. 最后一跳:802.11 (无线局域网通用的标准)

不同的链路协议提供不同 的服务(比如在链路层上提供( 或没有)可靠数据传送)


传输类比

  • 从Princeton到Lausanne
    • 轿车: Princeton to JFK
    • 飞机: JFK to Geneva
    • 火车: Geneva to Lausanne
  • 旅行者=数据报datagram
  • 交通段=通信链路 communication link
  • 交通模式=链路层协议 : 数 据链路层和局域网 protocol
  • 票务代理=路由算法 routing algorithm

6.1.3 链路层服务

序号 服务 说明 补充
1 成帧,链路接入 1. 将数据报封装在帧中,加上帧头、帧尾部
2. 如果采用的是共享性介质,信道接入获得信道访问权
3. 在帧头部使用“MAC”(物理)地址来标示源和目的(不同于IP地址)
2 在(一个网络内)相邻两个节点完成可靠数据传递 (在传输层已经讲过了)
1. 有线链路出错率低,很少使用(如光纤和双绞线电缆)
2. 无线链路出错率高,常常使用
3 流量控制 使得相邻的发送和接收方节点的速度匹配 这里不是传输层的端到端的流量控制,而是仅仅是相邻节点间的流量控制
4 错误检测 1. 差错由信号衰减和噪声引起
2. 接收方检测出的错误;并通知发送端进行重传或丢弃帧
5 差错纠正 接收端检查和纠正bit错误,不通过重传来纠正错误 此处是接收端自己纠错
6 半双工和全双工 半双工:链路可以双向传输,但一次只有一个方向(全双工是同时有两个方向) 像警察在通信的时候都会以over结束,其实使用的就是半双工,双方无法同时说话

6.1.4 链路层可靠性

  • Q: 为什么在链路层和传输层都实现了可靠性?
  • 可靠性是一般化的链路层服务,不是所有的链路层都提供这些服务;一个特定的链路层只是提供上述一部分的服务

在相邻节点间(一个子网内)进行可靠的转发

  • 我们已经在传输层一章学过
  1. 在低差错链路上很少使用 (光纤,一些双绞线)

    • 出错率低,没有必要在每一个帧中做差错控制的工作,否则会使协议更加复杂

      • 发送端对每一帧进行差错控制编码,根据反馈做相应的动作

      • 接收端进行差错控制解码,反馈给发送端(ACK,NAK)

      在本层放弃可靠控制的工作,在网络层或者是传输层做可靠控制的工作,或者根本就不做可靠控制的工作

  2. 在高差错链路上需要进行可靠的数据传送

    • 高差错链路比如无线链路

Q:为什么要在采用无线链路的网络上,链路层做可靠数据传输工作 ;还要在传输层做端到端的可靠性工作?

  • 原因:出错率高,如果在链路层不做差错控制工作,漏出去的错误比较高;到了上层如果需要可靠控制的数据传输代价会很大 —— 出错率较大的时候,传到上层再纠错代价大

6.1.5 网络适配器NIC

链路层功能实现的位置

  • 在每一个主机上差若干网卡,每个网卡实现链路层和相应物理层的功能
  • 路由器可以插多个网卡,实现链路层和相应物理层的功能
  • 交换机的每个端口上也有网卡

  • 网卡也叫作网络适配器
  • 链路层功能在“适配器”上 实现 (aka network interface card NIC) 或 者在一个芯片组上
    • 以太网卡,802.11 网卡 ; 以太网芯片组
  • 实现链路层和相应的物 理层功能
  • 接到主机的系统总线上
  • 网卡是硬件、软件和固件的综合体
  • 网卡也有自己的MAC地址,写死在了网卡当中

可以看到,网卡中有controller和physical组成

6.1.6 链路层通信

  • 发送方:

    • 在帧中封装数据报(数据报是在帧里面的)

    • 加上差错控制编码,实现RDT(可靠数据传输)和流量控制功能等

      (帧是一个bit一个bit打,也可以是一个word一个word)

  • 接收方:

    • 检查有无出错,执行rdt和流量控制功能等
    • 解封装数据报,将至交 给上层

6.2 差错检测和纠正

6.2.1 差错检验和冗余位

  • EDC=差错检测和纠正位(冗余位)

  • D = 差错检测保护的数据,可以包含头部字段错误检测

  • 错误检测不是100%可靠的! ,协议会漏检一些错误,但是很少

  • 更长的EDC字段可以得到更好的检测和纠正效果

6.2.2 Internet校验和

这个是谈到了互联网中的校验和

目标: 检测在传输报文段时的错误(如位翻转),(注:仅仅用在传输层,这是互联网的校验和)

  • 发送方:

    • 将报文段看成16-bit整 数
    • 报文段的校验和: 和 (1’ 的补码和)
    • 发送方将checksum的 值放在‘UDP校验和’ 字段
  • 接收方:

    • 计算接收到的报文段的校验和
    • 检查是否与携带校验和字 段值一致:
      • 不一致:检出错误
      • 一致:没有检出错误,但可能还是有错误

有更简单的检查方法 全部加起来看是不是全1

6.2.3 奇偶校验

奇校验还是偶校验是实现约定好的,就是D和EDC 加起来之后看1的个数是奇数还是偶数

(1) 单位奇偶校验

  • 只能检测一位出错,而且无法判断哪位出错,也就是无法纠错

(2) 2维奇偶校验

2维奇偶校验可以纠错

横向和纵向都有校验码,纵横都出错的时候就能够定位从而纠错了


但是如果出现下面的情况就无法校验了

  • 这样平行的两个校验

6.2.4 CRC循环冗余校验

CRC在实际中广泛使用,比如以太网 802.11WiFi,ATM

(1) 前置知识

  1. 模二运算(包括加、减、乘、除),其中加减实际上都是一样的

  • 就是不进行进位和借位,每位的运算结构都模2,
  • 实际结果等同于异或
  • 在乘除中,就是在每次运算的结果进行相减的时候也使用模2减法

  1. 位串的两种表示
  • 二进制的位串一般表示为1011
  • 但是还可以表示为 1x3 + 0 + 1x1 + 1x0 = x3 + x1 + 1

  1. 生成多项式()
  • 生成多项式是一种特殊的多项式,每个项的系数都是1,这是生成EDC和检查所使用的的位模式
  • 生成多项式可以转换为二进制的串,r次方表示第r+1位
  • 例如 x3 + x1 + x0 → 1011

生成多项式是双方协商获得的,协商有 r + 1位,也就是最高位是 r次方


  1. 发送方和接收方的约定(也就是算法的目标)
  • 发送方发送 D和EDC,EDC是CRC获得的附加位R
  • 然后接收方接受了 D和R,将 <D, R> 除以 G(预先统一的生成多项式);如果非0,检查出错误
  • 能检查出所有少于r + 1为的突发错误
    实际中广泛使用(以太网、802.11 WiFi、ATM)

(2) 原理(过程)

发送方如何求得R

已知发送方有了数据D,CRC约定的长度为r,生成多项式为G;要求的EDC为R

  • 我们希望有 D·2r ⊕ R = nG

    (因为发送方获得了D和R之后,要用<D, R>整除G,我们希望得到这个目标,其中 <D, R>是D左移r位得到 D·2r,然后模2加R得到的D·2r ⊕ R)

  • 就有 D·2rR ⊕ R = nG ⊕ R

  • 等价于 D·2r = nG ⊕ R (模2运算的 ⊕ 就可以看做是 加法)

  • 最终我们要求得的 R = remainder[(D·2r) / G],也就是余数

(3) 例子

也就是最后求R的例子

实际运算的时候也可以使用二进制的多项式表示来除法

(4) 性能分析

  1. 可以检测突发错误和突发长度
  2. CRC检错性能描述
    • 能够检查出所有的1bit错误
    • 能够检查出所有的双bits的错误
    • 能够检查出所有长度=r或者<r 位的错误
    • 出现长度为r+1的突发错误,检查不出的概率是 1 / 2r-1
    • 出现长度大于r+1的突发错误,检查不出的概率 1 / 2r

6.3 多点访问协议MAP

  • 广域网一般采用点到点连接的方式(广域网的单位一般是子网),不存在多点记录问题
  • 但是局域网很多使用多点连接,MAP此时就是必要的
  • MAP是局域网特有的访问方式

6.3.1 多路访问链路

两种类型的链路(一个子网内部链路连接形式):

  • 点对点
    • 拨号访问的PPP
    • 以太网交换机和主机之间的点对点链路
  • 广播 (共享线路或媒体)
    • 传统以太网
    • HFC上行链路
    • 802.11无线局域网

  • 2个或更多站点同时传送: 冲突(collision)
  • 多个节点在同一个时刻发送,则会收到2个或多个信号叠加,接受到的信号不能正常信号(电磁波叠加到了一起),没有区分谁发送的是什么,就失效了

6.3.2 MAP介绍及目标

MAP是多路访问协议,MAC是多路访问算法,实际上说的是一回事

  • 分布式算法(表明没有全局的控制,都是每个节点自行执行算法的)
  • 多个节点没有额外的信道发送接受数据、协调信道使用的控制信息都要在一个信道中传送

算法目的:决定节点什么时候可以发送


6.3.3 理想MAP的要求

  • 给定:Rbps带宽的广播信道

要求:

  1. 当一个节点要发送时,可以以R速率发送.

  2. 当M个节点要发送,每个可以以R/M的平均速率发送

  3. 完全分布的(也就是各个节点不需要额外的协调信息,只根据局部的信息决定什么时候可以发送)

    1. 没有特殊节点协调发送
    2. 没有时钟和时隙的同步(当然实际上是需要时间的)
  4. 简单

6.3.4 MAP/MAC分类

3大类

类型 说明
信道划分 把信道划分成小片(时间、频率、编码),分配片给每个节点专用
随机访问 信道不划分,任何节点都可以任意地使用信道
协议允许碰撞,定义了如何检测碰撞,如何从碰撞中恢复过来
依次轮流 1. 节点轮流使用
2. 有的是完全分布,有的是主节点master协调
3. 分布式的采用信令

----------------------------

6.3.5 信道划分MAC协议

  1. TDM:不同的人在不同的时刻讲话(轮流说话)
  2. FDM:不同的组在不同的小房间里通信(蝙蝠用蝙蝠的频率,人用人的频率)
  3. CDMA:不同的人使用不同的语言讲话

(1) 时分TDMA

TDMA:time division multiple access

  1. 轮流使用信道,信道的时间分为周期
  2. 每个站点使用每周期中固定的时隙(长度=帧传输时间)传输帧
  3. 缺点:如果站点无帧传输,时隙空闲,造成浪费
  4. 如下:6站LAN,1、3、4有数据报,时隙2、5、6空闲

(2) 频分FDMA

FDMA: frequency division multiple access

  1. 信道的有效频率范围被分成一个个小的频段
  2. 每个站点被分配一个固定的频段
  3. 分配给站点的频段如果没有被使用,则空闲
  4. 例如:6站LAN,1、3、4有数据报,频段2、5、6空闲

(3) 码分CDMA

  1. 所有站点在整个频段上同时进行传输, 采用编码原理加以区分
  2. 完全无冲突
  3. 假定:信号同步很好,线性叠加

比如我发送1,将芯片序列发送;发送0的时候,将芯片序列的反码发送;这些序列是正交的,相互不影响,采用编码的方式可以区分

但是CDMA是第三代通信技术,已经过时了;第四代第五代的通讯是会综合使用TDMA和FDMA的

6.3.6 随机存取MAC协议

检错冲突 与 冲突解决/冲突避免

  1. 当节点有帧要发送时

    • 以信道带宽的全部R bps发送

    • 没有节点间的预先协调

  2. 两个或更多节点同时传输,会发生➜冲突“collision”

随机存取协议规定(这是这个协议的任务,后面的协议都会有这个)

  1. 如何检测冲突
  2. 如何从冲突中恢复(如:通过稍后的重传)

有线介质检测冲突是比较简单的

  • 只要有一个站点发送,电磁波就会充满整个channel,因此所有节点都知道这个时候有站点发送帧了
  • 并且能量的幅度是会随着发送帧的站点数而变化的,也就是说,节点可以根据能量幅度的大小来判断是否发生冲突

随机存储协议的效率的定义:当有很多节点,每个节点有很多帧要发送时,x%的时隙是成功传输帧的时隙

随机MAC协议有如下

  • 时隙ALOHA
  • ALOHA
  • CSMA

以上都是基础协议,下面的两个才是现在真正使用的

  • CSMA/CD(以太网)
  • CSMA/CA(无线网)

(1) 时隙ALOHA

① 假设条件

假设条件

  1. 所有帧是等长的
  2. 时间被划分成相等的时隙,每个时隙可发送一帧
  3. 节点只在时隙开始时发送帧
  4. 节点在时钟上是同步的
  5. 如果两个或多个节点在一个时隙传输,所有的站点都能检测到冲突

② 运行流程

运行

  1. 当节点获取新的帧,在下一个时隙传输
  2. 传输时没有检测到冲突,成功:节点能够在下一时隙发送新帧
  3. 检测时如果检测到冲突,失败:节点在每一个随后的时隙以概率p重传帧直到成功
③ 案例

如下:

每个时刻的含义:

  1. node1、2、3同时发送帧,且都判断到发生冲突了,这个时隙发送失败
  2. node1、2、3都以p的概率进行随机,但是都没有随机到,所以都没有发送,这个时隙发送失败
  3. node1、2到了p的概率,都发送;node3没有发送,这个时隙发送失败
  4. node2发送;node1、3不发送;这个时隙node2发送成功
  5. node1、3不发送
  6. node1、3都发送,这个时隙发送失败
  7. node1、3不发送
  8. node1发送,这个时隙node1发送成功
  9. node3发送成功

延迟没有上限,没有延迟保证(因为一直往后都有可能发生冲突)

④ 优缺点

优点:

  1. 节点可以以信道带宽全速连续传输
  2. 高度分布:仅需要节点之间在时隙上的同步(不需要控制信息,只需要每个站点自己判断)
  3. 简单

缺点:

  1. 存在冲突,浪费时隙
  2. 即使有帧要发送,仍然有可能存在空闲的时隙
  3. 节点检测冲突的时间 < 帧传输的时间(这就意味着即使检测到了冲突,帧也必须全部传输完)
  4. 需要时钟上同步
⑤ 效率分析
  1. 假设N个节点,每个节点都有很多帧要发送,在每个时隙中的传输概率是p
  2. 一个节点成功传输概率是p(1-p)N-1
  3. 任何一个节点的成功概率是= Np(1-p)N-1
  4. N个节点的最大效率:求出使f(P)=Np(1-p)N-1最大的p*(求导获取)
  5. 代入P*得到最大 f(p*)=Np*(1-p*)N-1
  6. N为无穷大时的极限为 1/e=0.37

(2) 纯ALOHA

① 运行流程

无时隙ALOHA:简单、无须节点间在时间上同步:当有帧需要传输:马上传输

  • 这种情况下冲突概率会增加:
    • 帧在t0发送,和其它在[t0 -1, t0 +1]区间内开始发送的帧冲突
    • 和当前帧冲突的区间(其他帧在此区间开始传输)增大了一倍

② 效率分析
  • P(指定节点成功)

    = P(节点传输) · P(其它节点在[t0-1, t0]不传) · P(其它节点在[t0, t0+1不传]

    = p(1-p)N-1 · (1-p)N-1 = p·(1-p)2(N-1)

p(1-p)N-1、(1-p)N-1都是积分得来的

选择最佳的p、N趋向无穷大...

  • P(指定节点成功) = 1/(2e) = 17.5%

因为冲突概率增大了一倍,所以成功率也降低了


Aloha: 发之前不管有无其他节点在传输。如何提高ALOHA的效率?

(3) CSMA(载波侦听多路访问)

CSMA:在传输前先侦听信道:

  • 如果侦听到信道空闲,传送整个帧
  • 如果侦听到信道忙,推迟传送

人类类比:不要打断别人正在进行的说话!

  • 但是冲突仍然可能发生;由传播延迟造成:两个节点可能侦听不到正在进行的传输
  • 冲突:整个冲突帧的传输时间都被浪费了,是无效的传输(红黄相间区域)
  • 注意:传播延迟(距离)决定了冲突的概率(节点依据本地的信道使用情况来判断全部信道的使用情况)

  • 局域网中,最远两个节点的距离越远,时间越长,冲突的可能性越大

(4) CSMA/CD(冲突检测)

CS collision detect:说之前听一听,CD是指边说边听

CSMA/CD:

  1. 载波侦听CSMA:和在CSMA中一样发送前侦听信道
  2. 没有传完一个帧就可以在短时间内检测到冲突
  3. 冲突发生时则传输终止,减少对信道的浪费

冲突检测CD技术,有线局域网中容易实现:

  1. 检测信号强度,比较传输与接收到的信号是否相同
  2. 通过周期的过零点检测

人类类比:礼貌的对话人,两人同时说话的时候一方会先停止

CD在有形的介质中容易做到,因为多个站点发送,介质中能量的幅度会变化

CSMA/CD(冲突检测)

(5) 以太网CSMA/CD

以太网使用的就是CSMA/CD算法,以太网会在下一节讲到

① 运行流程
  1. 适配器获取数据报,创建帧

  2. 发送前:侦听信道CS

  • 如果信道空闲:开始传送帧
  • 如果信道忙:一直等到空闲再发送
  1. 发送过程中,冲突检测CD

    • 没有冲突:成功
    • 检测到冲突:放弃,之后尝试重发
  2. 发送方适配器检测到冲突,除放弃外,还发送一个Jam信号,所有听到冲突的适配器也是如此

    强化冲突:让所有站点都知道冲突

  3. 如果放弃,适配器进入指数退避状态在第m次失败后,适配器随机选择一个{0,1,2, ,2^m-1}中K,等待K*512位时,然后转到步骤2


第四部发送Jam信号的问题

  • 站点是根据冲突后截止内能量的幅度大小来判断冲突的,但是冲突发生后一个站点会取消发送,这个时候有站点可能检测不到冲突
  • 因此发送一个Jam信号表示冲突,让所有站点都知道冲突
② 二进制指数退避算法
  • 目标:适配器试图适应当前负载,在一个变化的碰撞窗口中随机选择时间点尝试重发

    • 高负载:重传窗口时间大,减少冲突,但等待时间长

    • 低负载:使得各站点等待时间少,但冲突概率大

      在碰撞概率与延迟时间取得一个均衡

  1. 首次碰撞:在{0,1}选择K;延迟K*512位时(两个站点发送成功的概率是1/2)
  2. 第2次碰撞:在{0,1,2,3}选择K (成功的概率是3/4)
  3. 第10次碰撞:在{0,1,2,3,……,1023}选择K(成功的概率更大)

最大就是1024了


  • 载荷越重,连续碰撞越多
  • 碰撞越多,窗口越大,双方选择同一个值的概率就降低了,碰撞概率降低了,成功发送的概率越大了
  • 但是平均等待时间多了
③ 效率分析

定义局域网内的协议,首先要规范最远举例,也对应着最大传播延迟

  • Tprop = LAN上2个节点的最大传播延迟
  • ttrans = 传输最大帧的时间

以下两种情况下效率会变为1

  • 当tprop 变成0时:那么传播延时几乎为0,frame立即发送到达,不会有冲突
  • 当ttrans 变成无穷大时:frame非常大,只要占有channel,其他节点就会一直监听到,就不会发送;也就不会发生冲突

总结:比ALOHA更好的性能,而且简单,廉价,分布式!

(6) 无线局域网CSMA/CA

这个也是为了提高信道的利用率

CA:collision avoidance 冲突避免

① WLAN架构

WLAN分为有基础设施的模式,还有自组织(无基础设施)的模式;此处探讨的是有基础设施的模式

有基础设施的链路(如下)

  • 无限主机接入基站AP
  • AP在接入到网络

WLAN的构成有:基站(AP)、无线链路、移动主机节点

自组织模式,自动成网:一个节点不仅是起点或者目标,还可以是中转节点

② 不进行冲突检测CD

简而言之就是两个原因 1. 检测不到;2. 检测到了也没用


不是冲突检测,是因为在无线网中冲突很难检测

无线介质中是会衰减的(有线截止衰减的幅度很小)

  1. 无线介质的幅度随着距离平方的增大而减小
  2. 多个节点可以同时传电磁波,同一时间干扰的情况比较严重

  • 802.11: CSMA
    • 发送前侦听信道,不会和其它节点正在进行的传输发生冲突
    • 发送的时候全速发送,并且不做冲突检测

发送的时候不进行冲突检测

  • 在以太网中检测出冲突立即停止可以减少对信道的浪费率
  • 但是在WLAN中(CD是指 collision detect冲突检测)
    • 无法做CD:做冲突检测时,由于无线信号会衰减,自己的发出信号会远大于其他节点发过来的电磁波信号,也就是不一定能检测出来
    • 做了CD也没用:即使检测到了,但是成功 ≠ 不冲突:在LAN中,不冲突 ≈ 成功;但是在WLAN中 冲突和成功无关,不冲突也不意味着成功

如下:

  • 不冲突不意味着成功

  • 隐藏终端问题:发送方A和C检测不到彼此冲突了(因为发送范围有限)
  • 但是对于B来说确实冲突了

同时

  • 冲突不意味着不成功

  • 可以看到,发送方BC冲突了,但是并不影响接收方AC
③ 冲突避免CA流程

在事前就进行抛色子来避免冲突

发送方

  1. 如果站点侦测到信道空闲持续DIFS长,则传输整个帧(no CD)
  2. 如果侦测到信道忙碌,那么选择一个随机回退值,并在信道空闲时递减该值;如果信道忙碌,回退值不会变化
  3. 到数到0时(只生在信道闲时)发送整个帧;
  4. 如果没有收到ACK, 增加回退值,重复2

发送方:

  • 如果帧正确,则在SIFS后发发送ACK

就是通过 “选择一个随机回退值” 来避免冲突

在有线网络中没有ACK机制,因为有线网络比较稳定;但是无线链路需要确认;

例如:由于隐藏终端问题,在接收端可能形成干扰,接收方没有正确地收到。链路层可靠机制


Q:在count down时,侦听到了信道空闲为什么不发送,而要等到0时在发送?

假设2个站点有数据帧需要发送,第三个节点正在发送

  1. LAN CD:让2者听完第三个节点发完,立即发送
    • 如果冲突:放弃当前的发送,避免了信道的浪费于无用冲突帧的发送
    • 代价不昂贵
  2. WLAN : CA
    • 无法CD,一旦发送就必须发完,如冲突信道浪费严重,代价高昂
  3. 思想:尽量事先避免冲突,而不是在发生冲突时放弃然后重发
    • 听到发送的站点,分别选择随机值,回退到0发送
    • 不同的随机值,一个站点会胜利
    • 失败站点会冻结计数器,当胜利节点发完再发

如果发送冲突解决不了,那么就先避免这些冲突


但是冲突也是无法完全避免的

无法完全避免冲突

两个站点相互隐藏

  • A,B 相互隐藏,C在传输
  • A,B选择了随机回退值
  • 一个节点如A胜利了,发送
  • 而B节点收不到,顺利count down到0 发送(由上所述,失败节点会冻结计时器,但是B收不到A的,就不会冻结)
  • A,B的发送在C附近形成了干扰

选择了非常靠近的随机回退值

  • A,B选择的值非常近
  • A到0后发送
  • 但是这个信号还没到达B时
  • B也到0了,发送
  • 冲突

还有另一种冲突避免的方式

思想:允许发送方“预约”信道,而不是随机访问该信道:避免长数据帧的冲突(可选项)

  1. 发送方首先使用CSMA向BS发送一个小的RTS分组
  2. RTS可能会冲突(但是由于比较短,浪费信道较少)
  3. BS广播clear-to-send CTS,作为RTS的响应
  4. CTS能够被所有涉及到的节点听到
  5. 发送方发送数据帧
  6. 其它节点抑制发送

(7) 线缆接入网络

① 网络架构

有线电视公司提供的就是线缆的接入

  • 每家每户通过cable modem接入网络

有线电视公司仅仅提供线缆,但是不提供网络,电视通过线缆接入网络

② 上行和下行

信道分成上行和下行

多个40Mbps 下行(广播)信道,FDM(频分),互联网 → 数字电视等

  • 通过FDM分成若干信道,互联网、数字电视等
  • 互联网信道:只有1个CMTS(terminal system)在其上传输,也就不存在竞争了
  • CMTS下放的时候表明接受电视的地址,电视与自己的进行匹配从而接收

下行没有竞争,通过地址来匹配接受者


多个30 Mbps上行的信道,TDM(时分),用户 → 互联网

  • 多路访问:所有用户使用;接着TDM分成微时隙

  • 有些时隙是竞争式的时隙,有些是预约式时隙

  • 预约式:预约之后才能在这个时隙往信道上发送帧(如果用户往互联网发送数据)

    竞争式时隙:在竞争式时隙节点上行竞争,然后互联网下行预约分配结果,节点根据预约分配结果在对应的预约式时隙上行信息。

采用FDM进行信道的划分:若干上行、下行信道

  • 下行信道:在下行MAP帧中:CMTS告诉各节点微时隙分配方案,分配给各站点的上行微时隙
  • 另外:头端传输下行数据(给各个用户)
③ 上行MAC协议

只有上行的时候才有MAC

DOCSIS: data over cable service interface spec

  • 采用FDM进行信道的划分:若干上行、下行信道
  • 下行信道:
    • 在下行MAP帧中:CMTS告诉各节点微时隙分配方案,分配给各站点的上行微时隙
    • 另外:头端传输下行数据(给各个用户)

  • 上行通道:
  • 采用TDM的方式将上行信道分成若干微时隙:MAP指定
  • 站点采用分配给它的微时隙上行数据传输:分配
  • 在特殊的上行微时隙中,各站点请求上行微时隙:竞争
    • 各站点对于该时隙的使用是随机访问的
    • 一旦碰撞(请求不成功,结果是:在下行的MAP中没有为它分配,则二进制退避)选择时隙上传输

在竞争式时隙中的请求是随机的

6.3.7 轮流MAC协议

(1) 信道划分和随机存储的特点

协议类型 高负载情况 低负载情况
信道划分MAC协议 共享信道在高负载时是有效和公平的 在低负载时效率低下:
只能等到自己的时隙开始发送或者利用1/N的信道频率发送
当只有一个节点有帧传时,也只能够得到1/N个带宽分配(无法完全利用带宽)
随机访问MAC协议 高负载时:冲突开销较大,效率极低,时间很多浪费 在低负载时效率高:单个节点可以完全利用信道全部带宽
总结 信道划分好 随机访问好

轮流MAC协议具有两者的有点,但是比较复杂


(2) 轮询

流程

  • 轮询:主节点依次询问每个节点是否有数据发送
  • 如果节点没有数据传送,则询问下一个节点
  • 如果有数据传输,则占用全部的带宽

优点

  • 高负载:由于是轮询,第一个节点发送完了之后主节点才会问第二个节点;因此不会产生冲突
  • 低负载:同样地,一个节点发送的时候可以完全利用信道的全部带宽

缺点

  1. 轮询开销:轮询本身消耗信道带宽
  2. 等待时间:每个节点需等到主节点轮询后开始传输,即使只有一个节点,也需要等到轮询一周后才能够发送
  3. 单点故障(可靠性差):主节点失效时造成整个系统无法工作

(3) 令牌传递

流程

  • 令牌是一个特殊的帧,有相应的标志位(1为令牌,0为数据)

  • 令牌在各个节点轮转,如果节点没有数据发送,令牌就过去了

  • 如果一个节点要发送数据,就抓住令牌,相应标志位置0,表示数据,然后帧后面加上数据,此时令牌帧就变成数据帧了;

  • 数据帧绕往一周,此过程中目标节点将数据帧copy(注意只是copy),然后数据帧继续转动,转回发送方;

  • 发送方接受,并将其转换成令牌帧

    (绕一周:可能有多个接收方)


优点

  • 高负载和低负载都很好;但是高负载的时候不如信道划分(因为还要负责信道传输);低负载的时候不如随机存取(以为有令牌的轮转时间)

缺点

  • 令牌开销:本身消耗带宽
  • 延迟:只有等到抓住令牌,才可传输
  • 单点故障(token):
    • 令牌丢失系统级故障,整个系统无法传输
    • 生成令牌需要复杂的机制

总结:

多点接入问题:对于一个共享型介质,各个节点 如何协调对它的访问和使用?

  • 信道划分:按时间、频率或者编码
    • TDMA、FDMA、CDMA
  • 随机访问 (动态)
    • ALOHA, S-ALOHA, CSMA, CSMA/CD
    • 载波侦听: 在有些介质上很容易 (wire:有线介质), 但在有些 介质上比较困难 (wireless:无线)
    • CSMA/CD :802.3 Ethernet网中使用
    • CSMA/CA :802.11WLAN中使用
  • 依次轮流协议
    • 集中:由一个中心节点轮询;分布:通过令牌控制
    • 蓝牙、FDDI、令牌环

6.4 局域网LAN

上面仅仅是原理,下面是以太网的具体实现;包括以太网和无线网

6.4.1 MAC地址

MAC也叫物理地址、以太网地址、LAN地址,链路层地址

(1) MAC地址定义

MAC:是LAN的地址,也称为是链路层的地址:

  • 在一个物理网络的内部来标识每一个节点(在网络的内部实现节点和节点的区分),用于使帧从一个网卡传递到与其物理连接的另一个网卡 (在同一个物理网络中)
  • 将数据报封装成帧的时候,是需要节点的MAC地址
  • 48bit MAC地址固化在适配器的ROM,有时也可以通过软件设定
  • 理论上全球任何2个网卡的MAC地址都不相同
  • 例如1A-2F-BB-76-09-AD —— ( 16进制表示 (每一位代表4个bits) )

  • 局域网上每个适配器都有一个唯一的LAN地址
  • 特殊MAC地址 Broadcast address = FF-FF-FF-FF-FF-FF(全为1) 这是广播地址

(2) MAC和IP地址作用

ipv4的地址是32位,ipv6的地址是128位

  • 32bit IP地址: 是网络层的地址

    • 路由时,前n-1跳:用于使数据报到达目的IP子网(路由的单位是子网):使用的地址是ip地址
    • 最后一跳:到达子网中的目标节点(最后的路由器交给主机):使用的地址是MAC地址
  • IP是可以逐渐网上聚集,往下细分;是层次化的,便于路由聚集和计算,减少路由表的数量

  • MAC地址是平面的,只是在唯一地表示一个网卡

中间那个圆,左右两个路由器,穿过那个子网的时候也是使用MAC地址

(3) mac和网络地址分离

IP地址和MAC地址的作用不同

  1. IP地址是分层的(路由的时候使用的是子网的ip一层,在子网内部是具体节点的ip)

    • 一个子网所有站点网络号一致,路由聚集,减少路由表
    • 需要一个网络中的站点地址网络号一致,如果捆绑需要定制网卡非常麻烦
    • 希望网络层地址是配置的;IP地址完成网络到网络的交付
  2. mac地址是一个平面的

    • 网卡在生产时不知道被用于哪个网络,因此给网卡一个 唯一的标示,用于区分一个网络内部不同的网卡即可
    • 可以完成一个物理网络内部的节点到节点的数据交付

  • MAC地址支持移动:可以将网卡移动到其他网络
  • IP地址有层次,不能移动:依赖于节点连接的IP子网,与子网的网络号相同(有与其相连的子网相同的网络前缀)

类比:

  • MAC地址相当于身份证号
  • IP地址相当于通讯地址

(4) 分离的原因

  1. 分离好处

    • 网卡坏了,ip不变,可以捆绑到另外一个网卡的 mac上
    • 物理网络还可以除IP之外支持其他网络层协议, 链路协议为任意上层网络协议, 如IPX等
  2. 捆绑的问题

    • 如果仅仅使用IP地址,不用mac地址,那么它仅支持IP协议
    • 每次上电都要重新写入网卡 IP地址;
    • 另外一个选择就是不使用任何地址;不用MAC地址,则每到来一个帧都要上传到IP层次,由它判断是不是需要接受,干扰一次

(5) LAN的获取

  • MAC地址由IEEE(一个国际组织)管理和分配
  • 制造商购入MAC地址空间(保证唯一性)

6.4.2 ARP协议

ARP(Address Resolution Protocol):地址解析协议

目的:实现的是网络层地址(如IP)链路层地址MAC的转换

(1) 地址转换流程

问题:已知B的IP地址,如何确定B的MAC地址?

  • 在LAN上的每个IP节点都有一个ARP表
  • ARP表:包括一些 LAN节点IP/MAC地 址的映射 < IP address; MAC address; TTL>
    • TTL时间是指地址映射失效的时间,典型是20min(超过TTL将这个映射删除)

流程:A要发送帧给B(B的IP地址已知), 但B的MAC地址不在A的ARP表中(A不一定是路由器,局域网之内的节点也可以转发,不通过路由器,也需要ARP协议)

  1. A广播包含B的IP地址的ARP查询包

    • Dest MAC address = FF-FF-FF-FF-FF-FF(广播地址)

    • LAN上的所有节点都会收到该查询包

  2. B接收到ARP包,回复A自己的MAC地址

    • 帧发送给A

    • 用A的MAC地址(单播)

  3. A在自己的ARP表中,缓存IP-to-MAC地址映射关系,直到信息超时

    • 软状态: 靠定期刷新维持的系统状态
    • 定期刷新周期之间维护的状态信息可能和原有系统不一致

ARP是

  • 即插即用的
  • 节点自己创建ARP的表项
  • 无需网络管理员的干预

(2) 案例

目标:发送数据报:由A通过R到B,假设A知道B的IP地址

  1. 在R上有两个ARP表,分别对应两个LAN(R有两个网卡)

  2. 在源主机的路由表中,发现到目标主机的下一跳的ip地址是 111.111.111.110

    在源主机的ARP表中,发现其MAC地址是E6-E9-00-17-BB-4B(是ip地址对应的Mac地址,已经记录在ARP表中了)

  3. A创建数据报,源IP地址:A;目标IP地址:B

  4. A创建一个链路层的帧,目标MAC地址是R,该帧包含A到B的IP数据报

  5. 帧从A发送到R

  6. 帧被R接收到,从中提取出IP分组,交给上层IP协议实体

  7. R转发数据报,数据报源IP地址为A,目标IP地址为B

  8. R创建一个链路层的帧,目标MAC地址为B,帧中包含A到B的IP 数据报

  9. B收到帧

整个过程中,IP的源地址和目标地址是不变的,但是帧的MAC源地址和MAC目标地址是变化的


6.4.3 以太网Ethernet

(1) 基本概况

  • 目前最主流的LAN技术:98%占有率
  • 最早广泛应用的LAN技术

优点:

  • 廉价:30元RMB 100Mbps,比令牌网和ATM网络简单、廉价
  • 带宽不断提升:10M, 100M, 1G, 10G
  • 技术很强,switch解决了CSMA/CD在大负载情况下信道利用率低的情况

以太网的MAC协议:

  • 采用二进制退避的CSMA/CD 介质访问控制形式

采用的服务:

  • 无连接:帧传输前,发送方和接收方之间没有握手
  • 不可靠:接收方适配器不发送ACKs或NAKs给发送方
    • 递交给网络层的数据报流可能有gap
    • 如上层使用像传输层TCP协议这样的rdt,gap会被补上( 源主机,TCP实体)
    • 否则,应用层就会看到gap

以太网是有线链路,可靠性还是可以的;如果分组真的丢失或者错误,那么链路层不管,上层的TCP协议可能会重传;但是UDP不会管

Metcalfe在餐巾纸上画的以太网的框架

(2) 物理拓扑

  • 总线:在上个世纪90年代中期很流行
    • 所有节点在一个碰撞域内(两个节点同时发送就会冲突),一次只允许一个节点发送(节点会一直监听总线是否有电磁波)
    • 可靠性差,如果介质破损,截面形成信号的反射,发送节点误认为 是冲突,总是冲突

  • 星型:目前最主流
    • 连接选择: hub(无法并行,一发全收) 或者 switch (并行)
    • 现在一般是交换机(switch)在中心
    • 每个节点以及相连的交换机端口使用(独立的)以太网协议(不会和其他节点的发送产生碰撞)


hub:

  • 逻辑上总线型,盒中总线(也就是物理上还是总线型),一发全收,一次只能发一次
  • 提高了可靠性:只有hub外部的介质会破损,但是不会影响switch内部的"总线"
  • 如果要进行扩展,需要hub级联的方式进行,但是以太网使用CSMA/CD的MAC协议,所有节点都在一个碰撞域以内,大大增加了碰撞的概率,因此当负载较大的时候,信道利用率低
  • 节点和HUB间的最大距离是100 m


解决方法:交换机

通过交换机将两两节点分到独立的碰撞域,不仅能解决CSMA/CD负载大效率低的问题,因为冲突概率降低了;还能够并行传输了,效率更高

  • 以太网交换机解决了CSMA/CD的问题

(3) 以太帧结构

这个帧结构是以太网通用的

发送方适配器在以太网帧中封装IP数据报, 或其他网络层协议数据单元

部位 含义 内容/例子 作用 位置原因
preamble 前导码 7B 10101010 + 1B 10101011 用来同步接收方和发送方的时钟速率:
使得接收方将自己的时钟调到发送端的时钟,从而可以按照发送端的时钟来接收所发送的帧
刚接收到帧就能理解调整
dest/source.address 6字节源MAC地址
目标MAC地址
如果:
1. 帧目标地址=本站MAC地址,或是广播地址,接收,递交帧中的数据到网络层
2. 否则,适配器忽略该帧
dest放在前面,先判断是否接受
type 高层协议类型 大多情况下是IP,但也支持其它网络层协议Novell IPX和AppleTalk 决定将帧发送给上层哪个实体
CRC CRC校验码 在接收方校验,如果没有通过校验,丢弃错误帧 放在最后,这样可以一边发送一边生成

(4) 802.3以太网标准

有很多不同的以太网标准

  • 相同的MAC协议(介质访问控制)和帧结构
  • 不同的速率:2 Mbps、10 Mbps 、100 Mbps 、1Gbps、10G bps
  • 不同的物理层标准
  • 不同的物理层媒介:光纤,同轴电缆和双绞线


  • 100BASE-TX
    • T:采用双绞线(TX就是双绞线,纽合使电线的截面积减小,电磁波穿过形成的电势小,减少串扰,也就是线路之间的干扰)
    • 100指的是100bps
    • BASE指的是不做调制(不要讲信号调制成载波,原来是什么信号就是什么信号,BASE基带信号)

(5) 以太网MAC协议

以太网CSMA/CD算法

  1. 没有时隙
  2. NIC如果侦听到其它NIC在发送就不发送:载波侦听carrier sense(NIC是网络适配器,也就是网卡)
  3. 发送时,适配器当侦听到其它适配器在发送就放弃对当前帧的发送,冲突检测collision detection(进行冲突检测CD)
  4. 冲突后尝试重传,重传前适配器等待一个随机时间,随机访问randomaccess(二进制退避算法)

相关可以查看 以太网CSMA/CD一节

优点:

  • 在分组负载较小的情况下,效率很高:这是CSMA/CD本身的特点
  • 在分组负载较大的情况下,效率也高,因为使用了交换机减小了冲突的可能性;同时运行并行

CSMA/CD的执行情况

  1. 当节点要发送的时候,由于节点到交换机接口只有一个线,检测不到冲突的,检测也只是做做样子

  2. 但是当端口发送到目标节点的时候,也会进行CSMA/CD检测,如果有两个分组同时要发送给目标节点,就会冲突,此时也无法并行

    在这种情况下,交换机会将分组缓存下来

(6) 集线器Hub

由上所述,Hub内部还是总线:所有节点在一个碰撞域内,一个时刻只允许一个节点发送

  • Hubs 本质上是物理层的中继器:
    • 从一个端口收,转发到所有其他端口
    • 速率一致
    • 没有帧的缓存
    • 在hub端口上没有CSMA/CD机制:适配器检测冲突(但是switch有)
    • 提供网络管理功能
  • 在高负载的时候效率不高

网段(LAN segments) :可以允许一个站点发送的网络范围

有时也称一个碰撞域为一个网段

  • 在一个碰撞域,同时只允许一个站点在发送
  • 如果有2个节点同时发送,则会碰撞
  • 通常拥有相同的前缀,比IP子网更详细的前缀
  • 所有以hub连到一起的站点处在一个网段,处在一个碰撞域
  • 骨干hub将所有网段连到了一起
  • 通过hub可扩展节点之间的最大距离
  • 通过HUB,不能将10BaseT和100BaseT的网络连接到一起(带宽不同)

缺点:

  • 节点较多,并且分组负载较大的时候,信道利用率低

(7) 交换机switch

switch就是为了解决hub信道利用率低的问题

① 概述

链路层设备:扮演主动角色(端口执行以太网协议)

  • 作用:对帧进行存储和转发

交换机有存储功能,当两个端口的数据要转发到一个端口的时候,会进行缓存,然后按顺序发给目标主机

  • 对于到来的帧,检查帧头,根据目标MAC地址进行选择性转发
  • 当帧需要向某个(些)网段进行转发,需要使用CSMA/CD进行接入控制
  • 通常一个交换机端口一个独立网段(因为端口到主机直接相连,不会有其他主机产生冲突)

特点:

  • 透明:主机对交换机的存在可以不关心
    • 通过交换机相联的各节点好像这些站点是直接相联的一样
    • 有MAC地址;无IP地址

  • 如图,路由器跳转到子网内的节点,中间就是通过交换机,但是不用关心

② 多路同时传输
  1. 主机有一个专用直接到交换机的连接(一个交换机连接一个端口)
  2. 交换机缓存到来的帧(为了防止冲突)
  3. 对每个帧进入的链路使用以太网协议,没有碰撞,且全双工(输入和输出可以同时进行)
    • 每条链路都是一个独立的碰撞域
    • MAC协议在其中的作用弱化了(CSMA/CD协议只是做做样子,因为实际上不会冲突)

③ 交换机转发表

Q: 交换机一个端口收到帧之后,如何知道帧中的目标MAC对应着哪个端口

  • 每个交换机都有一个交换表switch table, 每个表项结构如下

    主机的MAC地址、到达该MAC经过的接口、时戳(保存的时间)(比较像网络层的路由表)

    就是记录每一个端口对应的Mac地址

    存储是为了效率,删除是为了适应变化

④ 交换机自学习

Q:每个表项是如何创建的?如何维护的?

自学习

  • 交换机通过学习得到哪些主机(mac地址)可以通过哪些端口到达
    • 当接收到帧,交换机学习发送站点source所在的端口(网段)
    • 记录发送方MAC地址/进入端口映射关系,在交换表中
⑤ 交换机转发流程

当交换机收到一个帧:

  1. 记录进入链路,发送主机的MAC地址

  2. 使用目标MAC地址对交换表进行索引

  3. 执行如下算法

// 1.如果在转发表中找到了目标项
if entry found for destination
	then{
		// 2.如果目标MAC就是对应着进来的端口
		if dest on segment from which frame arrived  // 过滤
			// 3.则抛弃掉该帧
			then drop the frame
		// 4.否则转发
		else forward the frame on interface indicated 
	}
// 5. 如果找不到目标项,则泛洪
else flood
⑥ 交换机级联

交换机可被级联到一起

  • Q: A → G的发送交换机S1 如何知道经过从 S4 和S3最终达到F?
  • A: 自学习! (和在一个交换机联接所有站点一样!)
  • 加入C→I,那么C→S1→S4→S3→I
⑦ 交换机 vs 路由器

  1. 都是存储转发设备,但层次不同
    • 交换机:链路层设备(检查链路层头部)
    • 路由器:网络层设备(检查网络层的头部)
  2. 都有转发表:
  • 交换机:维护交换表,按照MAC地址转发

    • 执行过滤、自学习和生成树算法
    • 即插即用;二层设备,速率高
    • 执行生成树算法,限制广播帧的转发(防止出现环之后形成广播风暴)
    • ARP表项随着站点数量增多而增多
  • 路由器:路由器维护路由表,执行路由算法

    • 路由算法能够避免环路,无需执行生成树算法,可以以各种拓扑构建网络
    • 对广播分组做限制
    • 不是即插即用的,配置网络地址(子网前缀)
    • 三层设备,速率低

(8) 网络架构及设备

可以看到:

  • 主机通过路由器级联往上走
  • 包括ip子网内部的服务器也都连接到交换机
  • 然后交换机和路由器相连


网卡如下

(9) 网络架构拓扑图

中科大校园网络拓扑结构示意图


中科大校园网主干改造方案物理结构图


中国科学技术大学校园网络主干示意图

分析:整个网络架构是一个树形的

  1. 最底部的是楼层的交换机,主机设备插入网卡,网卡通过以太网双绞线接到交换机的端口上
  2. 然后楼层的交换机接到大楼的交换机
  3. 大楼的交换机接到了校区的交换机
  4. 校区的交换机接入到了网络中心核心节点的交换机;
  5. 服务器集群也接入到交换机上(校园网内部的应用的运行都是在服务器集群中)
  6. 核心节点通过多个有防火墙的路由器接入到ISP(也因此进入校园网内部有防火墙)

注意:

  1. 西区和东区之间会有一条备用的链路(为了可靠性)
  2. 各个校区之间可能形成环(泛洪时可能没完没了,ARP的查询也是广播式查询,如果有环会形成广播风暴)
  3. 因此交换机会有一个生成树算法,同一时间起作用的就是一棵树

安徽省教育科研网络主干示意图

可以看到中科大的网络是整个安徽省网络的中心

6.4.4 无线网WLAN

这里没讲,了解即可;以下讲解的全部都是IEEE 802.11 Wireless LAN

(1) 网络标准

标准 标准
802.11b 使用无需许可的2.4-5 GHz 频谱:无绳电话和微波炉
带宽:最高11 Mbps
在物理层采用直接序列扩频(direct sequence spread spectrum (DSSS))
所有的主机采用同样的序列码
802.11a 更高频率5-6 GHz
最高54 Mbps
距离相对短,受多路径影响大
802.11g 频率2.4-5 GHz
最大54 Mbps
与802.11b向后兼容
802.11n 频率2.4-5 GHz
最高200 Mbps
  • 所有的802.11标准都是用CSMA/CA进行多路访问
  • 所有的802.11标准都有基站模式自组织网络模式(节点之间自己组成一个网络)

(2) 网络架构

802.11 LAN 体系结构

无线主机与基站通信

  • 基站base station = 接入点access point (AP)

基础设施模式下的基本服务集Basic Service Set(BSS) (aka“cell”) 包括以下构件:

  • 无线主机
  • 接入点(AP): 基站
  • 自组织模式下:只有无线主机

(3) 信道与关联

802.11b: 2.4GHz-2.485GHz 频谱被分为11个相互不同的但是部分重叠的频段

  • AP管理员为AP选择一个频率
  • 可能的干扰: 邻居AP可能选择同样一个信道!

主机:必须在通信之前和AP建立associate

  • 扫描所有的信道,侦听包含AP SSID和MAC地址的信标帧
    • 主动扫描:主机发送探测,接受AP的响应
    • 被动扫描
  • 选择希望关联的AP
  • 可能需要执行鉴别(认证)(第八章内容)
    • 基于MAC、用户名口令
    • 通过AP的中继,使用RADIUS鉴别服务器进行身份鉴别
  • 将会执行DHCP获得IP地址和AP所在的子网前缀

(4) 主动/被动扫描

被动扫描

  1. AP发送信标帧
  2. 关联请求帧的发送:H1向拟关联的AP
  3. 关联响应帧的发送: AP向H1

主动扫描

  1. H1广播探测请求帧
  2. 自AP发送探测响应
  3. H1向选择的AP发送关联请求帧
  4. 选择的AP向H1发送关联的响应帧

(5) WLAN帧结构

成分 说明
Type 帧类型(RTS, CTS, ACK, data)
duration 预约传输时间的持续期(RTS/CTS)
address1 主机或者AP的MAC地址,指明帧的接收方
address2 发送该帧的主机或者AP的MAC地址
address3 AP连接的路由器接口的MAC地址
seq control 帧序号#(for RDT)
address4 只在自组织模式中使用

6.4.5 虚拟局域网VLANs*

不属于本科内容,了解即可

(1) 场景

考虑场景:

  • CS用户搬到EE大楼办公室 ,但是希望连接到CS的交换机?
  • 如果接到多个交换机上:麻烦和浪费:96端口 /10个有用
  • 如果都接到一个交换机上 ,在一个广播域
    • 所有的层2广播流量 (ARP, DHCP,不知道 MAC地址对应端口的帧 )都必须穿过整个LAN
    • 安全性/私密性的问题

(2) 目的

Virtual Local Area Network:带有VLAN功能的交换机(们)可以被配置成:一个物理LAN基础设施,虚拟成多个LANs

最终实现物理上一个交换机,虚拟成多个局域网

(3) 基于端口的VLAN

基于端口的VLAN:交换机端口成组(通过交换机管理软件),以至于单个的交换机可以分成若干虚拟LANs

就像多个虚拟的交换机

物理上一个交换机,虚拟成多个局域网

  • 流量隔离: 从/到1-8端口的流量只会涉及到1-8:也可以基于MAC地址进行VLAN定义
  • 动态成员: 成员可以在VLANs之间动态分配
  • 在VLANs间转发:通过路由器进行转发(就像他们通过各自的交换机相联一样)
    • 实际操作中,设备生产商可以提供:交换机和路由器的单一设备

(4) 互联多个交换机

如果有多个交换机,希望它们相连并且共享VLANs信息

方法1:各交换机每个VLAN一个端口和另外交换机相应(VLAN端口相连->扩展性问题)

trunk port干线端口: 多个交换机共享定义的VLAN,在它们之间传输帧

  1. 帧在不同交换机上的一个VLAN上转发,不能够再使用vanilla802.1帧(必须要携带VLAN ID信息)
  2. 802.1q协议增加/移除附加的头部字段,用于在trunk端口上进行帧的转发

(5) VLAN帧格式

这里是802.1Q VLAN 帧格式

6.5 物理层编码

由于是计算机网络,而不是通信课程,因此物理层讲的比较简单

6.5.1 Manchester编码

目的是传输数据和传输时钟

  • 在 10BaseT中使用

  • 每一个bit的位时中间有一个信号跳变

    • 传送1的时候向下跳
    • 传送0的时候向上跳
  • 跳变有没有,目的是将时钟信号抽出来;跳变方向决定传输的数据

  • 最终就能把时钟序号和0101区分开来,按照时钟来区分序列

  • 允许在接收方和发送方节点之间进行时钟同步

    • 节点间不需要集中的和全局的时钟
  • 要达到10Mbps(表示的每秒传10m的bit),需要带宽是20M,效率50% (可见bps和带宽不是一回事)

问题:效率比较低

6.5.2 4b5b编码

解决Manchester效率低的问题,多用于100BaseT

  • 用5个bit代表4个bit;

  • 假设如果4个bit4个bit地传,那么遇到连续的0,连续的1,电磁波信号就一直高或者一直低,那么从电磁信号中提取时钟信号就很难,接收方就不知道按照什么节拍来收

  • Manchester的问题是:每一位都有跳变,跳变的方向代表数字01,跳变的本身代表时钟

  • 5个bit有32种组合,去掉00000和11111,选择有起伏的序列,确保每4个有一次跳变

原来Manchester编码,传递一个信号需要2个带宽,浪费;4b5b编码,传递4个信号,只要用5个带宽,并且能确保有若干个位会有跳变

4位信息 对应的5位数据
0000 11110
0001 01001
0010 10100
0011 10101
0100 01010
0101 01011
0110 01110
0111 01111
1000 10010
1001 10011
1010 10110
1011 10111
1100 11010
1101 11011
1110 11100
1111 11101

6.5.3 千兆以太网

  • 采用标准的以太帧格式
  • 允许点对点链路和共享广播信道
  • 物理编码:8b10b编码
  • 在共享模式(hub),继续使用CSMA/CD MAC技术 ,节点间需要较短距离以提高利用率
  • 交换模式(switch):全双工千兆可用于点对点链路
  • 站点使用专用信道,基本不会冲突,效率高
  • 除非发往同一个目标站点
  • 10 Gbps now !

6.6 链路虚拟化MPLS*

按照标签来交换分组,而不是按照目标IP来交换分组

属于本科不学的内容,了解即可

6.6.1 概述

(1) 目标

  1. 从IP网络来看,将一组支持MPLS的网络虚拟成链路的技术
  2. 纯IP网络是按照IP地址对分组进行转发的
    • 前缀匹配,转发的方法固定
    • 无法控制IP分组的路径,无法支持流连工程
    • 也无法对一个IP分组流进行资源分配,性能无法保证
  3. MPLS网络按照标签label进行分组的转发
    • 类似于VC
    • 有基于标签的转发表
    • 基于虚电路表,IP vs 线路交换

(2) 标签交换及封装

标签交换的过程

  • 入口路由器:LER对进入的分组按照EFC的定义打上标签
  • 在MPLS网络中(虚拟成了链路)对分组按照标签进行交换
  • 到了出口路由器,再将标签摘除
  • 支持MPLS的路由器组构成的网络,从IP网络的角度来看虚拟成了链路

标签封装:一些列标准定义了在ATM,FR和以太网中如何封装,利用原有网络中的机制VCI,或者定义新的标签

建立基于标签的转发表-信令协议:支持逐跳和显式路由:路由信息传播,路由计算(基于Qos,基于策略的),标签分发

  • LDP CR-LDP
  • RSVP扩展BGP扩展

(3) MPLS优点

  1. 路由弹性:基于Qos,基于策略的
  2. 充分利用已有的硬件ATM,快速转发
  3. 支持流连工程,VPN
  4. 支持带宽等资源的分配

6.6.2 标签分发路径


Label Switched Path (LSP)


6.6.3 MPLS介绍

MPLS:Multiprotocol label switching

初始目的:使用固定长度的标签label进行高速率IP转发(而不是使用IP address,采用最长前缀匹配)

  • 一开始采用固定长度ID进行查表(而不是采用前缀匹配)
  • 借鉴了虚电路的思想(VC)
  • 但是IP数据报仍然保留IP地址!
  • 在帧和其封装的分组之间加入一个垫层,标签交换使能的路由器使用垫层信息进行分组转发,不解析分组目标地址

6.6.4 具有MPLS能力的路由器

  • a.k.a. 标签交换路由器
  • 基于标签的值进行分组的转发(而非检查IP地址):MPLS转发表和IP转发表相互独立
  • 弹性: MPLS转发决策可以和IP不同
    • 采用源地址和目标地址来路由到达同一个目标的流,不同路径(支持流量工程)
    • 如果链路失效,能够快速重新路由: 预先计算好的备份链路(对于VoIP有效)

6.6.4 MPLS vs IP路径

  • IP 路由: 到达目标的路径仅仅取决于目标地址

  • MPLS路由:到达目标的路由,可以基于源和目标地址
    • 快速重新路由:在链路失效时,采用预先计算好的路径

6.6.5 MPLS信令

  • 修改OSPF, IS-IS链路状态泛洪协议来携带MPLS路由信息:例如链路带宽,链路带宽的倒数?
  • MPLS使能的路由器采用RSVP-TE信令协议在下游路由器上来建立MPLS转发表

6.6.6 MPLS转发表

6.7 数据中心网络*

这个也没讲

场景:数万-数十万台主机构成DC网络,密集耦合、距离临近

  • 电子商务(e.g. Amazon)
  • 内容服务器(e.g., YouTube, Akamai, Apple, Microsoft)
  • 搜索引擎,数据挖掘(e.g., Google)

挑战

  • 多种应用,每一种都服务海量的客户端
  • 管理/负载均衡,避免处理、网络和数据的瓶颈

负载均衡器:应用层路由

  • 接受外部的客户端请求
  • 将请求导入到数据中心内部
  • 返回结果给外部客户端(对于客户端隐藏数据中心的内部结构)

在交换机之间,机器阵列之间有丰富的互连措施:

  • 在阵列之间增加吞吐(多个可能的路由路径)
  • 通过冗余度增加可靠性

6.8 浏览器访问场景

回顾: 页面请求的历程

  • Top-down的协议栈旅程结束了!
    • 应用层、运输层、网络层和链路层
  • 以一个web页面请求的例子: 综述!
    • 目标: 标示、回顾和理解涉及到的协议(所有层次 ),以一个看似简单的场景: 请求www页面
  • 场景:学生在校园启动一台笔记本电脑:请求和接受www.google.com


6.8.1 DHCP获取ip配置

  1. 笔记本需要一个IP地址,第一跳路由器的IP地址,DNS的地址:采用DHCP
  2. DHCP请求被封装在UDP中,封装在IP,封装在802.3以太网帧中
  3. 以太网的帧在LAN上广播(dest: FFFFFFFFFFFF),被运行中的DHCP服务器接收到
  4. 以太网帧中解封装IP分组,解封装UDP,解封装DHCP

  1. DHCP服务器生成DHCP ACK包括客户端IP地址,第一跳路由器P地址和DNS名字服务器地址
  2. 在DHCP服务器封装,帧通过LAN转发(交换机学习)在客户端段解封装
  3. 客户端接收DHCP ACK应答

客户端有了IP地址,知道了DNS域名服务器的名字和IP地址 第一跳路由器的IP地址

6.8.2 ARP获取DNS服务器MAC

  1. 在发送HTTP request请求之前, 需要知道www.google.com的IP地 址:使用协议—DNS
  2. DNS查询被创建,封装在UDP段中 ,封装在IP数据报中,封装在以 太网的帧中. 将帧传递给路由器 ,但是需要知道路由器的接口: MAC地址:ARP
  3. ARP查询广播,被路由器接收, 路由器用ARP应答,给出其IP地 址某个端口的MAC地址
  4. 客户端现在知道第一跳路由器 MAC地址,所以可以发送DNS查 询帧了

6.8.3 DNS获取服务器ip

  1. 包含了DNS查询的IP数据报 通过LAN交换机转发,从客 户端到第一跳路由器
  2. IP 数据报被转发,从校园到达 comcast网络,路由(路由表被 RIP,OSPF,IS-IS 和/或BGP协 议创建)到DNS服务器
  3. 被DNS服务器解封装
  4. DNS服务器回复给客户端: www.google.com的IP地址

6.8.4 建立TCP连接

  1. 为了发送HTTP请求,客户端打开到达web服务器的TCP socket
  2. TCP SYN段(3次握手的第1次握手)域间路由到web服务器
  3. web服务器用TCP SYNACK应答(3次握手的第2次握手)
  4. TCP连接建立了!

6.8.5 HTTP请求和应答

  1. HTTP请求发送到TCPsocket中
  2. IP数据报包含HTTP请求,最终路由到www.google.com
  3. web服务器用HTTP应答回应(包括请求的页面)
  4. IP数据报包含HTTP应答最后被路由到客户端

第6章:总结

  • 数据链路层服务背后的原理:

    • 检错、纠错
    • 共享广播式信道:多路访问
    • 链路编址
  • 各种链路层技术的实例和实现

    • Ethernet
    • 交换式LANS, VLANs
    • 虚拟成链路层的网络: MPLS
  • 综合:一个web页面请求的日常场景

  • 自上而下的协议栈的旅行结束了 (除了物理层)

  • 坚实地理解了网络的原理和实践

  • ….. 可以在这里停一下 … … 但是仍然还有很多有趣的话题!

    • 无线网络
    • 多媒体
    • 网络安全
posted @ 2023-07-16 19:40  Crispy·Candy  阅读(247)  评论(0编辑  收藏  举报