1. 链路层概述
1.1 结构
节点 | 任何运行链路层协议的设备 |
---|---|
链路 | 相邻节点之间的通信信道 |
frame | 节点把datagram封装为frame后传输到link上 |
1.2 服务
组帧 | frame封装链路层协议,每一个frame=data+若干header,其中网络层数据报就在data中 |
---|---|
链路接入 | MAC(Medium |
Access Control)协议规定了frame在link的传输规则 | | 可靠交付 | 类似传输层TCP的确认和重传 | | 差错检测和纠正 | 见👇错误检测和纠正 |
1.3 实现位置
每一个host都有链路层,主体部分在网络适配器(network adapter),即网卡(NIC),连接着host的系统总线
2. 错误检测和纠正
奇偶校验 | 对于d位数据,增加一个校验位,使得d+1位中的1总数是偶数,当数据接收方计算出的校验位和传输的结果不一致,说明出错 |
---|---|
二维奇偶校验 | 一维奇偶校验只能检测,无法纠正,而二维校验可具体定位错误bit,从而改正 |
CRC检测 | 编码过程: |
CRC把发送的01串视为多项式进行操作:发送d位数据,发送方和接收方需要协定一个G,用于验证数据,对于d≤**2**,需要保证有r个附加比特R连接到原始数据D上,生成d+r比特模式 |
| | 求R过程:
对d位原始数据先补r个0,直接进行模二运算(异或),得到R,如下👇原始数据101110,因为6<2,则需要要3位附加比特使用101110000和1001模二运算,得到余数为011,因此发送的比特模式应该为101110011
|
| | 校验过程:
接收方使用G去除(模二除法)接收的d+r,当余数为0说明正确接收,否则说明传输出错,接上👆,接收方收到101110011后和1001模二运算,当余数为0,说明结果正确 |
| 对于其余层 |
- 在第二层(链路层)使用CRC检验;
- 在第三层(网络层)使用checksum
|
3. 多路访问协议
定义 | Multiple access protocols—多路访问协议: 用于规范多节点在共享的广播信道传输frame时的行为 |
---|---|
分类 | - channel |
parititioning--信道划分<br />- random access--随机接入<br />- taking turns--轮流<br /> |
3.1 信道划分协议
TDMA—时分复用 | FDMA—频分复用 |
---|---|
把时间划分为时间帧,分为N个slot(时隙),每个节点分得特定slot |
**优点: **避免了碰撞<br />
**缺点: **①速度限定R/N ②利用率低下 | 根据频率分配frame,缺点和优点同TDMA一样 |
3.2 随机接入协议
传输节点以全速率R发送,有碰撞时再进行处理
纯ALOHA | 示意 | | | —- | :—-: | | 说明 | 只关注独立节点,随时都可以发送frame,问题是当前frame占用信道时前后frame都会被影响 | | 效率 | 1/2e=0.18 |
时隙ALOHA, slotted ALOHA | 示意 | | | —- | :—-: | | 说明 | 当节点发送frame,等到下一slot即全速发送,如果没有collision无需重传,如果碰撞,则以随机概率p决定在下一slot重传 | | 效率 | 最大为1/e=0.37 |
CSMA(Carrier Sense Multiple Access,载波侦听多路访问) | 模式 | 在传输frame前监听信道,空闲时才传输,当其余host传输占用信道时也不会去打断 | | | —- | —- | —- | | CSMA
冲突 | |
- t0时刻:信道空闲,B开始传输,沿着两个方向随时间向下传播
- t1时刻:此时D监听信道空闲,实际上B的比特只是还未抵达
- 一段时间后:B抵达D开始在D干扰D的传输
| | | | CSMA中冲突发生后传输不会停止,因此会生成受损的frame,为了避免这种情况需要保证B的比特在D传输就抵达,提示D信道忙:
|CSMA/CD(Collosion Detection,带碰撞检测的CSMA) | 模式 | 先听后发 边听边发,
冲突停发 随机重发
停发机制避免浪费带宽去传输受损frame | | | —- | —- | —- | | CSMA
冲突 | |
- t0时刻:信道空闲,B开始双向传输
- t1时刻:此时D监听信道空闲,实际上B的比特只是还未抵达,D开始双向传输
- 一段时间后:B抵达D开始在D干扰D的传输,而之后D的比特也到B,B在时探测到干扰
- ⭐**CSMA/CD无法用于WLAN,因为信道监听困难,无线使用CSMA/CA
| | | | 在冲突发生时,为了使两个站点都能及时正确接受到冲突发生的信号,要满足最小帧长:**
|
最小帧长L*的确定
参考链接: CSMA/CD协议(载波侦听多路访问/碰撞检测) 最小帧长理解
前提:**
- 边听边传,当前frame传输未结束时监听到碰撞才有意义
- 传输时延:将一个完整pkt传输到信道上的时间,因此在0时刻frame的第一个bit传到信道后,L/R时刻时frame最后一个bit传到信道上
- 碰撞信息传回host也需要时间(传播时延)
3.3 轮流协议
轮询—polling | 描述:主节点以轮询方式给其余节点发送msg,告知子节点可发送的frame最大数量 | |
---|---|---|
缺点:轮询也有时延,且主节点故障时传输不可进行 | ||
令牌—token | 描述:没有主节点,有一个令牌在需要传输frame的节点间传递,持有令牌的节点以最大速率发送 | |
缺点:当一个节点要加入/退出时,为了形成环路,必须进行节点的更新维护 |
4. MAC地址 & ARP
4.1 MAC地址
定义 | 网络接口的链路层地址,有48bits,也叫LAN地址,物理地址 |
---|---|
位置 | 链路层 |
意义 | ⭐src的适配器(网卡)向dest发送frame时,把dest的MAC地址插入frame,从而dest可实现在网卡处就过滤网络中不相关的**pkt** |
为什么不使用32bits的IP地址? IP协议实现在网络层,需要接收pkt后拆封由OS判断,而每次判断会触发OS的中断,效率低下,浪费资源 🦈关于抓包过滤: 网卡分为混杂/正常工作模式,使用wireshark抓包时会切换为混杂模式,此时网卡就会接受所有MAC不对应的pkt |
|
结构 | 扁平,即无层次,且不可变.目的就是免去配置的过程,直接写死在网卡上 |
4.2 ARP—地址解析协议
定义 | ARP, Address Resolution Protocol(地址解析协议),负责进行网络层IP和链路层MAC地址映射,**跨越链路层和网络层** |
---|---|
过程 | 每一个IP节点**(包括host)都有ARP table,存有IP-MAC映射 - 当有记录时:直接查表 - 无记录时: - 广播查询—A广播ARP查询pkt(dest MAC设为FF-FF-FF-FF-FF-FF),其中含有B的IP - 单播返回—**当B收到查询,单播返回给A自己的MAC |
4.3 局域网寻址场景
场景 | ||
---|---|---|
背景知识 | 背景知识 - 直接投递:同一子网内host,MAC直接为目标host的MAC - 间接投递:当非同一网络组内host,数据报无法直接抵达,需要先发给网关,因此是网关的MAC |
|
当问”节点如何知道该使用什么链路层地址”? 答案:节点通过IP地址判断: - 如果网络号相同说明在同一子网,直接使用目标MAC为link层地址 - 当网络号不同说明非同一子网,采用间接投递,使用网关MAC |
||
过程 | A封装: - A网络层datagram:IP src为111.111.111.111,IP |
dest:222.222.222.222(B)<br />- A链路层frame:MAC src:74… **MAC dest:E6 ..**.(路由器R的接口,非B)<br /> |
| | | R接收:
- 数据报没有任何改动
- 链路层frame的MAC src变为自己发送接口的MAC,MAC dest变为同一网络内B的MAC
|
| | | B收到:
B最终收到来自A的pkt
上述过程中A->R即为间接投递,R->B为直接投递,省略了ARP解析
注意:frame中封装的datagram不会改变(忽略NAT),但src和dest MAC每一hop都改变,对应着Ch1中链路层作用:在相邻网络节点间转递数据 |
5. 以太网
5.1 概述
- 定义:
以CSMA / CD作为MAC算法的一类LAN称为以太网(来自: 以太网原理)
- 发展
| 同轴电缆 | |
- 拓扑:使用bus topology
- 广播局域网:所有frame传送到与bus连接的所有适配器(NIC/网卡)进行处理
| | —- | :—-: | —- | | 集线器 hub | hub是物理层设备,作用于bit而非frame,二进制信号**(0/1)到达时hub**只是重新生成并发送给其他接口,见6.1 交换机&集线器 | | | 交换机 swtich | 见链路层交换机—switch | |
5.2 以太网帧
前导码 | 共8bytes,前7字节为10101010用于同步,最后1字节10101011预示数据到来 |
---|---|
地址 | 都为6字节 |
Type | 指示高层协议(大部分为IP,但还有其他) |
CRC | 校验 |
5.3 服务
Unreliable, connectionless
- 无连接:数据传输前没有握手
- 不可靠:NIC之间不传输ack
- MAC协议: 无分片带碰撞检测的CSMA—unslotted CSMA/CD
5.4 以太网传输算法⭐
|
- NIC从网络层接收datagrams,组成frame
- 当NIC检测到信道占用,等待直到空闲;
- 当NIC检测的信道空闲(96bit time**中没有被占用),开始传输;
- 当NIC完成传输且无冲突,传输完成;
- 当探测到冲突,终止当前传输,发生以下一系列动作
- 发送48bits的jam signal,告知其他传输者发生冲突
- NIC进行指数回退(exponential backoff):当前为第m次冲突,则选择k∈{0,1,2…2m-1},NIC等待K512bit times后回到状态2—即随机等待时间
| | —- | | **Jam** signal:特殊信号,48bits,用于告知其他传输者冲突
** bit time:传输1bit数据的时间—1/R | | 例题:
局域网内A和B在t=0时刻进行数据相互传输,传播时延为500 bit times,则
①AB分别何时检测到冲突 ②发生第一次冲突后A,B的K为0,1则分别在何时重新传输 | |
1. 500bit time时AB同时各自检测到冲突
1. AB如下
|
6. 交换机
6.1 交换机&集线器
hub | 集线器只是单纯的物理层设备 - 一条link的bits会以相同速率发送给所有links,因此,集线器以太网是bus** topology - 所有nodes之间都会冲突 - 没有frame缓存 - hub自身**没有CSMA/CD,只能通过host检测 |
|
---|---|---|
switch | 更主动的链路层设备 - 检测到达frame的MAC,有选择的转发给一或多个links,交换机以太网是star** topology - 允许多路同时传输,不会冲突 - 存储-转发以太网frame - 使用CSMA**/CD - 透明:switch没有网络层,**因此没有IP地址(基于vlan等技术分配的为虚拟IP),故host无法意识到switch存在 - plug-and-play & Dual: 自学习,无需手动配置table;双工**,任一接口同时收发 |
6.2 转发&过滤
filtering | 决定frame应当转发或丢弃的switch功能 |
---|---|
forwarding | 决定frame的导出接口 |
switch table | 是转发&过滤的基础,基于“MAC-接口”的对应关系 |
场景 | 对于一个“来自x接口且**dest MAC**为DD-DD-DD-DD-DD-DD的frame”,swtich使用该MAC索引table,可能情况: - 失配:此时交换机广播该frame的副本给x接口外所有接口 - 丢弃:有一个item,把DD-DD-DD-DD-DD-DD连接到接口X,说明该frame的dest和src在一个LAN中,无需转发,直接丢弃 - 转发:有一个item,把DD-DD-DD-DD-DD-DD连接到接口Y,则通过Y转发frame即可,和别的接口无关 |
6.3 自学习
初始table为空,而且交换机可以自学习并动态更新table
初始 | table为空 |
---|---|
学习 | 对于一个frame,在table中存入: 1. src MAC 2. 到达接口 2. 当前时间 |
老化 | 一段时间无来自该src的frame则删除item |
6.4 路由器&交换机
共同点 | 二者都为存储转发分组交换机 | ||
---|---|---|---|
不同点 | 路由器 | 拥有网络层,因此有IP地址, 也可以使用MAC | |
交换机 | 只能使用MAC | ||
交换机 | 优点 | - 即插即用,无需配置,无需处理高层次数据报 - 设有输出缓存,没有因为碰撞浪费带宽,交换机最大聚合带宽是所有接口速率之和 |
参考例题: 不同设备聚合带宽
- 全双工,任意接口同时收发
|
| | | 缺点 | 一旦host出错不断输出frame流,switch无法识别,只能转发直到崩溃—“广播风暴” |
| | 路由器 | 优点 | IP寻址分层,非MAC扁平,因此能够隔离流量,防止”广播风暴”,且使用算法可以”优化路由” |
| | | 缺点 | 需要配置,且对pkt处理时间更长 |
- 小结三种网络设备