[toc]
1.链路层概念#
1.1链路层的功能#
- 控制物理介质访问,把传输协议加到链路上
- 对传输的数据可做管理和控制,避免因为电平出错导致数据错误却无法发现
1.2链路层协议设计的3个重要概念#
-
帧定界问题
通过添加首部和尾部(例如SOH 0x01或者E OH0x04, 也称做界限符),把数据封装成一帧。
帧的最大帧长度叫MTU -
透明传输问题
为了避免帧中数据也存在首部尾部导致获取时出错, 填充字符时,界限符需要做转义 -
差错控制问题
纠错:
为了避免传输过程因为电路波动存在问题,需要做检查。- 循环冗余CRC校验(ARQ方式中使用)
- 海明码纠错
防丢失:超时重发
防重复:编号
2 常见协议#
2.1 PPP协议#
用于与ISP通信所用协议
用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案
只可全双工
PPP也要解决上面提到的3个问题
2.1.1 PPP如何解决帧定界?#
PPP协议的帧格式如下:
7E | FF | 03 | 0021/C021/8021 | xxxx | ??? | 7E |
---|---|---|---|---|---|---|
帧首 | 地址地段 | 控制字段 | 协议,IP/LCP/NCP三选一 | 数据报部分 | FCS校验码部分 | 帧尾 |
从上面可以看到以下几点:
- PPP协议的帧首和帧尾都是7E(01111110)
- 地址字段和控制字段都是固定值,相当于已经废弃了(PPP是点对点协议,所以不需要MAC地址,因此地址字段是一个固定值)
- PPP不止支持IP协议,海支持LCP\NCP
2.2.2 PPP如何解决透明传输?#
有2种方式:
- 异步传输时, 使用字节填充的方式:
- 当数据报部分出现0x7E时, 转成0x7D+0x5E
- 当出现0x7D时, 转成0x7D+0x5D
- 出现ASCll码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。
可以看到异步传输是用0x7D来识别和转义可能误解的字符, 拆解时根据0x7D去反转
- 同步传输时,使用零比特填充
帧首和帧尾都是0x7E(01111110), 即6个1)
当数据报部分出现5个1时,会马上填充1个0(这样数据报中永远不会存在连续的6个1)
当拆解时, 发现连续的5个1,就会删除后面的1个0来恢复
2.1.3 PPP如何解决差错控制?#
使用末尾的FCS校验码校验数据是否有0、1不正确。具体见CRC纠错原理。
2.2 HDLC高级链路控制协议#
HDLC是面向位协议,用"数据位"定义字段类型,而不用控制字符,通过帧中用"位"的组
合进行管理和控制。
帧格式为:
字段:开始标志 地址字段 控制字段 信息字段 校验序列 结束标志
广域网使用PPP和HDLC协议进行远距离数据传输
2.3 CSMA/CD协议(以太网)#
2.3.1 防冲突机制#
以太网是采用CSMA/CD访问方法的局域网
-
无连接的工作方式,发出去就完事了
-
地理范围和站点数量有限
-
共用总线发送
-
为了避免同一时间多个电平碰撞引发数据混乱,使用了碰撞检测
其实就是看在争用期内,是否连续收到2端数据,如果收到了说明存在冲突,数据有问题。
争用期概念:
以太网的端到端往返时延 2a 称为争用期,或碰撞窗口。通常,取 51.2 us 为争用期的长度。对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。以太网在发送数据时,若前 64 字节未发生冲突,则后续的数据就不会发生冲突。如果发生冲突,就一定是在发送的前 64 字节之内。由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。
-
发现碰撞,会重传,等待重传的时间使用二进制指数退避方法
-
存在最短帧长(64字节),就是为了能有效做碰撞检测,不足就会填充空白
-
使用曼彻斯特编码
详细见“
https://blog.csdn.net/weixin_43941364/article/details/105639195
2.3.2 以太网报文#
界限符 | 时钟同步码 | 目的地址 | 源地址 | 类型 | 数据报 | FCS校验 |
---|---|---|---|---|---|---|
0xAB | 7字节,与适配器时钟同步 | 6字节 | 6字节 | 2字节 | 最短46字节 | 4字节(CRC) |
从这个报文看到以下几点:
- 最短数据报文字节46, 是由 64 - 16 得到的, 64是之前提到的最短帧长(为了做冲突检测)
- 不需要帧结束符(不会连续存在,如果连续存在那可能就是发生冲突)
- 数据报文可能会填充很多空白的
- 无效帧判定: FCS错误、 帧长不在64~1518范围内
注意:快速以太网的最短帧总长46B
2.3.3 mac硬件地址概念#
- mac地址固化在ROM的地址中(网络适配器)。 如果更换适配器,则地址改变。 更换局域网,mac地址不变。
- 若一个网中有2个相同mac地址,则无法正常通信
- 1个路由器或者主机中可以配置多个mac地址
- mac地址总共6个字节,前3个字节伪注册管理机构分配(第一位判断是单站还是组地址,最低第二位判断是全球管理还是本地管理)
- 后3个字节才是真正的地址
2.3.4 以太网交换机#
- 用于局域网,做多主机之间的数据交换,属于链路层的扩展道具
- 具有自学习功能:
第一次使用,内部无mac缓存,拿到未知mac时会给所有端口发,拿到响应后就会记录下来,后续直接转发
mac缓存有有效时间,不会一直存在 - 交换机可以分割冲突域(物理层),但无法分隔广播域
广播域就是说如果站点发出一个广播信号后能接收到这个信号的范围。通常来说一个局域网就是一个广播域。
冲突域指一个站点向另一个站点发出信号。除目的站点外,有多少站点能收到这个信号。这些站点就构成一个冲突域。
冲突域通过集线器连接,广播域则通过交换机。
2.3.5 虚拟局域网VLAN#
- 可隔离广播域和冲突域
2.4 CSMA/CA(无线网)#
- 会事先避免冲突,会先侦听信道,等到预约到信道了再进入征用端口。
存在自动重传请求ARQ机制,有3种方式:
- 单帧滑动-停止等待协议
- 一次只发一帧,1次只收一帧,并确认占有信道后才继续
- 发送端:收到ack确认后,才会发下一个,每个都有个定时器
- 接收端:序号不匹配递增的话都会丢弃。
- 后退N帧GBN
- 发送端:连续发送,无需等待上一帧完成,每个帧有个定时器判断ack超时
- 接收端:有序接收,1次只收1个,如果希望收4,却收到5,则丢弃,发送端会超时重发4
- 选择重传SR
- 发送端: 和2一样, 无需等待, 每个帧有定时器
- 接收端:乱序接收,存在窗口缓存,如果收到了2,而且缓存里有3和8,则会合并上交后,发ack8
2.5 PPPOE#
- 属于PPP协议和以太网的结合,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。
- 我们的电脑宽带接入大网很多都是基于PPPOE的
https://blog.csdn.net/u011857683/article/details/84703669