计算机网络(数据链路层)
多路访问控制协议
信道划分MAC协议
随机访问MAC协议
时隙ALOHA协议
假定所有帧大小相同,时间被划分为等长的时隙,每个时隙可以传输1个帧,节点只能在时隙开始时刻发送帧,节点间时钟同步,如果2个或2个以上节点在同一时隙发送帧,节点即检测到冲突
当节点有新的帧时,在下一个时隙发送
- 如果无冲突:该节点可以在下一个时隙继续发送新的帧
- 如果冲突:该节点在下一个时隙以概率p重传该帧,直至成功
优点:
- 单个节点活动是,可以连续以信道全部速率传输数据
- 高度分散化:只需同步时隙
- 简单
缺点:
- 冲突,浪费时隙
- 空闲时隙
- 节点也许能以远小于分组传输时间检测到冲突
- 要求所有节点时钟同步
非时隙ALOHA协议
更加简单,无需同步,当有新的帧生成时,立即发送
冲突可能性增大,在$t_0$时刻发送帧,会与在[$t_0-1,t_0+1$]期间其它节点发送的帧冲突
CSMA协议
载波监听多路访问协议(carrier sense multiple access)
发送帧之前,监听信道
- 信道空闲:发送完整帧
- 信道忙:推迟发送
- 1-坚持CSMA:一直监听
- 非坚持CSMA:随机等待一段时间再监听
- P-坚持CSMA:以概率p监听信道
冲突可能仍然存在:碰巧时间相同或信号传播延迟
产生冲突时继续发送冲突帧会造成信道资源的浪费
CSMA/CD协议
CD (冲突检测)
短时间内可以检测到冲突,冲突后传输终止,减少信道浪费
冲突检测:
- 有线局域网易于实现:测量信号强度,比较发射信号与接收信号
- 无线局域网很难实现:接收信号强度淹没在本地发射信号强度下
边发边听,不发不听
在发送数据帧的过程中监听冲突,发送结束后结束监听冲突
效率
轮转MAC协议
轮询:主节点轮流邀请从属节点发送数据
存在问题:
- 轮询开销
- 等待延迟
- 单点故障
令牌传递:控制令牌依次从一个节点传递到下一个节点
- 令牌:特殊帧
环形网络,令牌沿着一个方向传递
存在问题:
- 令牌开销
- 等待延迟
- 单点故障
MAC地址
也称为LAN地址,物理地址,以太网地址
作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其它接口
48位MAC地址(用于大部分LANs),固化在网卡的ROM中,有时也可软件设置(有时可以修改,但要确保修改后的MAC地址在局域网中唯一)
- 16进制表示:例如1A-2F-BB-76-09-AD
局域网中每块网卡都有一个唯一的MAC地址
MAC地址又IEEE统一管理与分配,网卡生产商购买MAC地址空间的前24比特,后24位由厂商分配
MAC地址是“平面地址”,可以携带,可以从一个LAN转移到另一个LAN;不同于IP地址是层次地址,不可携带,依赖于节点连接到哪个子网
以太网
总线(bus)网络:上世纪90年代中期前流行
- 所有节点在同一冲突域,可能彼此冲突
冲突域:任何两个节点发送数据会产生冲突的范围
星型:目前主流网络拓扑
- 中心交换机
- 每个节点一个单独的冲突域,节点间彼此不冲突
提供不可靠,无连接的服务
无连接:发送帧的网卡与接收帧的网卡间没有“握手”过程
不可靠:接收网卡不向发送网卡进行确认
局域网范围内通常差错率比较低,出错的可能性不大
差错帧直接丢弃,丢弃帧中的数据恢复依靠高层协议(例如TCP),否则发生数据丢失
以太网CSMA/CD算法
以太网的MAC协议:采用二进制指数退避算法的CSMA/CD
- NIC从网络层接收数据报,创建数据帧
- 监听信道
- 如果NIC监听到信道空闲,则开始发送帧
- 如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧
- NIC发送完整个帧,而没有检测到其它节点的数据发送,则NIC确认发送帧发送成功
- 如果NIC检测到其它节点传输数据,则中止发送,并发送堵塞信号(jam signal)
- 中止发送后,NIC进入二进制指数退避
- 第m词冲突后,取n=Max(m,10)
- NIC从$0$~$2^n-1$中随机选择一个整数K,等待K*512个比特的传输延迟时间,再返回第2步
- 连续冲突次数越多,平均等待时间越长(通常来使16次冲突后就不再尝试)
以太网帧的结构
发送端网卡将IP数据报(或其他网络层协议分组)封装到以太网帧中
前导码(preamble)8B
- 7个字节10101010,第8个字节为10101011
- 用于发送端与接收端的时钟同步
- 一般说数据帧长度不包含前导码
目的地址,源地址(各6B)
- 如果网卡的MAC地址与收到的帧的目的地址MAC地址匹配,或者目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),则网卡接收该帧,并将其封装的网络层分组交给相应的网络层协议
- 否则网卡丢弃帧
类型(type)2B:指示帧中封装的是那中高层协议的分组
数据(data)46-1500B:指上层协议载荷
最少46个字节,不足需要填充
不能少于46个字节因为CSMA/CD要求发送时间要大于等于两个RTT
CRC(4B):循环冗余校验码
- 丢弃差错帧
不同的以太网标准
- 相同的MAC协议和帧格式
- 不同速率
- 不同的物理介质:光纤,线缆
网桥
交换机
链路层设备
- 储存-转发以太帧
- 检验到达帧的目的MAC地址,选择性向一个或多个输出链路转发帧
- 利用CSMA/CD访问链路,发送帧
透明:主机感知不到交换机的存在
即插即用
自学习:交换机无需配置
主机利用独享链路直接连接交换机,交换机缓存帧
交换机在每段链路上利用CSMA/CD收发帧,但无冲突且可以全双工,因为每段链路是一个独立地冲突域,且每个冲突域只有一台主机
交换可以并行,例如A和A‘的通信以及B和B’的通信可以同时进行
- 消除碰撞。在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽!交换机缓存帧并且决不会在网段上同时传输多于一个帧。就像使用路由器一样,交换机的最大聚合带宽是该交换机所有接口速率之和。因此,交换机提供了比使用广播链路的局域网高得多的性能改善。
- 异质的链路。交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行。
- 管理。除了提供强化的安全性,交换机也易于进行网络管理。
交换表
每个交换机有一个交换表
- (主机MAC地址;到达主机的接口;时间戳)
交换机通过自学习获知到达主机的信息接口,当收到帧时,交换机“学习”到发送帧的主机(通过收到帧的源MAC地址),位于收到该帧的接口所连接的LAN网段,将发送主机MAC地址/接口信息记录到交换表中
当交换机收到帧:
- 记录帧的源MAC地址与输入链路接口
- 利用目的MAC地址检索交换表
- 如果在交换表中检索到与目的MAC地址匹配的入口
- 如果目的主机位于收到帧的网段,则丢弃帧(在交换机看来,传输发生在同一网段,交换机不需要转发)
- 否则,将帧转发到该入口指向的接口
- 否则泛洪,向除收到该帧的接口之外的所有接口转发
交换机互联
组织机构网络
连接到交换机的主机属于一个广播域
交换机VS路由器
两者均为存储转发设备
- 路由器是网络层设备,检测网络层分组首部
- 交换机是链路层设备,检测链路层帧的首部
二者均使用转发表
- 路由器利用路由算法构建,依据IP地址
- 交换机利用自学习、泛洪构建转发表,依据MAC地址
STP
VLAN虚拟局域网
虚拟局域网:支持VLAN划分的交换机可以在一个物理LAN架构上配置、定义多个VLAN
流量隔离:去往端口1-8的帧只到1-8,也可基于MAC地址定义VLAN,而不是交换端口
动态成员:端口可以动态分配给不同VLAN
通过路由在VLAN间转发,就像在独立的交换机之间(在实践中,厂家会将交换机与路由器集成在一起)
跨越多交换机的VLAN
中继端口(trunk port):在跨越多个物理交换机定义的VLAN承载帧
- 为VLAN转发802.1帧容易产生歧义,所以必须携带VLAN ID
- 802.1q协议为经过中继端口转发的帧增加/去除额外的首部域
PPP协议
点对点数据链路控制,一个发送端,一个接收端,一条链路,比广播链路容易
- 无需介质访问控制
- 无需明确的MAC地址
常见点对点数据链路控制协议
- HDLC
- PPP
PPP设计需求
组帧:将网络层数据报封装到数据链路层帧中
- 同时可以承载任何网络层协议分组
- 可以向上层实现分组
比特透明传输:数据域必须支持承载任何比特模式
差错检测:无纠正
连接活性检测:检测、并向网络层通知链路失效
网络层地址协商:端节点可以学习配置彼此网络地址
PPP数据帧
- Flag:定界符
- address:无效(仅仅是一个选项)
- control:无效;未来可能的多种控制域
- protocol:上层协议
- info:封装的上层协议分组数据
- check:CRC校验,用于差错控制
字节填充
数据域中包含标志模式<01111110>,为了判断该作为数据接收还是标志接收
发送端在数据中的<01111110>和<01111101>字节前添加额外的字节<01111101>
接收端:
- 单个<01111101>表示一个填充字节
- 后面跟<01111101>,则这个为数据
- 后面跟<01111110>,则这个为标志字节
在交换网络层数据之前,PPP数据链路两端必须
配置PPP链路
- 最大帧长度
- 身份认证
学习/配置网络层信息