计算机网络第六章
第6章:链路层和局域网
导引:
网络层解决了一个网络如何到达另外一个 网络的路由问题
在一个网络内部如何由一个节点(主机或 者路由器)到达另外一个相邻节点
链路层的点到点传输层功能
目标:
-
理解数据链路层服务的原理:
- 检错和纠错
- 共享广播信道:多点接入(多路访问)
- 链路层寻址
- LAN:以太网、WLAN、VLANs
- 可靠数据传输,流控制:解决!
-
实例和各种链路层技术的实现
网络节点的连接方式
文章目录
数据链路层和局域网
WAN—— 广域网,LAN —— 局域网
-
WAN:网络形式采用点到点链路
带宽大、距离远(延迟大)带宽延迟积大
如果采用多点连接方式
• 竞争方式:一旦冲突代价 大
• 令牌等协调方式:在其中 协调节点的发送代价大 -
点到点链路的链路层服务 实现非常简单,封装和解 封装
-
LAN一般采用多点连接方式
连接节点非常方便 接到共享型介质上(或网络 交换机),就可以连接所有其他节点 -
多点连接方式网络的链路层 功能实现相当复杂
多点接入:协调各节点对共 享性介质的访问和使用
竞争方式:冲突之后的协调 ;
令牌方式:令牌产生,占有 和释放等
6.1 引论和服务
链路层: 导论
一些术语:
- 主机和路由器是节点(网桥和交换机也是): nodes
- 沿着通信路径,连接个相邻节点通信信道的是链路:links
- 有线链路
- 无线链路
- 局域网,共享性链路
- 第二层协议数据单元帧frame,封装数据报
数据链路层负责从一个节点通过链路将(帧中的)数据报发送到相邻的物理节点(一个子网内部的2节点)
链路层: 上下文
-
数据报(分组)在不同的链路上以不同的链路协议传送:
第一跳链路:以太网
中间链路:帧中继链路
最后一跳:802.11 (无线局域网通用的标准) -
不同的链路协议提供不同 的服务
- e.g.,比如在链路层上提供( 或没有)可靠数据传送
传输类比
- 从Princeton到Lausanne
- 轿车: Princeton to JFK
- 飞机: JFK to Geneva
- 火车: Geneva to Lausanne
- 旅行者=数据报datagram
- 交通段=通信链路 communication link
- 交通模式=链路层协议 : 数 据链路层和局域网 protocol
- 票务代理=路由算法 routing algorithm
链路层服务
- 成帧,链路接入:
- 将数据报封装在帧中,加上帧头、帧尾部
- 如果采用的是共享性介质,信道接入获得信道访问权
- 在帧头部使用“MAC”(物理)地址来标示源和目的
• 不同于IP地址
- 在(一个网络内)相邻两个节点完成可靠数据传递
- 已经学过了(第三章) —— 传输层
- 在低出错率的链路上(光纤和双绞线电缆)很少使用
- 在无线链路经常使用:出错率高
Q: 为什么在链路层和传输层都实现了可靠性?
一般化的链路层服务,不是所有的链路层都提供这些服务
一个特定的链路层只是提供其中一部分的服务
-
在相邻节点间(一个子网内)进行可靠的转发
- 我们已经学习过(见第三章)!
- 在低差错链路上很少使用 (光纤,一些双绞线)
- 出错率低,没有必要在每一个帧中做差错控制的工作,协议复杂
- 发送端对每一帧进行差错控制编码,根据反馈做相应的动作
- 接收端进行差错控制解码,反馈给发送端(ACK,NAK)
- 在本层放弃可靠控制的工作,在网络层或者是传输层做可靠控制的工作,或者根本就不做可靠控制的工作
- 出错率低,没有必要在每一个帧中做差错控制的工作,协议复杂
- 在高差错链路上需要进行可靠的数据传送
- 高差错链路:无线链路:
- Q:为什么要在采用无线链路的网络上,链路层做可靠数据传输工作 ;还要在传输层做端到端的可靠性工作?
- 原因:出错率高,如果在链路层不做差错控制工作,漏出去的错误比较高;到了上层如果需要可靠控制的数据传输代价会很大 —— 出错率较大的时候,传到上层再纠错代价大
- 如不做local recovery 工作,总体代价大
- 高差错链路:无线链路:
-
流量控制:
- 使得相邻的发送和接收方节点的速度匹配
-
错误检测:
- 差错由信号衰减和噪声引起
- 接收方检测出的错误:
- 通知发送端进行重传或丢弃帧
-
差错纠正:
- 接收端检查和纠正bit错误,不通过重传来纠正错误
-
半双工和全双工:
- 半双工:链路可以双向传输,但一次只有一个方向
链路层在哪里实现?
- 在每一个主机上
- 也在每个路由器上
- 交换机的每个端口上
- 链路层功能在“适配器”上 实现 (aka network interface card NIC) 或 者在一个芯片组上
- 以太网卡,802.11 网卡 ; 以太网芯片组
- 实现链路层和相应的物 理层功能
- 接到主机的系统总线上
- 硬件、软件和固件的综合 体
适配器通信
- 发送方:
- 在帧中封装数据报
- 加上差错控制编码,实现RDT和流量控制功能等
- 接收方:
- 检查有无出错,执行rdt和流量控制功能等
- 解封装数据报,将至交 给上层
6.2 差错检测和纠正
错误检测
EDC=差错检测和纠正位(冗余位)
D =数据由差错检测保护,可以包含头部字段错误检测不是100%可靠的!
错误检测不是100%可靠的!
- 协议会漏检一些错误,但是很少
- 更长的EDC字段可以得到更好的检测和纠正效果
奇偶校验
Internet校验和
目标: 检测在传输报文段时的错误(如位翻转),(注:仅仅用在传输层)
-
发送方:
- 将报文段看成16-bit整 数
- 报文段的校验和: 和 (1’ 的补码和)
- 发送方将checksum的 值放在‘UDP校验和’ 字段
-
接收方:
- 计算接收到的报文段的校验和
- 检查是否与携带校验和字 段值一致:
- 不一致:检出错误
- 一致:没有检出错误,但可能还是有错误
有更简单的检查方法 全部加起来看是不是全1
检验和:CRC(循环冗余校验)
1、模二运算 —— 异或运算
2、位串的两种表示
3、生成多项式,r次方
G = X^3 + 1 r + 1位 例子:1001
4、发送方:根据r位 CRC 计算r位冗余位,使得
- 正好被 G整除 (modulo 2)
- 接收方知道 G, 将除以 G. 如果非0余数: 检查出错误!
- 能检出所有少于r+1位的突发错误
D ——发送的数据 (左移r位)+ R —— 冗余位 (r位)
G —— 生成多项式(r - 1次方)
- 强大的差错检测码
- 将数据比特 D, 看成是二进制的数据
- 生成多项式G:双方协商r+1位模式(r次方)
- 生成和检查所使用的位模式
- 目标:选择r位 CRC附加位R,使得
- 正好被 G整除 (modulo 2)
- 接收方知道 G, 将 除以 G. 如果非0余数: 检查出错误!
- 能检出所有少于r+1位的突发错误
- 实际中广泛使用(以太网、802.11 WiFi、ATM)
CRC 例子
- 需要: D.2r XOR R = nG
- 等价于: D.2r = nG XOR R
- 等价于: 两边同除G 得到余数 R=…
remainder —— 余数 、当余数R不足r位,补0
CRC性能分析
- 突发错误和突发长度
- CRC检错性能描述
6.3 多点访问协议
多路访问链路和协议
两种类型的链路(一个子网内部链路连接形式):
- 点对点
- 拨号访问的PPP
- 以太网交换机和主机之间的点对点链路
- 广播 (共享线路或媒体)
- 传统以太网
- HFC上行链路
- 802.11无线局域网
多路访问协议
- 单个共享的广播型链路
- 2个或更多站点同时传送: 冲突(collision)
- 多个节点在同一个时刻发送,则会收到2个或多个信号 叠加
多路访问协议(介质访问控制协议:MAC)
- 分布式算法-决定节点如何使用共享信道,即:决定节点什么时候可以发送?
- 关于共享控制的通信必须用借助信道本身传输!
- 没有带外的信道,各节点使用其协调信道使用
- 用于传输控制信息
理想的多路访问协议
- 给定:Rbps带宽的广播信道
必要条件:
-
当一个节点要发送时,可以以R速率发送.
-
当M个节点要发送,每个可以以R/M的平均速率发送
-
完全分布的:
- 没有特殊节点协调发送
- 没有时钟和时隙的同步
-
简单
MAC(媒体访问控制)协议:分类
3大类
- 信道划分
o把信道划分成小片(时间、频率、编码)
o分配片给每个节点专用 - 随机访问
o信道不划分,允许冲突
○冲突后恢复 - 依次轮流
o节点依次轮流
○但是有很多数据传输的节点可以获得较长的信道使用权
a.信道划分MAC协议:TDMA 时分复用
a.信道划分MAC协议:FDMA 频分复用
a.码分多路访问(CDMA)
b.随机存取协议
检错冲突 与 冲突解决/冲突避免
b.1 时隙ALOHA
时隙ALOHA的效率( Efficiency )
b.2 纯ALOHA(非时隙)
纯ALOHA的效率
b.3 CSMA(载波侦听多路访问)
CSMA冲突
b.4 CSMA/CD(冲突检测)
CSMA/CD(冲突检测)
以太网CSMA/CD算法
CSMA/CD效率
b.5 无线局域网 CSMA/CA
无线局域网中的 MAC:CSMA/CA
冲突避免(续)
冲突避免:RTS-CTS 交换
b.5 线缆接入网络
c.轮流(Taking Turns)MAC协议
MAC 协议总结
多点接入问题:对于一个共享型介质,各个节点 如何协调对它的访问和使用?
- 信道划分:按时间、频率或者编码
- TDMA、FDMA、CDMA
- 随机访问 (动态)
- ALOHA, S-ALOHA, CSMA, CSMA/CD
- 载波侦听: 在有些介质上很容易 (wire:有线介质), 但在有些 介质上比较困难 (wireless:无线)
- CSMA/CD :802.3 Ethernet网中使用
- CSMA/CA :802.11WLAN中使用
- 依次轮流协议
- 集中:由一个中心节点轮询;
分布:通过令牌控制 - 蓝牙、FDDI、令牌环
- 集中:由一个中心节点轮询;
6.4 LANs
addressing, ARP
MAC 地址和ARP
- 32bit IP地址:
- 网络层地址
- 前n-1跳:用于使数据报到达目的IP子网
- 最后一跳:到达子网中的目标节点
- LAN(MAC/物理/以太网)地址: —— (在一个物理网络的内部来标识每一个节点)
- 用于使帧从一个网卡传递到与其物理连接的另一个网卡 (在同一个物理网络中)
- 48bit MAC地址固化在适配器的ROM,有时也可以通过软件设定
- 理论上全球任何2个网卡的MAC地址都不相同
- e.g.: 1A-2F-BB-76-09-AD —— ( 16进制表示 (每一位代表4个bits) )
网络地址和mac地址分离
-
IP地址和MAC地址的作用不同
a) IP地址是分层的 —— 二层- 一个子网所有站点网络号一致,路由聚集,减少路由表
- 需要一个网络中的站点地址网络号一致,如果捆绑需要定制网卡非常麻烦
- 希望网络层地址是配置的;IP地址完成网络到网络的交付
b) mac地址是一个平面的
- 网卡在生产时不知道被用于哪个网络,因此给网卡一个 唯一的标示,用于区分一个网络内部不同的网卡即可
- 可以完成一个物理网络内部的节点到节点的数据交付
- 一个子网所有站点网络号一致,路由聚集,减少路由表
从 IP 的角度,是从一个路由器到另一个路由器。
从 链路层的角度,是从一个网卡当另一个网卡。
-
分离好处
a) 网卡坏了,ip不变,可以捆绑到另外一个网卡的 mac上
b) 物理网络还可以除IP之外支持其他网络层协议, 链路协议为任意上层网络协议, 如IPX等 -
捆绑的问题
a) 如果仅仅使用IP地址,不用mac地址,那么它仅支持IP协议
b) 每次上电都要重新写入网卡 IP地址;
c) 另外一个选择就是不使用任何地址;不用MAC地址,则每到来一个帧都要上传到IP层次,由它判断是不是需要接受,干扰一次
LAN 地址和ARP
局域网上每个适配器都有一个唯一的LAN地址
全 F 的MAX地址 是 广播地址
- MAC地址由IEEE管理和分配
- 制造商购入MAC地址空间(保证唯一性)
- 类比:
(a)MAC地址:社会安全号
(b)IP地址:通讯地址 MAC平面地址 ➜ 支持移动 - 可以将网卡到接到其它网络 IP地址有层次-不能移动
- 依赖于节点连接的IP子网,与子网的网络号相同( 有与其相连的子网相同的网络前缀)
ARP: Address Resolution Protocol
问题:已知B的IP地址,如何确定B的MAC地址?
- 在LAN上的每个IP节点都有一个ARP表
- ARP表:包括一些 LAN节点IP/MAC地 址的映射 < IP address; MAC address; TTL>
- TTL时间是指地址映射失效的时间
- 典型是20min
ARP协议:在同一个LAN (网络)
- A要发送帧给B(B的IP地址 已知), 但B的MAC地址不 在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的表项
- 无需网络管理员的干预
路由到其他LAN
编址:路由到其他LAN
-
A创建数据报,源IP地址:A;目标IP地址:B 封装一层
-
A创建一个链路层的帧,目标MAC地址是R,该帧包含A 到B的IP数据报
以太网
- 目前最主流的LAN技术:98%占有率
- 廉价:30元RMB 100Mbps!
- 最早广泛应用的LAN技术
- 比令牌网和ATM网络简单、廉价
- 带宽不断提升:10M, 100M, 1G, 10G
以太网:物理拓扑
- 总线:在上个世纪90年代中期很流行
- 所有节点在一个碰撞域内,一次只允许一个节点发送
- 可靠性差,如果介质破损,截面形成信号的反射,发送节点误认为 是冲突,总是冲突
- 星型:目前最主流
- 连接选择: hub(无法并行,一发全收) 或者 switch (并行)
- 现在一般是交换机(switch)在中心
- 每个节点以及相连的交换机端口使用(独立的)以太网协议(不会和其他节点的发送产生碰撞)
以太帧结构
发送方适配器在以太网帧中封装IP数据报, 或其他网络层协议数据单元
前导码:
-
7B 10101010 + 1B 10101011
-
用来同步接收方和发送方的时钟速率
- 使得接收方将自己的时钟调到发送端的时钟
- 从而可以按照发送端的时钟来接收所发送的帧
-
地址:6字节源MAC地址,目标MAC地址
- 如:帧目标地址=本站MAC地址,或是广播地址, 接收,递交帧中的数据到网络层
- 否则,适配器忽略该帧
-
类型:指出高层协(大多情况下是IP,但也支持其它网络层协议Novell IPX和AppleTalk)
-
CRC:在接收方校验
- 如果没有通过校验,丢弃错误帧
以太网:无连接、不可靠的服务
- 无连接:帧传输前,发送方和接收方之间没有握手
- 不可靠:接收方适配器不发送ACKs或NAKs给发送方
- 递交给网络层的数据报流可能有gap
- 如上层使用像传输层TCP协议这样的rdt,gap会被补上( 源主机,TCP实体)
- 否则,应用层就会看到gap
- 以太网的MAC协议:采用二进制退避的CSMA/CD 介质访问控制形式
802.3 以太网标准:链路和物理层
以太网使用CSMA/CD
10BaseT and 100BaseT
- 100 Mbps 速率 也被称之为 “fast ethernet” Base 基带信号
- T代表双绞线
- 节点连接到HUB上: “star topology”物理上星型
- 逻辑上总线型,盒中总线 一发全收,一次只能发一次
- 节点和HUB间的最大距离是100 m
Hubs
- Hubs 本质上是物理层的中继器:
- 从一个端口收,转发到所有其他端口
- 速率一致 没有帧的缓存
- 在hub端口上没有CSMA/CD机制:适配器检测冲突
- 提供网络管理功能
Manchester 编码 —— 物理层
- 在 10BaseT中使用
- 每一个bit的位时中间有一个信号跳变
- 允许在接收方和发送方节点之间进行时钟同步
- 节点间不需要集中的和全局的时钟
- 10Mbps,使用20M带宽,效率50%
- Hey, this is physical-layer stuff!
100BaseT中的4b5b编码
千兆以太网
采用标准的以太帧格式
允许点对点链路和共享广播信道
物理编码:8b10b编码
在共享模式,继续使用CSMA/CD MAC技术 ,节点间需要较短距离以提高利用率
交换模式:全双工千兆可用于点对点链路
站点使用专用信道,基本不会冲突,效率高
除非发往同一个目标站点
10 Gbps now !
802.11WLAN
802.11 LAN 体系结构
switches
Hub:集线器
交换机 —— 路由层面(主机)是看不到交换机的,透明的
交换机:多路同时传输
- 主机有一个专用和直接到交换机的连接
- 交换机缓存到来的帧
- 对每个帧进入的链路使用以太网协议,没有碰撞;全双工
- 每条链路都是一个独立的 碰撞域
- MAC协议在其中的作用弱 化了
- 交换:A-to-A’ 和 B-to-B’ 可 以同时传输,没有碰撞
交换机转发表
-
Q:交换机如何知道通过接口1到达A,通过接口5到达B’?
-
A:每个交换机都有一个交换表switch table,每个表项:
(主机的MAC地址,到达该MAC经过的接口,时戳)
比较像路由表! -
Q: 每个表项是如何创建的?如何维护的?
有点像路由协议?
交换机:自学习
-
交换机通过学习得到哪些 主机(mac地址)可以通 过哪些端口到达
- 当接收到帧,交换机 学习到发送站点所在 的端口(网段)
- 记录发送方MAC地址/ 进入端口映射关系, 在交换表中
交换机:过滤/转发
自学习,转发的例子 —— 不知道,泛洪
帧的目标: A’, 不知道 其位置在哪:泛洪 A’ A
- 知道目标A对应的链路 : A’ 4 60 选择性发送到那个端 口
交换机级联
交换机可被级联到一起
Q: A to G的发送 – 交换机S1 如何知道经过从 S4 和S3最终达到F?
A: 自学习! (和在一个交换机联接所有站点一 样!)
多交换机自学习的例子
假设C向I发送帧,I给C应答
Q: 显示交换表和帧在S1 , S2 , S3 , S4的转发
交换机 vs. 路由器
- 都是存储转发设备,但层次不同
- 交换机:链路层设备(检查 链路层头部)
- 路由器:网络层设备(检查 网络层的头部)
- 都有转发表:
- 交换机:维护交换表,按照 MAC地址转发
- 执行过滤、自学习和生成树算法
- 即插即用;二层设备,速率高
- 执行生成树算法,限制广播帧的 转发
- ARP表项随着站点数量增多而增多
- 路由器:续
- 交换机:维护交换表,按照 MAC地址转发
- 路由器维护路由表,执行路由算法
- 路由算法能够避免环路,无需执行生成树算法,可以以各种拓扑构建网络
- 对广播分组做限制
- 不是即插即用的,配置网络地址(子网前缀)
- 三层设备,速率低
VLANS 虚拟局域网
VLANs: 动机
考虑场景:
- CS用户搬到EE大楼办公室 ,但是希望连接到CS的交 换机?
- 接到多个交换机上
- 麻烦和浪费:96端口 /10个有用
- 如果都接到一个交换机上 ,在一个广播域
- 所有的层2广播流量 (ARP, DHCP,不知道 MAC地址对应端口的帧 )都必须穿过整个LAN
- 安全性/私密性的问题
基于端口的VLAN —— 一些端口/mac地址 通过虚拟交换机连在一起
6.5 链路虚拟化:MPLS
MPLS概述 —— 标签分发
6.6 数据中心网络
6.7 a day in the life of web request
回顾: 页面请求的历程
- Top-down的协议栈旅程结束了!
- 应用层、运输层、网络层和链路层
- 以一个web页面请求的例子: 综述!
- 目标: 标示、回顾和理解涉及到的协议(所有层次 ),以一个看似简单的场景: 请求www页面
- 场景:学生在校园启动一台笔记本电脑:请求和接 受www.google.com
日常场景
日常场景:… 连接到互联网
-
笔记本需要一个IP地址,第一跳路由器的IP地址,DNS的地址:采用DHCP
-
DHCP请求被封装在UDP中,封装在IP,封装在802.3以太网帧中
-
以太网的帧在LAN上广播
(dest: FFFFFFFFFFFF),被运行中的DHCP服务器接收到 -
以太网帧中解封装IP分组,解封装UDP,解封装DHCP
-
DHCP服务器生成DHCPACK包括客户端IP地址,第一跳路由器P地址和DNS名字服务器地址
-
在DHCP服务器封装,帧通过LAN转发(交换机学习)在客户端段解封装
-
客户端接收DHCP ACK应答
客户端有了IP地址,知道了DNS域名服务器的名字和IP地址 第一跳路由器的IP地址
日常场景…… ARP (DNS之前, HTTP之前)
- 在发送HTTP request请求之前, 需要知道www.google.com的IP地 址: DNS
- DNS查询被创建,封装在UDP段中 ,封装在IP数据报中,封装在以 太网的帧中. 将帧传递给路由器 ,但是需要知道路由器的接口: MAC地址:ARP
- ARP查询广播,被路由器接收, 路由器用ARP应答,给出其IP地 址某个端口的MAC地址
- 客户端现在知道第一跳路由器 MAC地址,所以可以发送DNS查 询帧了
日常场景:使用DNS
- 包含了DNS查询的IP数据报 通过LAN交换机转发,从客 户端到第一跳路由器
- IP 数据报被转发,从校园到达 comcast网络,路由(路由表被 RIP,OSPF,IS-IS 和/或BGP协 议创建)到DNS服务器
- 被DNS服务器解封装
- DNS服务器回复给客户端: www.google.com的IP地址
日常场景: …TCP连接携带HTTP报文
- 为了发送HTTP请求,客户端打开到达web服务器的TCP socket
- TCP SYN段(3次握手的第1次握手)域间路由到web服务器
- web服务器用TCP SYNACK应答(3次握手的第2次握手)
- TCP连接建立了!
日常场景: …… HTTP请求和应答
- HTTP请求发送到TCPsocket中
- IP数据报包含HTTP请求,最终路由到www.google.com
- web服务器用HTTP应答回应(包括请求的页面)
- IP数据报包含HTTP应答最后被路由到客户端
第6章:总结
-
数据链路层服务背后的原理:
- 检错、纠错
- 共享广播式信道:多路访问
- 链路编址
-
各种链路层技术的实例和实现
- Ethernet
- 交换式LANS, VLANs
- 虚拟成链路层的网络: MPLS
-
综合:一个web页面请求的日常场景
-
自上而下的协议栈的旅行结束了 (除了物理层)
-
坚实地理解了网络的原理和实践
-
…… 可以在这里停一下 … … 但是仍然还有很多有趣的话题!
- 无线网络
- 多媒体
- 网络安全
</article>