计算机网络-第六章-数据链路层和局域网
第六章 数据链路层和局域网
网络层解决了以子网为单位的通告,本章研究的是:
- 子网内部节点到节点(相邻节点)的通信
- 主机到网关路由器的通信
- 网关路由器之间的通信
广域网的链路层比较简单,因此本章重点讲解局域网的链路层;同样,是先原理,后实现
-
理解数据链路层服务的原理:
- 检错和纠错
- 共享广播信道:多点接入(多路访问)
- 链路层寻址
- LAN:以太网、WLAN、VLANs
- 可靠数据传输,流控制(RTT和流量控制传输层已经讲过了)
-
实例和各种链路层技术的实现
WAN—— 广域网,LAN —— 局域网
为什么这样选择,可以再听一下
- WAN:网络形式采用点到点链路(比如两个国家之间拉一条海底电缆连接路由器)
- 带宽大
- 距离远(延迟大) 带宽延迟积大
- 如果采用多点连接方式
- 竞争方式:一旦冲突代价 大
- 令牌等协调方式:在其中 协调节点的发送代价大
- 点到点链路的链路层服务 实现非常简单,只要封装和解封装就行
- LAN(局域网)一般采用多点连接方式
- 连接节点非常方便(指有线)
- 接到共享型介质上(或网络 交换机),就可以连接所有其他节点
- 多点连接方式网络的链路层 功能实现相当复杂
- 多点接入:协调各节点对共 享性介质的访问和使用
- 竞争方式:冲突之后的协调 ;
- 令牌方式:令牌产生,占有 和释放等
6.1 导论
6.1.1 相关术语
- 节点:主机和路由器是节点(网桥和交换机也是)
- 链路:沿着通信路径,连接个相邻节点通信信道的是
- 有线链路(网线,光纤,光缆等)
- 无线链路
- 局域网,共享性链路
- 帧:第二层协议数据单元帧frame,封装数据报(数据报是网络层的分组)
数据链路层负责从一个节点通过链路将(帧中的)数据报发送到相邻的物理节点(一个子网内部的2节点)
6.1.2 链路层协议分类
链路层的协议也大致分为如下三类
数据报(分组)在不同的链路上以不同的链路协议传送:
- 第一跳链路:以太网
- 中间链路:帧中继链路
- 最后一跳: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: 为什么在链路层和传输层都实现了可靠性?
- 可靠性是一般化的链路层服务,不是所有的链路层都提供这些服务;一个特定的链路层只是提供上述一部分的服务
在相邻节点间(一个子网内)进行可靠的转发
- 我们已经在传输层一章学过
-
在低差错链路上很少使用 (光纤,一些双绞线)
-
出错率低,没有必要在每一个帧中做差错控制的工作,否则会使协议更加复杂
-
发送端对每一帧进行差错控制编码,根据反馈做相应的动作
-
接收端进行差错控制解码,反馈给发送端(ACK,NAK)
在本层放弃可靠控制的工作,在网络层或者是传输层做可靠控制的工作,或者根本就不做可靠控制的工作
-
-
-
在高差错链路上需要进行可靠的数据传送
- 高差错链路比如无线链路
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) 前置知识
- 模二运算(包括加、减、乘、除),其中加减实际上都是一样的
- 就是不进行进位和借位,每位的运算结构都模2,
- 实际结果等同于异或
- 在乘除中,就是在每次运算的结果进行相减的时候也使用模2减法
- 位串的两种表示
- 二进制的位串一般表示为1011
- 但是还可以表示为 1x3 + 0 + 1x1 + 1x0 = x3 + x1 + 1
- 生成多项式()
- 生成多项式是一种特殊的多项式,每个项的系数都是1,这是生成EDC和检查所使用的的位模式
- 生成多项式可以转换为二进制的串,r次方表示第r+1位
- 例如 x3 + x1 + x0 → 1011
生成多项式是双方协商获得的,协商有 r + 1位,也就是最高位是 r次方
- 发送方和接收方的约定(也就是算法的目标)
- 发送方发送 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·2r ⊕ R ⊕ R = nG ⊕ R
-
等价于 D·2r = nG ⊕ R (模2运算的 ⊕ 就可以看做是 加法)
-
最终我们要求得的 R = remainder[(D·2r) / G],也就是余数
(3) 例子
也就是最后求R的例子
实际运算的时候也可以使用二进制的多项式表示来除法
(4) 性能分析
- 可以检测突发错误和突发长度
- 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带宽的广播信道
要求:
-
当一个节点要发送时,可以以R速率发送.
-
当M个节点要发送,每个可以以R/M的平均速率发送
-
完全分布的(也就是各个节点不需要额外的协调信息,只根据局部的信息决定什么时候可以发送)
- 没有特殊节点协调发送
- 没有时钟和时隙的同步(当然实际上是需要时间的)
-
简单
6.3.4 MAP/MAC分类
3大类
类型 | 说明 |
---|---|
信道划分 | 把信道划分成小片(时间、频率、编码),分配片给每个节点专用 |
随机访问 | 信道不划分,任何节点都可以任意地使用信道 协议允许碰撞,定义了如何检测碰撞,如何从碰撞中恢复过来 |
依次轮流 | 1. 节点轮流使用 2. 有的是完全分布,有的是主节点master协调 3. 分布式的采用信令 |
----------------------------
6.3.5 信道划分MAC协议
- TDM:不同的人在不同的时刻讲话(轮流说话)
- FDM:不同的组在不同的小房间里通信(蝙蝠用蝙蝠的频率,人用人的频率)
- CDMA:不同的人使用不同的语言讲话
(1) 时分TDMA
TDMA:time division multiple access
- 轮流使用信道,信道的时间分为周期
- 每个站点使用每周期中固定的时隙(长度=帧传输时间)传输帧
- 缺点:如果站点无帧传输,时隙空闲,造成浪费
- 如下:6站LAN,1、3、4有数据报,时隙2、5、6空闲
(2) 频分FDMA
FDMA: frequency division multiple access
- 信道的有效频率范围被分成一个个小的频段
- 每个站点被分配一个固定的频段
- 分配给站点的频段如果没有被使用,则空闲
- 例如:6站LAN,1、3、4有数据报,频段2、5、6空闲
(3) 码分CDMA
- 所有站点在整个频段上同时进行传输, 采用编码原理加以区分
- 完全无冲突
- 假定:信号同步很好,线性叠加
比如我发送1,将芯片序列发送;发送0的时候,将芯片序列的反码发送;这些序列是正交的,相互不影响,采用编码的方式可以区分
但是CDMA是第三代通信技术,已经过时了;第四代第五代的通讯是会综合使用TDMA和FDMA的
6.3.6 随机存取MAC协议
检错冲突 与 冲突解决/冲突避免
-
当节点有帧要发送时
-
以信道带宽的全部R bps发送
-
没有节点间的预先协调
-
-
两个或更多节点同时传输,会发生➜冲突“collision”
随机存取协议规定(这是这个协议的任务,后面的协议都会有这个)
- 如何检测冲突
- 如何从冲突中恢复(如:通过稍后的重传)
有线介质检测冲突是比较简单的
- 只要有一个站点发送,电磁波就会充满整个channel,因此所有节点都知道这个时候有站点发送帧了
- 并且能量的幅度是会随着发送帧的站点数而变化的,也就是说,节点可以根据能量幅度的大小来判断是否发生冲突
随机存储协议的效率的定义:当有很多节点,每个节点有很多帧要发送时,x%的时隙是成功传输帧的时隙
随机MAC协议有如下
- 时隙ALOHA
- ALOHA
- CSMA
以上都是基础协议,下面的两个才是现在真正使用的
- CSMA/CD(以太网)
- CSMA/CA(无线网)
(1) 时隙ALOHA
① 假设条件
假设条件:
- 所有帧是等长的
- 时间被划分成相等的时隙,每个时隙可发送一帧
- 节点只在时隙开始时发送帧
- 节点在时钟上是同步的
- 如果两个或多个节点在一个时隙传输,所有的站点都能检测到冲突
② 运行流程
运行:
- 当节点获取新的帧,在下一个时隙传输
- 传输时没有检测到冲突,成功:节点能够在下一时隙发送新帧
- 检测时如果检测到冲突,失败:节点在每一个随后的时隙以概率p重传帧直到成功
③ 案例
如下:
每个时刻的含义:
- node1、2、3同时发送帧,且都判断到发生冲突了,这个时隙发送失败
- node1、2、3都以p的概率进行随机,但是都没有随机到,所以都没有发送,这个时隙发送失败
- node1、2到了p的概率,都发送;node3没有发送,这个时隙发送失败
- node2发送;node1、3不发送;这个时隙node2发送成功
- node1、3不发送
- node1、3都发送,这个时隙发送失败
- node1、3不发送
- node1发送,这个时隙node1发送成功
- node3发送成功
延迟没有上限,没有延迟保证(因为一直往后都有可能发生冲突)
④ 优缺点
优点:
- 节点可以以信道带宽全速连续传输
- 高度分布:仅需要节点之间在时隙上的同步(不需要控制信息,只需要每个站点自己判断)
- 简单
缺点:
- 存在冲突,浪费时隙
- 即使有帧要发送,仍然有可能存在空闲的时隙
- 节点检测冲突的时间 < 帧传输的时间(这就意味着即使检测到了冲突,帧也必须全部传输完)
- 需要时钟上同步
⑤ 效率分析
- 假设N个节点,每个节点都有很多帧要发送,在每个时隙中的传输概率是p
- 一个节点成功传输概率是p(1-p)N-1
- 任何一个节点的成功概率是= Np(1-p)N-1
- N个节点的最大效率:求出使f(P)=Np(1-p)N-1最大的p*(求导获取)
- 代入P*得到最大 f(p*)=Np*(1-p*)N-1
- 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:
- 载波侦听CSMA:和在CSMA中一样发送前侦听信道
- 没有传完一个帧就可以在短时间内检测到冲突
- 冲突发生时则传输终止,减少对信道的浪费
冲突检测CD技术,有线局域网中容易实现:
- 检测信号强度,比较传输与接收到的信号是否相同
- 通过周期的过零点检测
人类类比:礼貌的对话人,两人同时说话的时候一方会先停止
CD在有形的介质中容易做到,因为多个站点发送,介质中能量的幅度会变化
CSMA/CD(冲突检测)
(5) 以太网CSMA/CD
以太网使用的就是CSMA/CD算法,以太网会在下一节讲到
① 运行流程
-
适配器获取数据报,创建帧
-
发送前:侦听信道CS
- 如果信道空闲:开始传送帧
- 如果信道忙:一直等到空闲再发送
-
发送过程中,冲突检测CD
- 没有冲突:成功
- 检测到冲突:放弃,之后尝试重发
-
发送方适配器检测到冲突,除放弃外,还发送一个Jam信号,所有听到冲突的适配器也是如此
强化冲突:让所有站点都知道冲突
-
如果放弃,适配器进入指数退避状态在第m次失败后,适配器随机选择一个{0,1,2, ,2^m-1}中K,等待K*512位时,然后转到步骤2
第四部发送Jam信号的问题
- 站点是根据冲突后截止内能量的幅度大小来判断冲突的,但是冲突发生后一个站点会取消发送,这个时候有站点可能检测不到冲突
- 因此发送一个Jam信号表示冲突,让所有站点都知道冲突
② 二进制指数退避算法
-
目标:适配器试图适应当前负载,在一个变化的碰撞窗口中随机选择时间点尝试重发
-
高负载:重传窗口时间大,减少冲突,但等待时间长
-
低负载:使得各站点等待时间少,但冲突概率大
在碰撞概率与延迟时间取得一个均衡
-
- 首次碰撞:在{0,1}选择K;延迟K*512位时(两个站点发送成功的概率是1/2)
- 第2次碰撞:在{0,1,2,3}选择K (成功的概率是3/4)
- 第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. 检测到了也没用
不是冲突检测,是因为在无线网中冲突很难检测
无线介质中是会衰减的(有线截止衰减的幅度很小)
- 无线介质的幅度随着距离平方的增大而减小
- 多个节点可以同时传电磁波,同一时间干扰的情况比较严重
- 802.11: CSMA
- 发送前侦听信道,不会和其它节点正在进行的传输发生冲突
- 发送的时候全速发送,并且不做冲突检测
发送的时候不进行冲突检测
- 在以太网中检测出冲突立即停止可以减少对信道的浪费率
- 但是在WLAN中(CD是指 collision detect冲突检测)
- 无法做CD:做冲突检测时,由于无线信号会衰减,自己的发出信号会远大于其他节点发过来的电磁波信号,也就是不一定能检测出来
- 做了CD也没用:即使检测到了,但是成功 ≠ 不冲突:在LAN中,不冲突 ≈ 成功;但是在WLAN中 冲突和成功无关,不冲突也不意味着成功
如下:
- 不冲突不意味着成功
- 隐藏终端问题:发送方A和C检测不到彼此冲突了(因为发送范围有限)
- 但是对于B来说确实冲突了
同时
- 冲突不意味着不成功
- 可以看到,发送方BC冲突了,但是并不影响接收方AC
③ 冲突避免CA流程
在事前就进行抛色子来避免冲突
发送方
- 如果站点侦测到信道空闲持续DIFS长,则传输整个帧(no CD)
- 如果侦测到信道忙碌,那么选择一个随机回退值,并在信道空闲时递减该值;如果信道忙碌,回退值不会变化
- 到数到0时(只生在信道闲时)发送整个帧;
- 如果没有收到ACK, 增加回退值,重复2
发送方:
- 如果帧正确,则在SIFS后发发送ACK
就是通过 “选择一个随机回退值” 来避免冲突
在有线网络中没有ACK机制,因为有线网络比较稳定;但是无线链路需要确认;
例如:由于隐藏终端问题,在接收端可能形成干扰,接收方没有正确地收到。链路层可靠机制
Q:在count down时,侦听到了信道空闲为什么不发送,而要等到0时在发送?
假设2个站点有数据帧需要发送,第三个节点正在发送
- LAN CD:让2者听完第三个节点发完,立即发送
- 如果冲突:放弃当前的发送,避免了信道的浪费于无用冲突帧的发送
- 代价不昂贵
- WLAN : CA
- 无法CD,一旦发送就必须发完,如冲突信道浪费严重,代价高昂
- 思想:尽量事先避免冲突,而不是在发生冲突时放弃然后重发
- 听到发送的站点,分别选择随机值,回退到0发送
- 不同的随机值,一个站点会胜利
- 失败站点会冻结计数器,当胜利节点发完再发
如果发送冲突解决不了,那么就先避免这些冲突
但是冲突也是无法完全避免的
无法完全避免冲突
两个站点相互隐藏:
- A,B 相互隐藏,C在传输
- A,B选择了随机回退值
- 一个节点如A胜利了,发送
- 而B节点收不到,顺利count down到0 发送(由上所述,失败节点会冻结计时器,但是B收不到A的,就不会冻结)
- A,B的发送在C附近形成了干扰
选择了非常靠近的随机回退值:
- A,B选择的值非常近
- A到0后发送
- 但是这个信号还没到达B时
- B也到0了,发送
- 冲突
还有另一种冲突避免的方式
思想:允许发送方“预约”信道,而不是随机访问该信道:避免长数据帧的冲突(可选项)
- 发送方首先使用CSMA向BS发送一个小的RTS分组
- RTS可能会冲突(但是由于比较短,浪费信道较少)
- BS广播clear-to-send CTS,作为RTS的响应
- CTS能够被所有涉及到的节点听到
- 发送方发送数据帧
- 其它节点抑制发送
(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) 轮询
流程:
- 轮询:主节点依次询问每个节点是否有数据发送
- 如果节点没有数据传送,则询问下一个节点
- 如果有数据传输,则占用全部的带宽
优点:
- 高负载:由于是轮询,第一个节点发送完了之后主节点才会问第二个节点;因此不会产生冲突
- 低负载:同样地,一个节点发送的时候可以完全利用信道的全部带宽
缺点:
- 轮询开销:轮询本身消耗信道带宽
- 等待时间:每个节点需等到主节点轮询后开始传输,即使只有一个节点,也需要等到轮询一周后才能够发送
- 单点故障(可靠性差):主节点失效时造成整个系统无法工作
(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地址的作用不同
-
IP地址是分层的(路由的时候使用的是子网的ip一层,在子网内部是具体节点的ip)
- 一个子网所有站点网络号一致,路由聚集,减少路由表
- 需要一个网络中的站点地址网络号一致,如果捆绑需要定制网卡非常麻烦
- 希望网络层地址是配置的;IP地址完成网络到网络的交付
-
mac地址是一个平面的
- 网卡在生产时不知道被用于哪个网络,因此给网卡一个 唯一的标示,用于区分一个网络内部不同的网卡即可
- 可以完成一个物理网络内部的节点到节点的数据交付
- MAC地址支持移动:可以将网卡移动到其他网络
- IP地址有层次,不能移动:依赖于节点连接的IP子网,与子网的网络号相同(有与其相连的子网相同的网络前缀)
类比:
- MAC地址相当于身份证号
- IP地址相当于通讯地址
(4) 分离的原因
-
分离好处
- 网卡坏了,ip不变,可以捆绑到另外一个网卡的 mac上
- 物理网络还可以除IP之外支持其他网络层协议, 链路协议为任意上层网络协议, 如IPX等
-
捆绑的问题
- 如果仅仅使用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协议)
-
A广播包含B的IP地址的ARP查询包
-
Dest MAC address = FF-FF-FF-FF-FF-FF(广播地址)
-
LAN上的所有节点都会收到该查询包
-
-
B接收到ARP包,回复A自己的MAC地址
-
帧发送给A
-
用A的MAC地址(单播)
-
-
A在自己的ARP表中,缓存IP-to-MAC地址映射关系,直到信息超时
- 软状态: 靠定期刷新维持的系统状态
- 定期刷新周期之间维护的状态信息可能和原有系统不一致
ARP是
- 即插即用的
- 节点自己创建ARP的表项
- 无需网络管理员的干预
(2) 案例
目标:发送数据报:由A通过R到B,假设A知道B的IP地址
-
在R上有两个ARP表,分别对应两个LAN(R有两个网卡)
-
在源主机的路由表中,发现到目标主机的下一跳的ip地址是 111.111.111.110
在源主机的ARP表中,发现其MAC地址是E6-E9-00-17-BB-4B(是ip地址对应的Mac地址,已经记录在ARP表中了)
-
A创建数据报,源IP地址:A;目标IP地址:B
-
A创建一个链路层的帧,目标MAC地址是R,该帧包含A到B的IP数据报
-
帧从A发送到R
-
帧被R接收到,从中提取出IP分组,交给上层IP协议实体
-
R转发数据报,数据报源IP地址为A,目标IP地址为B
-
R创建一个链路层的帧,目标MAC地址为B,帧中包含A到B的IP 数据报
-
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算法
- 没有时隙
- NIC如果侦听到其它NIC在发送就不发送:载波侦听carrier sense(NIC是网络适配器,也就是网卡)
- 发送时,适配器当侦听到其它适配器在发送就放弃对当前帧的发送,冲突检测collision detection(进行冲突检测CD)
- 冲突后尝试重传,重传前适配器等待一个随机时间,随机访问randomaccess(二进制退避算法)
相关可以查看 以太网CSMA/CD一节
优点:
- 在分组负载较小的情况下,效率很高:这是CSMA/CD本身的特点
- 在分组负载较大的情况下,效率也高,因为使用了交换机减小了冲突的可能性;同时运行并行
CSMA/CD的执行情况
-
当节点要发送的时候,由于节点到交换机接口只有一个线,检测不到冲突的,检测也只是做做样子
-
但是当端口发送到目标节点的时候,也会进行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地址
- 如图,路由器跳转到子网内的节点,中间就是通过交换机,但是不用关心
② 多路同时传输
- 主机有一个专用和直接到交换机的连接(一个交换机连接一个端口)
- 交换机缓存到来的帧(为了防止冲突)
- 对每个帧进入的链路使用以太网协议,没有碰撞,且全双工(输入和输出可以同时进行)
- 每条链路都是一个独立的碰撞域
- MAC协议在其中的作用弱化了(CSMA/CD协议只是做做样子,因为实际上不会冲突)
③ 交换机转发表
Q: 交换机一个端口收到帧之后,如何知道帧中的目标MAC对应着哪个端口
-
每个交换机都有一个交换表switch table, 每个表项结构如下
主机的MAC地址、到达该MAC经过的接口、时戳(保存的时间)(比较像网络层的路由表)
就是记录每一个端口对应的Mac地址
存储是为了效率,删除是为了适应变化
④ 交换机自学习
Q:每个表项是如何创建的?如何维护的?
自学习
- 交换机通过学习得到哪些主机(mac地址)可以通过哪些端口到达
- 当接收到帧,交换机学习发送站点source所在的端口(网段)
- 记录发送方MAC地址/进入端口映射关系,在交换表中
⑤ 交换机转发流程
当交换机收到一个帧:
-
记录进入链路,发送主机的MAC地址
-
使用目标MAC地址对交换表进行索引
-
执行如下算法
// 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 路由器
- 都是存储转发设备,但层次不同
- 交换机:链路层设备(检查链路层头部)
- 路由器:网络层设备(检查网络层的头部)
- 都有转发表:
-
交换机:维护交换表,按照MAC地址转发
- 执行过滤、自学习和生成树算法
- 即插即用;二层设备,速率高
- 执行生成树算法,限制广播帧的转发(防止出现环之后形成广播风暴)
- ARP表项随着站点数量增多而增多
-
路由器:路由器维护路由表,执行路由算法
- 路由算法能够避免环路,无需执行生成树算法,可以以各种拓扑构建网络
- 对广播分组做限制
- 不是即插即用的,配置网络地址(子网前缀)
- 三层设备,速率低
(8) 网络架构及设备
可以看到:
- 主机通过路由器级联往上走
- 包括ip子网内部的服务器也都连接到交换机
- 然后交换机和路由器相连
网卡如下
(9) 网络架构拓扑图
中科大校园网络拓扑结构示意图
中科大校园网主干改造方案物理结构图
中国科学技术大学校园网络主干示意图
分析:整个网络架构是一个树形的
- 最底部的是楼层的交换机,主机设备插入网卡,网卡通过以太网双绞线接到交换机的端口上
- 然后楼层的交换机接到大楼的交换机
- 大楼的交换机接到了校区的交换机
- 校区的交换机接入到了网络中心核心节点的交换机;
- 服务器集群也接入到交换机上(校园网内部的应用的运行都是在服务器集群中)
- 核心节点通过多个有防火墙的路由器接入到ISP(也因此进入校园网内部有防火墙)
注意:
- 西区和东区之间会有一条备用的链路(为了可靠性)
- 各个校区之间可能形成环(泛洪时可能没完没了,ARP的查询也是广播式查询,如果有环会形成广播风暴)
- 因此交换机会有一个生成树算法,同一时间起作用的就是一棵树
安徽省教育科研网络主干示意图
可以看到中科大的网络是整个安徽省网络的中心
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) 主动/被动扫描
被动扫描
- AP发送信标帧
- 关联请求帧的发送:H1向拟关联的AP
- 关联响应帧的发送: AP向H1
主动扫描
- H1广播探测请求帧
- 自AP发送探测响应
- H1向选择的AP发送关联请求帧
- 选择的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,在它们之间传输帧
- 帧在不同交换机上的一个VLAN上转发,不能够再使用vanilla802.1帧(必须要携带VLAN ID信息)
- 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) 目标
- 从IP网络来看,将一组支持MPLS的网络虚拟成链路的技术
- 纯IP网络是按照IP地址对分组进行转发的
- 前缀匹配,转发的方法固定
- 无法控制IP分组的路径,无法支持流连工程
- 也无法对一个IP分组流进行资源分配,性能无法保证
- MPLS网络按照标签label进行分组的转发
- 类似于VC
- 有基于标签的转发表
- 基于虚电路表,IP vs 线路交换
(2) 标签交换及封装
标签交换的过程
- 入口路由器:LER对进入的分组按照EFC的定义打上标签
- 在MPLS网络中(虚拟成了链路)对分组按照标签进行交换
- 到了出口路由器,再将标签摘除
- 支持MPLS的路由器组构成的网络,从IP网络的角度来看虚拟成了链路
标签封装:一些列标准定义了在ATM,FR和以太网中如何封装,利用原有网络中的机制VCI,或者定义新的标签
建立基于标签的转发表-信令协议:支持逐跳和显式路由:路由信息传播,路由计算(基于Qos,基于策略的),标签分发
- LDP CR-LDP
- RSVP扩展BGP扩展
(3) MPLS优点
- 路由弹性:基于Qos,基于策略的
- 充分利用已有的硬件ATM,快速转发
- 支持流连工程,VPN
- 支持带宽等资源的分配
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配置
- 笔记本需要一个IP地址,第一跳路由器的IP地址,DNS的地址:采用DHCP
- DHCP请求被封装在UDP中,封装在IP,封装在802.3以太网帧中
- 以太网的帧在LAN上广播(dest: FFFFFFFFFFFF),被运行中的DHCP服务器接收到
- 以太网帧中解封装IP分组,解封装UDP,解封装DHCP
- DHCP服务器生成DHCP ACK包括客户端IP地址,第一跳路由器P地址和DNS名字服务器地址
- 在DHCP服务器封装,帧通过LAN转发(交换机学习)在客户端段解封装
- 客户端接收DHCP ACK应答
客户端有了IP地址,知道了DNS域名服务器的名字和IP地址 第一跳路由器的IP地址
6.8.2 ARP获取DNS服务器MAC
- 在发送HTTP request请求之前, 需要知道www.google.com的IP地 址:使用协议—DNS
- DNS查询被创建,封装在UDP段中 ,封装在IP数据报中,封装在以 太网的帧中. 将帧传递给路由器 ,但是需要知道路由器的接口: MAC地址:ARP
- ARP查询广播,被路由器接收, 路由器用ARP应答,给出其IP地 址某个端口的MAC地址
- 客户端现在知道第一跳路由器 MAC地址,所以可以发送DNS查 询帧了
6.8.3 DNS获取服务器ip
- 包含了DNS查询的IP数据报 通过LAN交换机转发,从客 户端到第一跳路由器
- IP 数据报被转发,从校园到达 comcast网络,路由(路由表被 RIP,OSPF,IS-IS 和/或BGP协 议创建)到DNS服务器
- 被DNS服务器解封装
- DNS服务器回复给客户端: www.google.com的IP地址
6.8.4 建立TCP连接
- 为了发送HTTP请求,客户端打开到达web服务器的TCP socket
- TCP SYN段(3次握手的第1次握手)域间路由到web服务器
- web服务器用TCP SYNACK应答(3次握手的第2次握手)
- TCP连接建立了!
6.8.5 HTTP请求和应答
- HTTP请求发送到TCPsocket中
- IP数据报包含HTTP请求,最终路由到www.google.com
- web服务器用HTTP应答回应(包括请求的页面)
- IP数据报包含HTTP应答最后被路由到客户端
第6章:总结
-
数据链路层服务背后的原理:
- 检错、纠错
- 共享广播式信道:多路访问
- 链路编址
-
各种链路层技术的实例和实现
- Ethernet
- 交换式LANS, VLANs
- 虚拟成链路层的网络: MPLS
-
综合:一个web页面请求的日常场景
-
自上而下的协议栈的旅行结束了 (除了物理层)
-
坚实地理解了网络的原理和实践
-
….. 可以在这里停一下 … … 但是仍然还有很多有趣的话题!
- 无线网络
- 多媒体
- 网络安全