目录

Data Link Layer

在两个网络实体之间提供数据链路通路的建立,维持和释放,提供物理地址寻址,数据成帧,流量控制,数据检错,重发等功能

目前主要有两种链路

  • 点对点链路:链路一端只有一个发送方,另一端只有一个接收方

  • 广播链路/广播信道:能够让多个发送和接收节点,都连接到相同的 统一的 共享的广播信道上

三个基本问题: 封装成帧,透明传输,差错检测

  • 封装成帧 : 在一段数据的前后分别添加首部SOH 帧开始符和尾部EOT 帧结束符,这样就构成了一个帧。

  • 透明传输 : 在传输二进制文件时,数据有EOT帧结束符一样的编码,如何在接收端不解释为尾部呢?答案是在前面插入ESC字符,在接收端接收完数据后,再将ESC去除掉,这叫字节填充

  • 差错检测 : 比特在传输过程中,1可能变成0, 0也可能变成1,使用循环冗余检验CRC或者帧检验序列方法可以检测出来

在通信质量比较差的无线传输链路,数据连接层协议使用了帧编号,确认和重传机制,向上层提供可靠传输的服务,而在通信质量好的有线链路,则没有这些机制,而是交给上层 TCP 完成确认和重传

广播信道

IEEE 802.2 封装格式: 目的地址 6 + 源地址 6 + 长度 2 + DSAP 1 + SSAP 1 + cntl + org code + 类型 + 数据 + CRC

以太网的封装格式: 目的地址 6 + 源地址 6 + 类型 2 + 数据 + CRC

点对点信道

标志 1 + 地址 1 + 控制 1 + 协议 2 + 信息 + CRC + 标志

如何解决在共用物理媒介上的多设备同时发消息的问题(多路访问)

CSMA/CD是实际中使用的协议:具体思想是:在发送之前先监听信道。如果介质空闲,则马上传输。如果介质正在忙,则一直监听到信道空闲,立刻传输。如果检测到冲突,那么立刻停止传输,等待一个随机的时间,之后再重复上面的步骤。

如何检测到冲突?

消息发送的过程中主机进行监听,如果发现信道上面的电平值和自己发送端的电平值不相同,那么它就认为自己发送的时候有别人进行发送,也就是说信道发生了冲突。

在信道空闲时发送一条消息后,我监听多长时间后没有监听到冲突,就认为我的消息成功发送了呢?

我们假设AB是两个局域网中相距最远的节点,并且从一端传递到另一端所需要的时间为τ。我们考虑极端的情况:假设A发送到B的消息,在马上就到达B的时候,B突然发送了消息发生冲突。那么这个冲突信号再传递给A,这个过程应该持续2τ。也就是说,在消息最后一比特监听时间持续了2τ之后,还没有检测到冲突,那么认为消息应该已经无冲突的到达。

CSMA/CD

以太网采用附加冲突检测的载波帧听多路访问(CSMA/CD)机制,以太网中所有节点都可以看到在网络中发送的所有信息。因此,以太网是一种广播网络。它需要判断计算机何时可以把数据发送到访问介质。通过使用CSMA/CD,所有计算机都可以监视传输介质的状态,在传输之前等待线路空闲。如果两台计算机尝试同时发送数据,就会发生冲突,计算机会停止发送,等待一个随机的时间间隔,然后再次尝试发送。

(1)监听信道上是否有信号在传输。如果有,表示信道处于忙状态,则继续帧听,直到信道空闲为止。

(2)若没有监听到任何信号,就传输数据。

(3)传输数据的时候继续监听。如果发现冲突,则执行退避算法。随机等待一段时间后,重新执行步骤(1)。

当冲突发生时,涉及冲突的计算机会返回监听信道状态。若未发现冲突,则表示发送成功。

如何控制传输过程中,数据发生错误的问题

利用 CRC循环冗余校验 。通过 XOR 异或的算法,来计算整个包是否在发送的过程中出现了错误。

https://www.cnblogs.com/Mayfly-nymph/p/11100021.html#N6FTYAKr

要注意的是,CRC循环冗余校验是硬件完成的,对于上层软件或用户来说是感觉不到的。因此,发送端对出错的数据帧进行重传是自动进行的,这种差错控制体质常简称为ARQ(自动重传请求/自动请求重传)

最大传输单元 MTU

  • PPP : 296 字节

  • 以太网: 1500 字节

  • FDDI : 4352 字节

image-20210308170609866

以太帧结构

以太帧起始部分由前同步码和帧开始定界符组成。后面紧跟着一个以太网报头,以MAC地址说明目的地址和源地址。帧的中部是该帧负载的包含其他协议报头的数据包,如IP协议。

image-20210322085206114

  • 前同步码:用来使接收端的适配器在接收MAC帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为7个字节,1和0交替。

  • 帧开始定界符:帧的起始符,为1个字节。前6位1和0交替,最后的两个连续的1表示告诉接收端适配器:“帧信息要来了,准备接收”。

  • 目的地址:接收帧的网络适配器的物理地址(MAC地址),为6个字节(48比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。

  • 源地址:发送帧的网络适配器的物理地址(MAC地址),为6个字节(48比特)。

  • 是“粉丝”,是因为有一些人,扛着教 ...展开类型:上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为0x0800时,表示将数据交付给IP协议。

  • 数据:也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为46字节,最大为1500字节。如果不足46字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。在Linux中,使用ifconfig命令可以查看该值,通常为1500。

  • 帧检验序列FCS:检测该帧是否出现差错,占4个字节(32比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算CRC,与FCS字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。