计算机网络---数据链路层

article/2025/10/13 16:23:49

(一)基本概念

        数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自物理层来的数据可靠地传输到相邻节点的目标机网络层。

  换言之,数据链路层负责通过一条链路从一个节点向另一个物理链路直接相连的相邻结点传送数据报。

相关术语

链路层数据分组:,封装网络层数据报。

 结点:主机和路由器

链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线,光纤和微波。分为有线链路、无线链路。

数据链路:网络中两个结点之间逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。

:链路层的协议数据单元,封装网络数据报。

帧定界:当两个主机互相传送信息时,网络层的分组必须封装成帧,并以帧的格式进行传送。将一段数据的前后分别添加首部和尾部,就构成了帧。首部和尾部中含有很多控制信息,这些信息的重要作用之一是确定帧的界限,即帧定界。

数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报

 

注:口诀:放流量,帧传错。 理解成放入流量进来,白变黑(真传错)

(二)功能概述

       数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层,其主要作用是加强物理层传输原始比特流功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

功能一:为网络提供服务:无确定无连接服务有确定无连接服务有确定面向连接服务

            注意:有连接一定有确认!!!,因为对方主机必须确认才可建立连接,即不存在无确认的有连接服务。

功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)

 功能三:组帧,封装数据报构成数据帧,加首部和尾部;帧同步。

功能四:流量控制

功能五:差错控制(帧错/位错)

或者理解成:

     数据链路层在物理层所提供服务的基础上向网络层提供服务,即将原始的、有差错的物理线路改进成逻辑上无差错的数据链路,从而向网络层提供高质量的服务。它一般包括3种基本服务:无确认的无连接服务、有确认的无连接服务和有确认的有连接服务 
具体地说,数据链路层的主要功能如下:

  •  成帧(封装成帧):定义帧的开始和结束。

  •  帧同步:接收方确定收到的比特流中一帧的开始位置与结束位置。

  • 差错控制:用于使接收方确定接收到的数据就是由发送方发送的数据。

  • 流量控制:较高的发送速度较低的接收能力的不匹配,会造成传输出错。

    数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。

    数据链路层流量控制手段:接收方收不下就不回复确认。
    传输层流量控制手段:接收端给发送端一个窗口公告。

  • 透明传输:假设透明传输区间里出现了比特组合 与帧定界符相同,岂不是会被误认为是传输结束而丢弃后面的数据?显然,这样的情况是绝对不允许发生的,就发明了透明传输来解决此问题。其实,透明传输就是不管数据是什么样的比特组合,都应当能在链路上传送。 

  • 链路管理:负责数据链路的建立、维持和释放,主要用于面向连接的服务。

(三)封装成帧

   Ⅰ 封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。


   帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。


   组帧的四种方法:1.字符计数法,2.字符(节)填充法,3.零比特填充法,4.违规编码法。

 Ⅱ  透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。 当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

 1.字符计数法:

2.字符(节)填充法:

 注意:字符SOH代表 Start of Header (首部开始),而EOT代表 End of Transmission(传输结束)。SOH和EOT 都是ASCII码中的控制字符。SOH的十六进制编码是01,而EOT的十六进制编码是04。不要误认为SOH是“S”“O”“H”3个字符,也不要误认为EOT 是“E”“O”“T”3个字符。

3 .零比特填充法:

4. 违规编码法(利用物理介质上编码的违法标志来区分帧的开始与结束):

     由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)以及字符填充法难以实现复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规码法。

      注意:在使用字节填充的首尾界符法时,并不是所有形式的帧都需要帧开始符和帧结束符,如 MAC 帧就不需要帧结束符。因为以太网在传送帧时,各帧之间还必须有一定的间隙,所以,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个MAC帧,可见以太网不需要使用帧结束定界符,也不需要使用字节插入来保证透明传输。
  PPP帧用来进行帧定界的字段为Ox7E。“1B”是谢希仁教材中对于普通帧透明传输的处理,即转义字符“ESC”的十六进制编码。
 

 注意:“无比特差错”与“无传输差错”是不同的

可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。

传输差错可分为两大类: 比特差错 传输差错:帧丢失、帧重复或帧失序等。

在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。 要做到可靠传输,还必须再加上帧编号、确认和重传等机制。


http://chatgpt.dhexx.cn/article/c6PS94sY.shtml

相关文章

计算机网络之链路层

两台主机之间,数据报跨越一系列通信链路传输,一些是有线链路一些是无线链路,从源主机起,通过一些了分组交换机在目的主机结束。在链路层中有两种不同的链路层信道, 第一种是广播信道,这种信道用于有线局域…

tcp粘包 java_详说tcp粘包和半包

tcp服务端和客户端建立连接后会长时间维持这个连接,用于互相传递数据,tcp是以流的方式传输数据的,就像一个水管里的水一样,从一头不断的流向另一头。 理想情况下,发送的数据包都是独立的, 现实要复杂一些&a…

php处理粘包,Swoole怎么处理粘包

什么是 TCP 粘包? TCP 粘包是指发送方发送的若干包数据 到 接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。 TCP 出现粘包的原因? 发送方:发送方需要等缓冲区满才发送出去,造成…

什么是粘包和拆包,Netty如何解决粘包拆包?

Netty粘包拆包 TCP 粘包拆包是指发送方发送的若干包数据到接收方接收时粘成一包或某个数据包被拆开接收。 如下图所示,client 发送了两个数据包 D1 和 D2,但是 server 端可能会收到如下几种情况的数据。 上图中演示了粘包和拆包的三种情况:…

tcp的拆包和粘包

tcp的拆包和粘包 简介 拆包和粘包是在socket编程中经常出现的情况,在socket通讯过程中,如果通讯的一端一次性连续发送多条数据包,tcp协议会将多个数据包打包成一个tcp报文发送出去,这就是所谓的粘包。而如果通讯的一端发送的数据…

TCP粘包现象

TCP粘包现象 在socket网络编程中,都是端到端通信,由客户端端口服务端端口客户端IP服务端IP传输协议组成的五元组可以明确的标识一条连接。在TCP的socket编程中,发送端和接收端都有成对的socket。发送端为了将多个发往接收端的包,更…

粘包问题及解决方法

如何解决粘包问题 粘包就是连续向对端发送两个或者两个以上的数据包,对端在一次收取中受到的数据包数量可能大于1个,当大于1个时,可能时几个包加上某个包的部分,这这干脆几个完整的包在一起。当然,也可能收到的数据只…

粘包问题

TCP是一个面向连接的,可靠的,安全的流式协议 什么是粘包 粘包是指的是数据和数据之间没有没有明确的分界线,导致不能够正确的传输数据(只有TCP会粘包 UDP 永远不会粘包),粘包问题只针对于一切字节流的协议…

粘包现象与解决粘包问题

粘包现象与解决粘包问题 一、引入 粘包问题主要出现在用TCP协议传输中才会出现的问题,UDP不会出现,因为TCP传输中他会服务端会一次性把所有东西一并丢入缓存区,而读取的内容大小有时候没法准确的做到一一读取,所有会存在粘包。 而UDP他传输的时候是吧一个个内容丢过去,不管客…

粘包

粘包 一、什么是粘包二、为什么会粘包三、粘包解决思路 一、什么是粘包 粘包是指发送方发送的若干数据到接收方,而接收方在接收数据时这些数据粘在一起,后一包数据头紧接着前一包数据尾部。 二、为什么会粘包 首先了解一下socket收发消息原理&#xff1…

网络通讯中粘包的处理

参考:网络通讯中粘包的处理 - 走看看 在网络通讯中,不仅仅是TCP通讯,也包括串口通讯中,我们经常会遇到数据包粘连的问题,本文详细介绍粘包问题产生的原因和解决办法。 一、粘包定义 TCP 传输中,客户端发送…

什么是粘包?

TCP/IP 协议簇建立了互联网中通信协议的概念模型,该协议簇中的两个主要协议就是 TCP 和 IP 协议。TCP/ IP 协议簇中的 TCP 协议能够保证数据段(Segment)的可靠性和顺序,有了可靠的传输层协议之后,应用层协议就可以直接…

【HUST】信息系统安全:Ret2libc多函数调用,ASLR两种情况(2)

注:感谢这位大佬的帮忙,没有他我估计还在github里面或者其他博客里面瞎找小雨aaa Ret2libc:Return to libc,顾名思义,就是通过劫持控制流使控制流指向libc中的系统函数,从而实现打开shell等其他工作。 在本次作业中,…

Linux ALSA音频工具

参考: ALSA 音频工具 amixer、aplay、arecord Linux Alsa ALSA的配置文件 音频录制——arecord 音频播放——aplay 音频配置——amixer alsamixer与amixer的区别 alsamixer是Linux音频框架ALSA工具之一,用于配置音频各个参数; alsamixer是基于文本图形…

[pwn]ROP:绕过ASLRNX

[详细] ROP:绕过ASLR&NX 这次使用的程序是Defcon - 2015初赛题目,r0pbaby,也是一道经典的pwn题目了。 程序链接:https://pan.baidu.com/s/1kr6z_crZfW7qNjtASmRMGw 提取码:eajs NX策略是指在栈中的代码不会被执行…

ORA-445报错与ASLR

数据库多次出现ORA-00445: background process "J002" did not start after 30 seconds报错及ORA-3136错误 查看相关文档(文档 ID 1600807.1),两个报错都可能与内存压力过大有关 另外关于ORA-00445还有另一篇文档提到,在Oracle启用ASLR会无法…

[二进制学习笔记]Ubuntu20.04关闭开启ASLR

文章目录 Ubuntu20.04关闭开启ASLR Ubuntu20.04关闭开启ASLR ​ ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者…

ASLR和PIE的区别

总结:ASLR 不负责代码段以及数据段的随机化工作,这项工作由 PIE 负责。但是只有在开启 ASLR 之后,PIE 才会生效。

【HUST】信息系统安全:Ret2libc多函数调用,ASLR两种情况(1)

Ret2libc:Return to libc,顾名思义,就是通过劫持控制流使控制流指向libc中的系统函数,从而实现打开shell等其他工作。 在本次作业中,我们的目标是通过运行stack.c程序来访问系统上的/tmp/flag程序的内容,其中,可以看到…

Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

1. ASoC的由来 ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性&#xff1a…