计算机网络——链接层

计算机网络——链接层

在链接层中,运行链接层协议的设备被称为节点,节点与节点之间称为链接。链接层将网络层数据报封装成链接层数据帧进行发送。

链接层通过硬件和软件两个部分实现,硬件部分通常在板载芯片中实现,称为网络适配器。软件部分称为驱动,定义网络层还是链接层的软件接口。

错误检测

链接层提供位级错误检测,但是也会发送未检测的位级错误。

奇偶校验

发送者在数据 D 的后面加上一个奇偶校验位,保证这 D+1 位中的 1 的位数是一个奇数,这称为奇校验。保证这 D+1 位是一个偶数,则称为偶校验。

接收者计算这 D+1 位 1 的个数是否符合校验规则。

二维奇偶校验将 D 个数据位分成 i 行 j 列,并对每一个行列进行奇偶检验,可以对错误的位进行改正。

校验和

将 D 个数据位按每 r 位分成一组,将这些组依次相加,溢出按截断处理,然后统一取反,得到校验和。

校验和通常用于网络层和传输层协议中。

一般 r=16 处理。

CRC 校验

CRC 循环冗余校验是链接层最常用的校验方法,因为使用的是多项式计算因此也称为多项式校验。

考虑一个 d 位的 D 数据,发送者和接收者事先协商好使用一个 r+1 位称为生成器的一个二进制串,记为 G,并且 G 的最高位恒为 1。基本思路是构造一个 r 位的二进制串,记为 R 使得:

D × 2 r X O R R = n G D \times 2^r XOR R = nG D×2rXORR=nG

即 G 能整除左边的数字,那么 R 就应该是 D × 2 r % G D \times 2^r \% G D×2r%G 的到余数。

CRC 校验

需要注意的是,我们使用的任何加减运算都是不借位和进位的,因此这和 XOR 异或运算是一致的。

接收者的工作很简单,只需要验证是不是能够被 G 整除即可。

国际上 G 一般是 8 12 16 或 32 位,其中 CRC32 最常用。

多链接协议

在链接层中,大体来分有两种链接层协议,一种是点对点链接协议,在这种情况只有一个链接连接两个节点,例如 PPP 协议和 HDLC 协议,一般这些协议都非常简单。另外一个广播协议更加有趣,在这种情况中,多个节点通过共享一个管道进行广播,所有的节点都会收到广播信息,这包括以太网协议和无限局域网协议。

通道分片协议

回想一下我们之前学习的 FDM 和 TDM 就是通道分片协议,但是作为链接层协议有两个非常严重的缺点,每一个节点分配的吞吐量是固定的,即使只有一个活跃节点。

第三种通道分片协议是代号分片协议,称为 CDMA 。在这里,每个节点都分配一个不同的代号,每个节点都通过不同的代号发送数据包,理论上能实现同时发送。CDMA 通常用于无限蜂窝网,我们在下一章详细解释。

随机访问协议

在随机访问协议中,其基本思想是如果遇到了碰撞情况,那么这个节点应该等待一个随机时间,然后重新发送数据帧,知道成功发送。

第一种是槽式 ALOHA 网络:

  • 每一个数据帧的长度都是 L。
  • 每一个槽的时间是 L/R 即一个数据帧的时间。
  • 数据帧只能占用一个完整的槽。
  • 如果有两个节点发生了碰撞情况,那么所有的节点都能检测到碰撞。

让 p 是一个事件概率:

  • 一个节点应该等待一个槽的开始,然后立刻发送数据。
  • 如果发生了碰撞,那么这个节点在之后的每个槽都有 p 的概率重新发送数据包,有 1-p 的概率跳过这个槽。

槽式ALOHA协议

由计算可知一个槽是一个成功槽的概率是 N p ( 1 − p ) N − 1 Np(1-p)^{N-1} Np(1p)N1 最大概率不超过 37% 。

而 ALOHA 网络和分槽的 ALOHA 唯一区别在于将槽去掉:

ALOHA 协议
由计算可知一个槽是一个成功槽的概率是 N p ( 1 − p ) 2 ( N − 1 ) Np(1-p)^{2(N-1)} Np(1p)2(N1) 最大概率不超过 37/2% 。

另外一个协议则是载波监听多路访问 CSMA 和 载波监听多路访问/碰撞检测 CSMA/CD 协议,核心思路是在发送之前,确保当前时间没有其他节点发送,但是存在传输延迟,也会发生碰撞,在检测到碰撞的时候,立刻停止发送,在随机等待之后重新发送。

CSMA/CD

如何选择一个合理的随机等待时间?有一个以 2 为指数的回退算法,即在 { 0 , 1 , 2 , … , 2 N − 1 } \{0,1,2,\ldots,2^N-1\} {0,1,2,,2N1} 中等概率的选择一个时间 K,其中 N 为发送碰撞的次数,这可以保证随着 N 的增大,可选时间也增大,这广泛应用与以太网协议中,实际上,将等待 K × 512 K \times 512 K×512 比特的时间。

轮转协议

第一个轮转协议是池协议,在这个协议中,有一个 master 主机和几个 slave 主机,master 主机按照时钟顺序告知主机 1 现在可以发送,主机 2 现在可以发送,一直到主机 n 再返回主机 1。缺点就是存在等待时间,即只有一个活跃主机的时候,也必须等待 master 主机的轮询,并且中心化网络的可用性一般不高。

另外一种是令牌协议,是一个去中心化网络,这个网络中只有唯一的一个令牌,网内节点通过交换令牌以获得发送限权,持有令牌的节点才能进行传输,令牌一般按照时钟顺序进行传递。

DOCSIS 协议

DOCSIS 协议是有线电缆数据服务接口规范,将线路分为两种,一种是下载通道,一种是上传通道,下载通道通过 FDM 进行分频。上传通道通过 TDM 进行分时。网络调制解调器通过向 CMTS 发送请求帧,CMTS 通过下载通道向网络调制解调器发送 MAP 指令,为每一个网络调制解调器分配时间片。

DOCSIS

LAN 网络

MAC 地址

每一个主机和路由器中的网络接口都有一个唯一的 MAC 地址,而交换机没有 MAC 地址,因为交换机的工作是只是将接收到的数据帧转发给所有的端口,因此不需要 MAC 地址。

一个 MAC 地址是 48 位的,通常使用十六进制记号,前 24 位由 IEEE 指定,一般标记生成厂商,后 24 位由生成厂商随机指定。

所有主机都会收到数据帧,首先主机将会根据 MAC 地址进行匹配,属于自己主机的数据帧将会被接收,不属于的将会被丢弃。

其中 FF-FF-FF-FF-FF-FF 的地址称为广播地址,所有子网内的主机都会被接收到。

APR 协议

发送者发送一个数据包的时候,首先根据目标 IP 地址要确定目标的 MAC 地址,这就需要 APR 地址转换协议。

主机发送一个广播 APR 数据包,向子网所有主机广播谁的 IP 地址是 xxx 请回答,在收到 APR 协议数据包之后,主机将会进行 IP 地址的匹配,如果匹配成功,将会进行应答。请求 APR 是一个广播数据帧,而应答是一个普通数据帧。

主机通过 APR 协议维护一个 APR 表,表中的每一项由 MAC 地址和 IP 地址相对应,这样主机发送数据包的时候就可以根据 IP 地址确定 MAC 地址。

如果向子网外发送数据包,主机检测到这个数据包的 IP 地址不属于子网内,那么主机将设置数据包的目标 MAC 地址为网关(下一跳)的 MAC 地址,发送至网关由网关进行进一步转发。

以太网

以太网协议是当今局域网内最常用的链接层和物理层协议,已经有 40 多年的历史。最初以太网使用一个集线器和双绞线进行链接的星型拓扑或是总线型拓扑结构,集线器是一个物理层设备,将来自端口的每一位数据进行复制,然后再从其他所有端口转发出去,属于广播设备。

后来,集线器逐渐被交换机代替,交换机是链接层设备,可以根据端口的数据包的 MAC 地址进行端对端的转发。

一个以太网数据帧的格式如下图所示:

以太网数据帧

  • Preamble 导言部分用于速率协商适配。
  • 目标 MAC 地址和 源 MAC 地址。
  • 上层协议类型,指明上层协议是 IPv4 还是其他的协议。
  • Data 载荷数据。
  • CRC 循环冗余校验。

链接层交换机

链接层交换机主要有两个功能,第一是过滤功能,它会根据需要过滤掉一些 MAC 地址的数据包。第二是交换功能,将一个端口的数据包交换到另外一个或几个端口。在交换机内部,维护一个交换表,表中每一项由 MAC 地址和对应的网络接口组成,另外还有一个时间,表示表项被添加时候的时间。

当一个数据包到达一个端口 x 的时候,他会在交换表中查找对应的表项:

  • 如果没有对应的表项,那么除了端口 x 交换机将交换到所有的其他端口,也就是广播。
  • 如果有对应表项,如果表项中的端口是 x 那么说明不需要进一步交换,因此过滤器将扔掉这个数据包。
  • 如果有对应表项,并且端口是 y 不等于 x,那么交换机只会把表项交换到 y 端口。

交换机有自动学习功能,即当接收到一个数据包的时候,就会在交换表中记录下源 MAC 地址和对应的端口,并记录下当前时间,当一定时间过后,交换机将清除那些过期的表项。因此交换机是一个即插即用设备。

VLAN 技术

VLAN 技术可以将一个交换机的端口进行划分,即将一个物理交换机划分成多个逻辑交换机,逻辑交换机直接是互相不通的,这称为 VLAN 技术。

支持级联的交换机还可以根据需要进行级联,例如下图:

VLAN

支持 VLAN 还需要支持 VLAN 的以太网协议 802.1Q 协议,在基本以太网数据帧的情况下加入了标识 VLAN 网络的部分。

VLAN 以太网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值