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

article/2025/10/13 16:28:11

文章目录

  • 一,数据链路层基本概念
    • 1. 为什么要设置数据链路层
    • 2. 数据链路的主要功能
      • 1)链路管理
      • 2)帧同步
      • 3)流量控制
      • 4)差错控制
      • 5)透明传输
      • 6)寻址
    • 3. 链路层的三个基本问题
      • 1)封装成帧
      • 2)透明传输
      • 3)差错控制
    • 4. 一些零散链路层概念
  • 二,两种情况下的数据链路层
    • 1. 使用点对点信道的数据链路层(广域网)
      • 1)PPP
      • 2)HDLC
      • 3)两种协议对比
    • 2. 使用广播信道的数据链路层(局域网)
      • 1)局域网拓扑划分
      • 2)CSMA/CD
  • 三,以太网
    • 1. 以太网标准
    • 2. 以太网提供的服务
    • 3. 扩展以太网
      • 1)以太网的拓扑
      • 2)扩展方式
    • 4. MAC层
      • 1)MAC层的硬件地址(MAC地址)
      • 2)适配器检查MAC地址
      • 3)MAC帧的格式
      • 4)无效的MAC帧
      • 5)帧间最小间隔
    • 5. 高速以太网
      • 1)100Base-T以太网
      • 2)100Base-T以太网的特点
      • 3)吉比特Gbit以太网
      • 4)10Gbit/s以太网

一,数据链路层基本概念

1. 为什么要设置数据链路层

物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时一定会存在误差,而设置数据链路层目的就是为了在存在差错的物理层的基础上,采用差错检测,差错控制和流量控制等方法,将有差错的物理线路改进为无差错的数据链路,向网络层提供高质量的数据传输服务

对于网络层,由于数据链路层的存在,网络层不需要知道物理层具体采用了哪种传输介质与通信设备的,是采用模拟通信方法,还是采用数字通信方法。只要接口关系与功能不变,物理层所采用的传输介质与通信设备的变化对网络层不会产生影响。

2. 数据链路的主要功能

1)链路管理

通信开始前,要建立数据链路连接;数据传输过程中,维护数据链路连接;通信结束后,释放数据链路连接。

2)帧同步

数据链路层的传输数据单位是帧,物理层的比特流封装在帧中进行传输,帧同步指的是:接收端能从收到的比特流中正确的判断一帧的开始为和结束位

3)流量控制

发送端发送数据超过物理线路的传输能力或者超出接收端的帧接受能力时,就会发生链路阻塞。流量控制就是为了防止出现链路阻塞

4)差错控制

将有差错的物理线路改进为无差错的数据链路,向网络层提供高质量的数据传输服务

5)透明传输

不管传输数据的比特是什么样的组合,都应当能在链路上传送

6)寻址

多点连接时,为了保证每一帧都能传送到正确的接收端,因此数据链路层必须有寻址的能力

3. 链路层的三个基本问题

1)封装成帧

封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。 接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从比特流中识别帧的开始和结束。

控制字符SOH(start of header)放在一帧的最前面,表示帧的首部开始。
EOT(end of transmission)表示帧的结束。

当传输中出现差错,帧定界符的作用更加明显。假设未发送完一个帧而发生故障,接收端就知道收到的数据是不完整的帧(只有首部),必须丢弃

在这里插入图片描述

2)透明传输

当传送的帧是用文本文件组成的帧时(文本文件中的字都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
在这里插入图片描述

为了解决透明传输问题,字节填充法或字符填充:在控制字符SOH、EOT的前面插入一个转义字符ESC(其十六进制编码是1B,二进制是00011011)。而接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。

3)差错控制

传输过程中,1可能变成0, 0 可能变成1 。这就叫比特差错。——误码率。

因此,在计算机网络传输数据时,必须采用各种差错控制技术。目前在数据链路层广泛使用了循环冗余检验(CRC) 的检错技术。

  1. 为什么数据链路层要以帧为单位来传送数据呢?
    因为如果不以帧为单位,就无法加入冗余码来进行差错检验。

  2. 对于CRC只确保无比特差错,并非是无传输错误, 就算FCS无误,也有可能出错,但是这就不归链路层管,而是上层进行校验与重传。

传输差错分为两类:

  1. 第一类: 最基本的比特差错。
  2. 第二类:收到的帧出现了帧丢失、帧重复和帧失序。(停止等待协议,ARQ)。

数据链路层并不需要给网络层提供“可靠传输”的服务。
过去OSI的观点是:必须让数据链路层向上提供可靠传输。因此在CRC的基础上,增加了帧编号、确认和重传机制。

互联网采用了区别对待的方法:

  1. 对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。

  2. 对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务。

4. 一些零散链路层概念

MTU: 最大传输单元 1500字节

FCS:使用CRC帧检验的冗余码。

链路( link ):从一个结点到相邻结点的一段物理线路( 有线或无线) , 而中间没有任何其他的交换结点
数据链路( data link ):实现这些协议的硬件和软件加到链路上

也可把 链路分为物理链路和逻辑链路:
物理链路:上面的链路
逻辑链路:上面的数据链路, 是物理链路加上必要的通信协议

帧:数据链路层的协议数据传输单元
LAN:物理网段
VLAN:逻辑网段,一个广播域。

单播帧(unicast)(一对一)
广播帧(broadcast)(一对全体)
多播帧(multicast)(一对多)

二,两种情况下的数据链路层

1. 使用点对点信道的数据链路层(广域网)

1)PPP

点对点协议PPP:用户计算机和ISP进行通信时,使用的数据链路层协议,由以下协议构成

  1. 链路控制协议LCP( Link Control Protocol ):建立、 配置、测试数据链路连接
  2. 网络控制协议NCP( Network Control Protocol ):支持不同的网络层协议

ppp就是一种带有记账信息的协议。
透明传输解决方式:通过零比特填充法
在这里插入图片描述

2)HDLC

高级数据链路控制(High-level data link control、HDLC):同步网上传输数据、面向比特的数据链路层协议

  1. 数据报文可透明传输,用于实现透明传输的“ 0比特 插入法 ”易于硬件实现
  2. 采用全双工通信
  3. 帧采用CRC检验,对信息帧进行顺序编号,可防止漏收、重份,传输可靠性高

3)两种协议对比

相同:

  1. HDLC、PPP只支持全双工链路
  2. 都可 透明传输
  3. 都可 差错检测,但 不纠正差错

不同:
PPP协议: 面向字节, 2B协议字段, 无序号、确认机制,不可靠
HDLC协议: 面向比特,无,有编号和确认,可靠

2. 使用广播信道的数据链路层(局域网)

1)局域网拓扑划分

在这里插入图片描述

2)CSMA/CD

CSDA/CD协议:(Carrier Sense Multiple Access with Collision Delection)载波监听、多点接入、碰撞检测。

  • 载波监听:不管在发送前还是在发送中,每个站都必须不停的检测信道。如果检测到已经有其他站在发送,则自己就暂时不需发送数据,必须要等到信道边为空闲时才能发送数据。在发送中检测信道,时为了及时发现有没有其他站在发送和本站发送的碰撞。

  • 多点接入:总线型网,许多计算机以多点接入的方式连接在一根总线上。

  • 碰撞检测:边发送边监听,既适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。

  • 争用期:以太网的端到端往返时延2t称为争用期,或碰撞窗口,通常取51.2微秒为争用期的长度

  • 最短有效帧长:最短有效帧长为64字节

  • 二进制指数类型退避算法:发送碰撞的站在停止发送数据后,要推迟一个随机事件才能发送数据。

三,以太网

1. 以太网标准

DIX Ethernet V2一般是指这个。
IEEE 802.3 两个标准差别很小。
以太网 是满足DIX Ethernet V2标准的局域网。

为了使数据链路层更好的适应多种局域网标准,802委员会把局域网拆分为:
逻辑链路控制LLC(Logical Link Control)子层;
媒体接入控制MAC(Medium Access Control)子层。

2. 以太网提供的服务

以太网提供服务是不可靠的交付,即最大努力的交付

当接收站收到的有差错的数据帧时就丢弃此帧,其它什么也不做,差错的纠正由高层来处理;如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新帧发送。

3. 扩展以太网

1)以太网的拓扑

以太网的星型拓扑结构
物理上是星型,逻辑上是总线型。 在星形的中心增加了一种可靠性高的设备,为集线器(hub)。
在这里插入图片描述

2)扩展方式

(1)使用网桥
网桥工作在数据链路层,他根据MAC帧的目的地址对收到的帧进行转发。网桥具有过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是现检查此帧的目的MAC地址,然后再确定将该帧转发到对应的接口。

(2)交换机
随着网桥的接口的增加, 后来网桥和集线器合并了,计算机可以直接和交换机连接,这就是交换机。
交换机就是网桥和集线器的合并升级版,能全双工,安全通信。
端口带宽独享;安全;基于MAC地址转发;

(3)透明网桥(transparent )
透明指局域网上的站点不知道所发送的帧将经过几个网桥,因为网桥对于各站点是看不见的。透明网桥是一种即插即用的设备,标准是IEEE 802.1D。
透明网桥使用了生成树算法。避免产生转发的帧在网络中不停的转圈。

4. MAC层

1)MAC层的硬件地址(MAC地址)

硬件地址 = 物理地址 = MAC地址

MAC地址前3个字节(24位)是厂家分配的地址字段,后3个字节(24位)是厂家自定义,称为扩展标识符;
一个地址块可以产生2^24个地址,这种48位地址称为MAC-48,通用名为EUI-48,这就是MAC地址;
MAC地址实际上是每一个站的名字或标识符。

2)适配器检查MAC地址

适配器从网络上每收到一个MAC帧就要用硬件检查MAC帧中的MAC地址:

  1. 如果是发往本站的帧就收下,然后进行其它处理;
  2. 否则丢弃。

发往本站的帧包括:

  1. 单播帧(unicast)(一对一)
  2. 广播帧(broadcast)(一对全体)
  3. 多播帧(multicast)(一对多)

3)MAC帧的格式

为什么IP数据报的最短长度为46字节。
在这里插入图片描述

前8个字节的作用是实现比特同步,第一个字段共7个字节,称为前同步码,作用是实现快速MAC帧的比特同步;第二个字段是帧开始定界符,表示后面的信息是MAC帧。
在这里插入图片描述

4)无效的MAC帧

帧的长度不是整数个字节;
用收到的帧检验序列FCS查出有错误;
数据字段的长度不在46-1518字节内;
对于检查出来的无效MAC帧简单的丢弃。

5)帧间最小间隔

9.6微秒。相当于96bit的发送时间。
一个站在检测到总线空闲时,还需要等待9.6微秒后才能再次发送数据,这样做是为了使刚刚收到的数据帧的站接收缓存来得及清理,做好接收下一帧的准备。

5. 高速以太网

1)100Base-T以太网

速率在100Mb/s以上的以太网称为高速以太网。
在双绞线上传送100Mb/s基带信号的星型拓扑以太网,仍使用IEEE 802.3的CSMA/CD协议。100Base-T以太网被称为快速以太网(fast ethernet)。

2)100Base-T以太网的特点

可以实现全双工通信(注意,如果交换机上某一路连接着集线器(半双工),则这一路不能实现全双工)而无冲突,此时不使用CSMA/CD协议。
MAC帧格式不变,仍是802.3 标准。
最短帧长度不变,但是一个网段的最大电缆长度减少到100m。
帧间间隔从9.6微秒缩小到0.96微秒。

3)吉比特Gbit以太网

允许在1 Gb/s下全双工或半双工工作方式。
使用802.3标准的帧格式。
在半双工下使用CSMA/CD协议。
与10Base-T和100Base-T技术向后兼容。
当吉比特以太网在全双工方式时,不用载波延伸和分组冲突。

4)10Gbit/s以太网

MAC帧格式不变,仍是802.3 标准。
使用光纤而不是铜线。
只能工作在全双工方式,没有争用问题。
它的出现使工作范围从局域网扩大到城域网和广域网,实现了端到端的以太网传输,优点是:技术成熟;互操作性好;广域网中使用以太网便宜;统一的帧格式。


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

相关文章

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

(一)基本概念 数据链路层是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 才会生效。

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

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