数据链路层

书籍:计算机网络自顶向下. TCP/IP详解

以太网帧的格式

在网络层,给数据包增加了接收端和发送端的IP地址。在数据链路层里,增加了帧头帧尾,MAC地址和校验值。

image-20200922183812721

数据链路层的三个基本问题

封装成帧(framing)

  • 封装成帧(framing)就是在一段数据的前后分别 添加首部和尾部,然后就构成了一个帧。确定帧的界限。
  • 首部和尾部的一个重要作用就是进行帧定界
  • 最大传送单元(Maximum Transfer Unit,MTU)。意思是IP数据报的最大长度(不包括帧头帧尾)。MTU的单位是字节。

image-20200922184411594

透明传输

image-20200922184441856

解决办法:

  • 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符 “ESC”(其十六进制编码是 1B)。
  • 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符
  • 如果转义字符也出现数据当中,那么应在转义字 符前面插入一个转义字符。当接收端收到连续的 两个转义字符时,就删除其中前面的一个。

image-20200922185151784

差错检测

  • 在传输过程中可能会产生比特差错:1 可能会变成0而0也可能变成1。
  • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
  • 误码率与信噪比有很大的关系。
  • 为了保证数据传输的可靠性,在计算机网络传 输数据时,必须采用各种差错检测措施。

解决办法:

循环冗余检验 CRC 的检错技术

  • 仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)
  • “无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”
  • 要做到“可靠传输”(即发送什么就收到什么) 就必须再加上确认和重传机制

两种情况下的数据链路层

使用点对点信道的数据链路层

PPP协议

ppp协议(point to point protocol)是数据链路层协议,例如用户使用拨号上网。

使用广播信道的数据链路层

局域网最主要的特点是:网络为一个单位所拥有,且地理范围和站点数目均有限。

局域网具有如下的一些主要优点:

  • 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件 和软件资源。
  • 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
  • 提高了系统的可靠性、可用性和残存性。

  • 局域网的拓扑:

image-20200922200318043

CSMA/CD 协议

  • CSMA/CD 表示 Carrier Sense Multiple Access with Collision Detection。
  • “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
  • “载波监听”是指每一个站在发送数据之前先 要检测一下总线上是否有其他计算机在发送数 据,如果有,则暂时不要发送数据,以免发生 碰撞。
  • 总线上并没有什么“载波”。因此,“载波监 听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
  • 使用 CSMA/CD 协议的以太网不能进行全 双工通信而只能进行双向交替通信(半双工通信)。

image-20200922202626188

争用期:

最先发送数据帧的站,在发送数据帧后至 多经过时间 2t (两倍的端到端往返时延) 就可知道发送的数据帧是否遭受了碰撞。以太网的端到端往返时延 2t 称为争用期, 或碰撞窗口。经过争用期这段时间还没有检测到碰撞, 才能肯定这次发送不会发生碰撞。

  • 争用期的长度
    • 以太网取 51.2 μs 为争用期的长度。
    • 对于 10 Mb/s 以太网,在争用期内可发送 512 bit,即 64 字节。
    • 以太网在发送数据时,若前 64 字节没有发 生冲突,则后续的数据就不会发生冲突。
  • 最短有效帧长
    • 如果发生冲突,就一定是在发送的前 64 字节之内。
    • 由于一检测到冲突就立即中止发送,这时 已经发送出去的数据一定小于 64 字节。
    • 以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧
  • 二进制指数类型退避算法
    • 发生碰撞的站在停止发送数据后,要推迟 (退避)一个随机时间才能再发送数据。
  • 强化碰撞;当发送数据的站一旦发现发生了碰撞时:
    • 立即停止发送数据;
    • 再继续发送若干比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生 了碰撞。