【计算机网络】数据链路层学习笔记(一)概述

简介: 信道经常会出现错误;传输速率有限;有非零的传播时延。本章的目的就是学习一些协议,看他们是如何检测和纠正错误的。
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

参考书籍

  • 《Computer Networks (the fifth edition) 》

(注:由于我看的是英文教材,以下内容为个人理解和翻译的内容,如有不恰当之处,还望多多包涵和指出)

背景

信道经常会出现错误;传输速率有限;有非零的传播时延。

本章的目的就是学习一些协议,看他们是如何检测和纠正错误的。

数据链路层设计

作用

依托物理层收发比特。有以下作用:

  • 为网络层提供定义好的服务接口。
  • 处理传输错误
  • 调节数据流量,使得不出现发送者拼命发送,但接收者完全跟不上的情况。

核心概念

数据链路层的核心概念是“”(frame),它将从网络层接收到的(packet)封装成帧,如下图所示:

image.png

数据链路层向网络层提供的服务 概述

实际的数据传输是从上而下经过各个层次,但是为了简化讨论,就先虚拟抽象成数据在两个主机之间的网络层和数据链路层呈U型传递。

image.png

服务分为三类:

无应答无连接服务

如以太网

如因信道噪声导致帧丢失,没有办法侦测并重发。

适用于本身错误率低、或对实时性要求高的服务(如音频)。

前者的容错恢复可依赖于更高层;而后者是因为相对而言,迟到数据带来的恶劣影响比错误数据更甚。

有应答无连接服务

在数据链路层中,应答是一种优化而不是必须,因为在更高的层中已经保证了应答。
应答的作用体现在:比如当网络层发送一个很大的包,由于帧有最大长度限制,包会被切分成一个个更小的帧。如果没有应答,一旦中途出现错误,则待网络层监测到时,整个包都得重发;但如果在链路层可以知道,就可以只对丢失的帧部分进行重发。

应答且面向连接的服务

适用于卫星信道、长途电话电路等

它保证了:

  • 每帧都被编号
  • 每帧都确实被接收且仅被接收一次,并且是按顺序传输的

如果应答信号丢失,将导致同一帧被来回收发多次,浪费带宽。

服务分为三个阶段:

  • 连接建立。两边初始化变量、计数器追踪要从哪一帧开始接收。
  • 真正开始传输帧
  • 连接释放。变量、缓冲区等其他资源也被释放。

成帧方法(识别帧头帧尾)

目标:在使用尽量少的信道带宽的前提下,让接收方能轻易识别每一帧的开头,并且如果出错也能识别(不会导致后面一连串全错)

有以下四种方法:

  • 对字节计数(少用)

方法在于在帧头用一个位记录帧的大小。

但问题在于如果这个计数位本身就是错的呢?后续就都错了。

  • 填充字节标志位(由于地区编码差异,少用)

这和PPP(point to point principle)原理很像

  • 填充比特标志位(常用)

原理:遇到连续5个1就后补0,在信道上传输的数据是这种修改后的形式;接收端接收数据时,再按照遇5个1就砍掉0的方法整合

用于一度很火的HDLC(high level data link control)

  • Physical layer coding violations

(感觉直译不太准确,就照搬原文了,用于物理层编码有冗余的情况)

  • 总结:以太网和802.11都使用了这样的综合方案:帧头有一个可能很长的序(preamble),紧接着有个长度域。

关于差错控制和流控制的一些说明

差错控制和流控制并不是只在数据链路层有,因为这是个全局的概念;相反,他们在更高层中更为常见。

数据链路层在这方面仅仅是尽力而为,它们往往以最简单、最纯净的形式出现。

差错控制(保证帧以正确顺序传输)

  • 接收端成功接收信息后向发送端提供正反馈;否则提供负反馈
  • 为解决帧发送或者信息回传过程中丢失而导致错误的问题,引入了超时机制。超过一定时间没接收应答,说明有问题
  • 然而,若频繁超时,频繁重传也会带来新问题。于是给每个帧的外部添加序列号,使得接收方可以识别被重传的帧。

流控制(解决发送的实时流量大于接收方所能承受的界限的问题)

  • 基于接收方反馈的流控制(在链路层及以上很常见)

接收方对流量进行反馈,如允许发送方发送更大流量的数据

原则:在接收方发送同意请求之前,禁止发送方发送多余的帧

  • 基于速率限制的流控制(只作为传输层的一部分)

系统对流量有个最大速率限制

相关文章
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
1208 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
图神经网络在欺诈检测与蛋白质功能预测中的应用概述
金融交易网络与蛋白质结构的共同特点是它们无法通过简单的欧几里得空间模型来准确描述,而是需要复杂的图结构来捕捉实体间的交互模式。传统深度学习方法在处理这类数据时效果不佳,图神经网络(GNNs)因此成为解决此类问题的关键技术。GNNs通过消息传递机制,能有效提取图结构中的深层特征,适用于欺诈检测和蛋白质功能预测等复杂网络建模任务。
154 2
图神经网络在欺诈检测与蛋白质功能预测中的应用概述
网络安全与信息安全概述####
本文探讨了网络安全(Cybersecurity)和信息安全(Information Security)的基本概念及其差异,重点介绍了网络安全漏洞、加密技术及安全意识在信息保护中的重要性。本文旨在通过深入分析这些关键技术和策略,提升对信息安全整体性的理解,帮助读者在数字化时代更好地应对信息安全挑战。 ####
【网络】TCP/IP 五层网络模型:数据链路层
【网络】TCP/IP 五层网络模型:数据链路层
81 1
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
这篇文章详细介绍了计算机网络中数据链路层的概念、基本问题、点对点信道和广播信道的数据链路协议(如PPP和CSMA/CD),以及局域网和以太网的相关知识。
364 0
一文详细理解计算机网络 - 数据链路层(考试和面试必备)
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
129 0
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等