0%

计算机网络-链路层

个人理解的 首先数据链路层的作用是:物理层比特流在介质上传输肯定有错误,因此依靠链路层通过 CRC等方法进行差错检验,然后配合滑窗的方法(这个TCP中也有)进行错误重传和流量控制等,向网络层提高高质量的数据传输服务。从应用场景上看,每个主机ISP过独立网线连接,这就是点对点通信,通常使用PPP协议控制。

局域网属于典型的广播通信,所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。

点对点通信: 一条网线独立连接

  • PPP协议

广播通信:总线接入,存在碰撞问题

  • 分时/分频/波分/码分复用,这种规则很死,对带宽利用率低(比如时分复用就规定了某个主机只能在特定时间片使用宽带,那我不想用呢?不久浪费了)
  • CSMA.CD协议控制:通过碰撞检测的协议规则来控制,比较灵活,宽带利用率高。

链路层的意义

物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时肯定会存在误差的。这样就引入了数据链路层在物理层之上,采用差错检测、差错控制和流量控制等方法,向网络层提供高质量的数据传输服务。对于网络层,由于链路层的存在,而不需要关心物理层具体采用了那种传输介质和通信设备。

  1. 链路管理,帧同步
  2. 流量控制,差错控制
  3. 数据和控制信息分开
  4. 透明传输和寻址

基本问题

封装成帧

就是将网络层传下来的分组添加 首部和尾部 用于标记帧的开始和结束 如下图 首部 SOH尾部 EOT

透明传输

透明表示一个实际存在的事物看起来好像不存在一样 。帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在

image-20201202210820341

差错检测

差错是不可避免的。而且不同的传输介质的差错程度也是不同的。链路层的任务就是分析差错产生的原因,检查差错,然后纠正差错。 目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。使用滑窗协议来解决出现差错(有两种),大概是发一帧,受到之后CRC校验没问题应带ACK 再发下一帧,否则重发这一帧….

信道分类

广播信道

一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到。 所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。

点对点信道

一对一通信。因为不会发生碰撞,因此也比较简单,使用 PPP 协议进行控制。

信道复用技术

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。

  • 频分复用 :频分复用的所有主机在相同的时间占用不同的频率带宽资源

  • 时分复用 : 时分复用的所有主机在不同的时间占用相同的频率带宽资源。

  • 统计时分复用:是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送

  • 波分复用:光的频分复用。在同一根光纤中同时传输两个或众多不同波长光信号的技术,称为波分复用

  • 码分复用:为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片\(\vec{S}\) 和 $ $ 有 \(\frac{1}{m} \vec{S} \cdot \vec{T}=0\) 为了讨论方便,取 m=8,设码片 \(\vec{S}\) 为 0 0011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100

    image-20201202222641379

    利用上面的式子我们知道,当接收端使用码片 \(\vec{S}\) 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。码分复用需要发送的数据量为原先的 m 倍。 例如 A 的 码片是 1 1 -1 -1

    B 的码片是 -1 1 -1 1 那么 A B 的内积为 0 ;如果要发送A的0bit 就发送 A码片否则发送A的反码。从这里看出,如果要两个码片正交,那么码片的位数一定得是偶数位,并且对应位乘积后,正负1对半开,这样就正交了,这个和数学上的正交坐标系思想一样但是实现方式不太一样,主要是数学上一下子就容易想到 (0, 1, 0) (1,0,0)这种正交,但是这种没法用两种状态来表示,至少需要 0 1 -1

CSMA/CD 协议

CSMA/CD 表示载波监听多点接入 / 碰撞检测

  • 多点接入 :说明这是总线型网络,许多主机以多点的方式连接到总线上。
  • 载波监听 :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
  • 碰撞检测 :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。

记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。

PPP协议

互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议

PPP 的帧格式:

  • F 字段为帧的定界符
  • A 和 C 字段暂时没有意义
  • FCS 字段是使用 CRC 的检验序列
  • 信息部分的长度不超过 1500
image-20201202225254343

MAC地址

MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。

局域网

局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。

image-20201202225413801

以太网

是一种局域网

以太网是一种星型拓扑结构局域网。目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。以太网帧格式:

  • 类型 :标记上层使用的协议;
  • 数据 :长度在 46-1500 之间,如果太小则需要填充;
  • FCS :帧检验序列,使用的是 CRC 检验方法;
image-20201202225529512

交换机

交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。

下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。

image-20201202225650091

虚拟局域网

虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。

image-20201202225733826