持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
重点概览
5.1 data transmission services
data link layer : between adjacent nodes over a link
5.2 Error detection and correction
CRC: how to generate frame with CRC and how to detect the error by CRC
5.3 Multiple access protocols
Two types of “links”: point-to-point & broadcast
Collision of broadcast channel
Data link layer is divided into two sub-layers: LLC and MAC
Multiple access protocol-three broad classes
Channel Partitioning: TDMA 、FDMA、 ……
Random Access: ALOHA、CSMA、 CSMA\CD、……
“Taking turns”:Tokening Ring
5.4 Link-Layer Addressing
MAC address :assigned at manufacturing time
ARP
ARP: IP address -> MAC address
encapsulated in a link-layer broadcast frame
process of ARP query and ARP addressing routing to another LAN
5.6 Link-layer switches
Switch- link-layer device:
Feathers of Switch and creation of Switch table : self-learning
1 introduction, services
2 error detection, correction
3 multiple access protocols
4 LANs
addressing, ARP
Ethernet
switches
VLANS
1.introduction, services
数据链路层和物理层常常合并成数据接入层
一些术语(terminology):
- 主机和路由器是节点 nodes
- 沿通信路径连接相邻节点的通信通道是链路links
- 有线链路
- 无线链路
- 局域网
- 第 2 层packet是一个帧frame,封装(encapsulate)数据报成帧(framing)
数据链路层负责 从一个node传输数据报,通过link到相邻node
提供的服务:
- framing成帧
- 链路接入:(Medium Access Control,MAC)媒体访问控制协议
- 可靠交付:保证无差错地经链路层移动每个网络层数据报
- 流量控制 flow control: 相邻发送和接收节点之间的步调
- 错误检测 error detection: 信号衰减、噪声引起的误差;接收器检测到是否存在错误:
- 纠错 error correction:接收器识别并纠正位错误,不一定重传
- 半双工和全双工 half-duplex and full-duplex: 使用半双工,链路两端的节点不能同时传输
实现:主体部分在网络适配器(Network Adapter),也叫网络接口卡(Network Interface Card,NIC)中实现
2.error detection, correction
EDC(Error Detection and Correction bits) = 错误检测和校正位(冗余)(并不完全可靠),EDC字段越大可靠性越大
D = 受错误检查保护的数据,可能包括header字段
接收节点收到D'和EDC',要检验发出节点的D和EDC是否和接收节点收到的D'和EDC'相同
接收方检测和纠正差错的能力称为前向纠错(Forward Error Correction,FEC)
2.1 Parity(奇偶校验)
只能检测单bit错误
偶校验:加一个bit,使1的总数为偶数
奇校验:加一个bit,使1的总数为奇数
二维三维奇偶校验:二维奇偶校验有行校验列校验,每一行每一列都有一个附加bit
2.2 Checksumming(校验和方法)
回顾:
- 数据的字节作为16bit整数对待并求和,和的反码形成携带在报文段首部的因特网检验和,接收方对接受的数据(包括检验和)取反码,检测结果是否全1bit来检测检验和,
- TCP和UDP对所有字段(包括首部和数据字段)都计算Internet Checksum,但运输层软件实现的差错保护较简单,相对弱。
2.3 Cyclic Redundancy Check CRC(循环冗余检测)
也称为多项式编码(polynomial code),把发送的bit串看作系数为0或1的多项式
- 将数据位 D 视为二进制数,长度d bits
- 选择 r+1 位模式(Generator),表示为G
- 目标:选择r bit个CRC位,表示为R,使得
- <D,R> 完全可被 G 整除(模 2)
- 接收器知道G,除以<D,R>除以G。 如果余数不为零:检测到错误!
- 可以检测所有小于 r+1 位的突发错误
计算CRC位R的操作如下:
要求 两边同时取XOR,则
得出 因此把D看成多项式,乘左移r位就后面加r个0,然后除以G
- 中间是异或运算,也可看作没有借位操作的减法,最后得出校验码
- 因为取模五位数G(r+1=5)的余数最多四位数(r=4),所以后面先加4个0(d+r bit模式)
- 无限空间数据在有限空间的映射,映射的标签是唯一的
3. Multiple Access protocols 多路访问协议
两种“links”:
- 点对点 point-to-point(PPP)
- 用于拨号访问的 PPP
- 以太网交换机和主机之间的点对点链路 HDLC(high-level data link control)
- 广播 broadcast(共享线或介质)
- 老式以太网
- upstream HFC
- 802.11 无线局域网(LAN)
广播信道:
- 多个节点可以通过单个共享广播信道通信
- 多个节点可能会同时传输帧:会被干扰
- 如果节点同时接收两个或多个信号,则会在接收方发生碰撞(collision)
- Multiple Access protocols 一种分布式算法,确定节点如何共享通道,即确定节点何时可以传输
三种类型的多路访问划分:
- 信号划分 Channel Partitioning
- 将通道划分为更小的“片段”(时隙、频率、代码),将片段分配到节点以供独占使用
- 随机接入 Random Access
- 通道未分类,允许冲突,有冲突再恢复
- 轮流 Taking turns
- 节点轮流,但要发送更多节点可能需要更长的轮次,有点类似轮流拿锁
3.1 Channel Partitioning 信道划分协议
TDMA(time division multiple access):时分多址(时间切片)
- TDM将时间划分为时间帧(time frame),把每个时间帧划分为N个时隙(slot)
- 每个station在每轮时间帧中获得固定长度的时隙(长度= pkt转换时间)
- 未使用的slot空闲
- 示例:6-station 局域网,1,3,4 个有 pkt,插槽 2,5,6 空闲
FDMA(frequency division multiple access):频分多址
- 划分为频段的信道频谱
- 每个station分配固定频段
- 频带中未使用的传输时间进入空闲状态
- 示例:6 站 LAN,1,3,4 具有 pkt,频段 2,5,6 空闲
CDMA(Code Division Multiple Access)码分多址
3.2 Random Access Protocols 随机接入协议
- 当节点有数据包要发送时
- 以全通道数据速率R传输。
- 节点之间没有先验协调
- 两个或多个传输节点 ➜ “碰撞”
- 随机访问 MAC 协议指定:
- 如何检测碰撞
- 如何从冲突中恢复(如通过延迟的重传)
- 随机访问 MAC 协议的示例:
- ALOHA and slotted ALOHA
- CSMA, CSMA/CD(D,detection), CSMA/CA(A,avoidence)
Carrier Sense Multiple Access (CSMA) 载波监听多路访问
- 在传输之前先侦听:
- 如果通道感测到空闲:传输整个帧
- 如果检测到通道繁忙,推迟传输
- collision(碰撞)仍可能发生:
- 两个节点可能没有侦听到彼此的传播(一方发送的还在途中,如下图t1时刻另一边发送,而t0时刻发送的还在节点B进行传输)
- 注意: 距离和传播延迟在确定碰撞概率中的作用
CSMA with Collision Detection(CSMA/CD)具有碰撞检测的载波多路监听访问
在短时间内检测到碰撞,碰撞传播中止,减少通道浪费
先听再讲--载波监听 边讲边听—进行检测 冲突处理--发送站检测到冲突后立即停止帧的发送,并且发一个简短的堵塞信号(称强化冲突信号,Jamming signal),通知网上各站已经发生冲突,本站及网上所有站都等待一段随机分布的时间,然后再按CSMA/CD方式重发该帧。
节点中的适配器(网卡NIC)角度:
- NIC从网络层接收数据报,创建帧
- 如果 NIC 感应通道空闲,则开始帧传输。如果 NIC 检测到通道繁忙,则等到通道空闲,然后传输。
- 如果 NIC 传输整个帧而没有检测到另一个传输,则 NIC 使用帧完成
- 如果网卡在传输时检测到另一个传输,则中止并发送干扰信号
- 中止后,NIC等待一个时间量,这个时间量由二进制指数避让决定
二进制指数退让(Binary Exponential Backoff)算法:
- 第 m 次碰撞后,NIC 从 {0,1,2, ..., } 中随机选择 K。
- 网卡等待 K·512 bit时间,返回到步骤 2 退避间隔更长,碰撞更多
指数退避举例 Exponential Backoff:
- 第一次碰撞:从 {0,1} 中选择 K; 延迟为K·512 bit时间
- 第二次碰撞后:从 {0,1,2,3}...
- 在十次碰撞后,从 {0,1,2,3,4,...,1023} 中选择 K
- 经过十六次碰撞,放弃传输。
4.LANs(Local Area Network 局域网)
4.1 MAC地址和ARP
4.1.1 MAC地址
- 32 位 IP 地址:
- 接口的网络层地址
- 用于第 3 层(网络层)转发
- MAC(或局域网或物理或以太网)地址:
- 函数:用于“本地”获取从一个接口到另一个物理连接的接口的帧(相同的网络,在IP寻址意义上)
- 48 位 MAC 地址(对于大多数 LAN)在 NIC ROM 中刻录,有时也可由软件设置
- 例如: 1A-2F-BB-76-09-AD
手机有两个MAC地址,一个用于数据流量、一个用于WIFI
LAN 上的每个适配器(网卡)有唯一的 LAN 地址
4.1.2 ARP(Address Resolution Protocol)地址解析协议
知道主机的ip地址怎么找主机的MAC地址
局域网上的每个 IP 节点(主机、路由器)都有 ARP 表
- ARP 表: 某些局域网节点的 IP/MAC 地址映射字段
<IP 地址;MAC 地址;TTL>- TTL(Time to Live生存时间):之后将忘记地址映射的时间(通常为 20 分钟)
- ARP是“即插即用”(plug-and-play)的: 节点无需网络管理员干预即可创建其 ARP 表
发送到同一子网内主机过程:
- A 想要将数据报发送到 B,而 B 的 MAC 地址不在 A 的 ARP 表中。
- A 广播 ARP 查询帧,其中包含 B 的 IP 地址
- dest MAC address = FF-FF-FF-FF-FF-FF-FF-FF (这是ARP固定的MAC广播地址)
- 既包含网络层地址又包含链路层地址
- 局域网上的所有计算机都接收 ARP 查询
- B 接收 ARP 数据包,使用B 的 MAC 地址回复 A
- 帧发送到 A 的 MAC 地址(单播 unicast )
- 在其 ARP 表中缓存(保存)IP 到 MAC 地址对,直到信息变旧(超时)
发送到子网以外的过程:
- 路由器的每一个接口都有一个IP地址、一个ARP模块和一个适配器, 所以每一个接口都有一个MAC地址
- 假设A发送到B,经过路由器R
- A网络层封装IP,含有源IP地址(A的IP地址)和目的IP地址(B的IP地址)
- 链路层广播ARP查询帧,子网上的路由器返回其端口的MAC地址
- A链路层封装数据报成帧,加上了源MAC(A的MAC)和目的MAC(R输入端口的MAC)
- 传输到R,R输入端口提取数据报,传到网络层
- R通过ARP获取到B的MAC地址,转发数据报
- 输出端口封装成帧,源MAC为输出端口MAC,目的MAC为B的MAC
4.2 以太网 Ethernet
星型拓扑替代总线型拓扑
交换机替代集线器(hub)
发送适配器将 IP 数据报(或其他网络层协议数据包)封装在以太网帧中
4.2.1 以太网帧结构
- 前同步码 Preamble(8个字节):前7个字节都是10101010用来唤醒接收适配器,最后一个字节10101011用来表示“大的要来了”
- 目的地址(6字节)
- 源地址(6字节)
- 类型(2字节):表明网络层协议类型,ARP的类型编号也在这个字段中
- 数据字段(46~1500字节):就是IP数据报
- CRC循环冗余检测(4字节)
4.2.2 以太网特点
- 无连接(connectionless):发送和接收 NIC 之间无握手
- 不可靠(unreliable):接收 NIC 不会向发送 NIC 发送 ACK 或 NACK
- 传递到网络层的数据报流可能存在gaps(缺少数据报,因为不通过CRC校验就直接丢弃帧,里面的数据报也被丢了)
- 如果应用程序使用TCP,则将填补gaps
- 否则应用层将看到gaps
以太网的 MAC 协议:unslotted CSMA/CD
4.2.3 小结
- 链路层寻址
- 链路层流量
- 在同一子网内
- 跨子网
- 局域网技术
- 以太网、无连接且不可靠的服务
- 帧结构(承载IP数据报作为有效载荷)
- CSMA/SD,当节点与集线器连接时,共享广播链路
- 以太网、无连接且不可靠的服务
4.2.4 扩展知识
许多不同的以太网标准 :
- 常见的 MAC 协议和帧格式
- 不同的速度: 2 Mbps, 10 Mbps, 100 Mbps, 1Gbps, 10G bps
- 不同的物理层介质:光纤、电缆
Manchester encoding:
因为高低电平转换不可能不需要时间,所以在中间就进行改变
- 用于 10BaseT 每个位都有一个过渡
- 允许发送和接收节点中的时钟彼此同步
- 无需在节点之间使用集中式全局时钟
4.3 链路层交换机
二层交换机(工作在物理层、链路层)
三层交换机(物理层、链路层、网络层)
hubs(集线器):
物理层(没有协议的一层,是“dumb”的)中继器:
- 一个bit进入接口,hub重新生成bit并向其他接口传输
- 连接到集线器的所有节点都可能相互碰撞
- 无帧缓冲
- 集线器上没有 CSMA/CD:主机网卡检测到冲突要重传
链路层设备:比集线器更智能,发挥积极作用
- 存储,转发以太网帧
- 检查传入帧的 MAC 地址,在要转发帧时有选择地将帧转发到一个或多个传出链路
- 透明 主机不知道交换机的存在
- 即插即用,自学(plug-and-play, self-learning),交换机无需配置
交换机:允许多路同时传输
- 交换机缓存数据包
- 消除碰撞:每个传入链路上使用以太网协议,但没有冲突;A 到 A' 和 B 到 B' 同时切换,无碰撞
- 全双工
- 异质的链路:链路彼此隔离,速率介质可能不同
- 管理
4.3.1 自学习(self-learning)
-
Q:交换机如何知道 A' 可通过接口 4 访问,B' 可通过接口 5 访问?
-
A:每个交换机都有一个交换机表,每个条目:
<主机的MAC地址,到达该MAC的交换机接口,时间戳>,从时间戳开始,一段时间后(老化期aging time)会过期 -
Q:如何在交换机表中创建和维护条目? 类似于路由协议?
-
A:self-learning(自学习)
- switch 了解哪些主机可以通过哪些接口访问
- 当收到帧时,交换机learn发送方的位置:传入LAN段
- 在交换机表中记录发送方/位置对
4.3.2 交换机过滤和转发 frame filtering/forwarding
过滤表示应不应该转发,转发代表应该被转发到哪里
交换机收到frame时:
- 记录与发送主机相关联的链接
- 索引切换表采用MAC dest地址
- if在交换机表找到目的地的条目
then {
if dest 在帧到达的段上(因为不需要转发回局域网)
then 丢弃frame (即过滤)
else 在指定的接口上转发帧
}
else(frame目的地未知) flood(广播风暴:交换机广播该frame,向所有接口前面的输出缓存转发该帧的副本,然后依旧找不到,不断广播)
4.3.3 交换和路由
存储和转发设备
- 路由器:网络层设备(检查网络层header)
- 路由器维护路由表,实现路由算法
- 交换机:链路层设备
- 交换机维护开关表,实现过滤,学习算法
4.4 VLANs(Virtual Local Area Network)
支持 VLAN 功能的交换机可以配置为在单个物理 LAN 基础结构上定义多个虚拟 LAN(比如交换机1-8端口配成一个VLAN,9-16端口又能配成一个VLAN)
基于端口的VLAN:将交换机端口分组(按交换机管理软件)使单个物理交换机作为多个虚拟交换机使用
- 需求和特点:流量隔离、避免交换机端口浪费、管理用户
- 流量隔离:与端口 1-8 之间的帧只能到达端口 1-8
- 还可以根据端点的 MAC 地址而不是交换机端口来定义 VLAN
- 管理用户:动态成员资格:可以在 VLAN 之间动态分配端口
- VLAN 之间的转发:通过路由完成(就像使用单独的交换机一样),供应商常常组合销售交换机和路由器
中继端口(trunk port):在通过多个物理交换机定义的 VLAN 之间传输帧
- 交换机之间在 VLAN 内转发的帧不能是普通 802.1 帧(必须携带 VLAN ID 信息)
- 802.1q 协议添加/删除了在中继端口之间转发的帧的附加标头字段
- 初始以太网帧和802.1Q标签以太网VLAN帧的对比:
Trunk(干线)可以在下列情形下使用:
- 交换机之间的连接
- 路由器和交换机之间的连接
- 服务器和交换机之间的连接
5. 总结
- 数据链路层服务背后的原则:
- 错误检测、纠正
- 共享广播频道:多路访问
- 链路层寻址
- 各种链路层技术的实例化和实现
- 以太网
- 交换局域网、VLAN