学习总结录 学习总结录
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
  • Java基础

  • Java集合

  • MySQL

  • Redis

  • JVM

  • 多线程

  • 计算机网络

    • 计算机网络概述
    • 物理层概述
    • 数据链路层概述
      • 数据链路层概述
        • 体系结构
        • 链路、数据链路和帧
      • 封装成帧和透明传输
        • 封装成帧
        • 透明传输
      • 差错检测
        • 误码的相关概念
        • 奇偶校验
        • 循环冗余校验
      • 可靠传输
        • 可靠传输相关基本概念
        • 误码
        • 分组丢失
        • 分组失序
        • 分组重复
        • 其他层的可靠传输
        • 停止-等待协议
        • 回退N帧协议
        • 选择重传协议
      • 点对点协议
        • 点对点协议PPP概述
        • PPP的帧格式
        • PPP帧的透明传输
        • PPP帧的差错检测
      • 网络适配器和MAC地址
        • 网络适配器
        • MAC地址
      • 总结
      • 参考
    • 网络层概述
    • 运输层概述
    • 应用层概述
  • Spring

  • Kafka

  • Elasticsearch

  • Python

  • 面试专题

  • 知识库
  • 计算机网络
旭日
2023-03-31
目录

数据链路层概述

# 数据链路层概述

# 体系结构

image-20221023094735212

# 链路、数据链路和帧

链路(Link)是指从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。

image-20221023100048497

数据链路(Data Link)是基于链路的。当在一条链路上传送数据时,除需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

帧(Frame)是数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。

image-20221023100909546

# 封装成帧和透明传输

# 封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,然后构成一个帧。

image-20221023102311882

image-20221023103651966

首部和尾部的一个重要作用就是帧定界。

image-20221023102402644

  • 为了提高数据链路层传输帧的效率,应当使帧的数据载荷的长度尽可能地大于首部和尾部的长度
  • 考虑到对缓存空间的需求以及差错控制等诸多因素,每一种数据链路层协议都规定了帧的数据载荷的长度上限,即最大传送单元(Maximum Transfer Unit,MTU)。

# 透明传输

透明传输是指数据链路层对上层交付的传输数据没有任何限制,好像数据链路层不存在一样。帧界定标志也就是个特定数据值,如果在上层交付的协议数据单元中, 恰好也包含这个特定数值,接收方就不能正确接收。所以,数据链路层应该对上层交付的数据有限制,其内容不能包含帧定界符的值。

image-20221023104513910

# 差错检测

# 误码的相关概念

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错(称为比特差错):

  • 比特1可能变成比特0
  • 比特0可能变成比特1

image-20221023105403901

在一段时间内,传输错误的比特数量占所传输比特总数的比率称为误码率(Bit Error Rate,BER)。

提高链路的信噪比,可以降低误码率。但在实际的通信链路上,不可能使误码率下降为零。

使用差错检测技术来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。

# 奇偶校验

  • 奇校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数为奇数。
  • 偶校验是在待发送的数据后面添加1个校验位,使得添加该校验位后的整个数据中比特1的个数为偶数。

image-20221023105817578

# 循环冗余校验

  • 收发双方约定好了一个生成多项式
  • 发送方基于待发送的数据和生成多项式G(X),计算出差错检测码(冗余码),将冗余码添加到待发送数据的后面一起传输。
  • 接收方收到数据和冗余码后,通过生成多项式G(X)来计算收到的数据和冗余码是否产生了误码。

image-20221023110414548

检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。

# 可靠传输

# 可靠传输相关基本概念

# 误码

接收方主机收到有误码的帧后,是不会接受该帧的,会将它丢弃。

  • 如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施。

  • 如果数据链路层向其上层提供的是可靠服务,那就还需要其他措施,来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本。

image-20221023103025630

有线链路的误码率比较低。为了减小开销,并不要求数据链路层向其上层提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。

无线链路易受干扰,误码率比较高,因此要求数据链路层必须向其上层提供可靠传输服务。

# 分组丢失

路由器输入队列快满了,主动丢弃收到的分组。

image-20221024091852190

# 分组失序

数据并未按照发送顺序依次到达接收端。

image-20221024091947265

# 分组重复

由于某些原因,有些分组在网络中滞留了,没有及时到达接收端,这可能会造成发送端对该分组的重发,重发的分组到达接收端,但一段时间后,滞留在网络的分组也到达了接收端,这就造成分组重复的传输差错

image-20221024092037508

# 其他层的可靠传输

image-20221024092251101

# 停止-等待协议

image-20221024092604526

针对分组丢失

接收方收不到数据分组,就不会发送相应的ACK和NAK,如果不采取措施,发送方就会一直处于等待接收方ACK或NAK的状态,为解决上述问题,发送方可在每发送完一个数据分组时就启动一个超时计时器(Timeout Timer)。若到了超时计时器所设置的超时重传时间(Retransmission Time-Out,RTO),但发送方仍未收到接收方的ACK或NAK,就重传之前已发送过的数据分组。

image-20221024092920857

针对分组重复

为了避免分组重复这种传输错误,必须给每个分组带上序号。对于停止-等待协议,由于每发送一个数据分组就停止等待,只要保证每发送一个新的数据分组,其序号与上次发送的数据分组的序号不同就可以了,因此用一个比特来编号就够了,序号有0和1这两个。

image-20221024093107757

停止-等待协议的信道利用率

image-20221024094214019

# 回退N帧协议

对于𝑹𝑻𝑻≫𝑻_𝑫,例如使用同步卫星链路,信道利用率很低,这时候就不能去采用停止-等待协议,而应该采用流水线传输。

image-20221024095223859

image-20221024095812791

回退N帧协议的接收方采用累积确认方式

  • 接收方不必对收到的每一个数据分组都发送一个确认分组,而是可以在收到几个序号连续的数据分组后,对按序到达的最后一个数据分组发送确认分组。
  • 接收方何时发送累积确认分组,由具体实现决定。
  • 确认分组ACKn表明序号为n及之前的所有数据分组都已正确接收。

image-20221024100428127

# 选择重传协议

image-20221024101142590

# 点对点协议

# 点对点协议PPP概述

点对点协议(Point-to-Point Protocol,PPP)是目前使用最广泛的点对点数据链路层协议。

image-20221024104027272

# PPP的帧格式

image-20221024104218963

# PPP帧的透明传输

面向字节:

image-20221024104657902

面向比特:

image-20221024104725377

# PPP帧的差错检测

image-20221024104759842

# 网络适配器和MAC地址

# 网络适配器

要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”。在计算机内部,网卡与CPU之间的通信,一般是通过计算机主板上的I/O总线以并行传输方式进行。

网卡除要实现物理层和数据链路层功能,其另外一个重要功能就是要进行并行传输和串行传输的转换。由于网络的传输速率和计算机内部总线上的传输速率并不相同,因此在网卡的核心芯片中都会包含用于缓存数据的存储器。

# MAC地址

当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一 的标识,即一个数据链路层地址。

在每个主机发送的帧的首部中,都携带有发送主机(源主机)和接收主机(目的主机)的数据链路层地址。由于这类地址是用于媒体接入控制(Medium Access Control,MAC)的,因此被称为MAC地址。

image-20221024110558336

# 总结

image-20221023103048437

# 参考

https://github.com/BloothOfYouth/Computer-Network-Notes

https://www.bilibili.com/video/BV1c4411d7jb/

#计算机网络
上次更新: 2024/06/29, 15:13:44
物理层概述
网络层概述

← 物理层概述 网络层概述→

最近更新
01
基础概念
10-31
02
Pytorch
10-30
03
Numpy
10-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 旭日 | 蜀ICP备2021000788号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式