数据链路层简介

article/2025/10/13 15:08:32

文章目录

  • 一、基本概念
  • 二、主要功能
    • 1.封装成帧
    • 2.透明传输
    • 3. 差错控制
    • 4. 流量控制
    • 5. 链路管理
    • 认识MTU
  • 三、相关协议
    • 1. PPP协议
    • 2. ARP协议

一、基本概念

链路(Link):一个节点到另一个相邻节点的一段物理线路,中间没有任何其他节点。链路由传输介质和物理设备组成,传输介质主要有双绞线、光纤、微波。在两个计算机进行通信的时候,链路只是一条完整通信路径的一部分

数据链路(Data Link):把实现控制数据传输协议的硬件和软件加到链路上就构成了数据链路。

帧(frame):数据链路层把网络层交付的数据构成帧发送到链路上,把接收到的帧取出来,交给上层的网络层

信道类型

  • 点对点信道:使用一对一的通信方式,如ppp协议
  • 广播信道:一对多的广播通信方式,如CSMA/CD协议

数据链路层

  • 位于OSI参考模型的第二层,使用物理层提供的服务,向网络层提供服务,最基本的服务是将源自物理层来的数据可靠地传输到相邻节点的目标机网络层。
  • 定义了在单个链路上如何传输数据
  • 数据链路层以帧为单位,传输和处理数据。

二、主要功能

1.封装成帧

在一段数据的前后分别添加首部和尾部,然后就构成了一个帧,确定帧的界限。
接收方识别帧首后,就知道要开始读取数据了,一直到帧尾,就知道读取完成了。
在这里插入图片描述

2.透明传输

上述的过程,可能会存在数据帧的某个片段和帧首或者帧尾一样,会不会出错或者提前结束呢。

透明传输解决的问题就是:

需要在数据部分出现首部尾部相同的内容前面插入转义字符

如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符,在接收端进行处理后可以还原出原始数据。

3. 差错控制

  • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采取各种差错检测措施,使差错被控制在所能允许的尽可能小的范围内。
  • 目前数据链路层广泛使用的是循环冗余校验CRC(Cyclic Redundancy Check),保证数据的无差错接收。

将CRC的余数作为FCS,在数据后面添加冗余码成为帧检验序列FCS。接收端收到数据后再进行一次CRC校验,余数为0,则认为没有出错。否则,丢弃数据。

  • 为了避免数据帧的丢失,引入计时器(Timer)来限定接收方发回反馈信息的时间间隔,当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反馈信息,即计时器超时(Timeout),则可认为传的帧已出错或丢失,继而要重新发送。

由于同一帧数据可能被重复发送多次,为了防止发生这种危险,可以采用对发送的帧编号的方法,即赋予每帧一个信号,从而使接收方能从该序号来区分是新发送来的帧还是已经接收但又重新发送来的帧,以此来确定要不要将接收到的帧递交给网络层。数据链路层通过使用计数器和序号来保证每帧最终都被正确地递交给目标网络层一次。

4. 流量控制

对发送方数据流量的控制,使其发送率不致超过接收方所能承受的能力。通过一种反馈机制使得发送方了解接收方的能力,避免因为速度快而造成数据丢失。

5. 链路管理

数据连路层连接的建立维持和释放

主要用于面向连接的服务

当链路两端的节点要进行通信前,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接,在传输过程中则要能维持该连接

如果出现差错,需要重新初始化,重新自动建立连接

传输完毕后则要释放连接。

认识MTU

  • MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。
  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节, 要在后面补填充位;
  • 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
  • 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对 数据包进行分片(fragmentation);
  • 不同的数据链路层标准的MTU是不同的;

三、相关协议

1. PPP协议

在这里插入图片描述

  • 首部、尾部分别是4个字节和2个字节
  • 首尾部标志F:1字节,规定为0x7E,表示帧开始或结束位置
  • 首部地址字段A:1字节,规定为0xFF。
  • 控制字段C:规定为规定为0x03
  • 协议:2字节,标志封装于帧的数据字段中的协议。
  • 数据:零或者多字节,包含协议字段中指定协议的数据报。长度可变的,不超过1500字节。
  • 帧校验序列(FCS):通常为2字节

2. ARP协议

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系

需要注意的是:ARP不是一个单纯的数据链路层的协议,而是一个介于
数据链路层和网络层之间的协议。

作用

  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃
  • 因此在通讯前必须获得目的主机的硬件地址

http://chatgpt.dhexx.cn/article/4lFH1qrQ.shtml

相关文章

计算机网络 —— 链路层详解

文章目录 一,数据链路层基本概念1. 为什么要设置数据链路层2. 数据链路的主要功能1)链路管理2)帧同步3)流量控制4)差错控制5)透明传输6)寻址 3. 链路层的三个基本问题1)封装成帧2&am…

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

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

计算机网络之链路层

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

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 才会生效。