前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第三层 数据链路层

第三层 数据链路层

作者头像
心安事随
发布2024-07-29 17:10:26
1090
发布2024-07-29 17:10:26
举报
文章被收录于专栏:前端大合集

1. 数据链路层在网络体系结构中的地位

  • 主机H1给主机H2发送数据
  • 中间要经过三个路由器, 和电话网, 局域网,以及广域网,等多种网络

从五层协议原理体系结构的角度来看

主机应具有体系结构中各个层次

而路由器 只需具有体系结构中的网络层,链路层,物理层.

数据流动过程:

  1. 当主机H1向H2发送数据时
  2. 主机H1将待发送的数据逐层封装后
  3. 通过物理层将构成数据包的各比特转换为电信号发送到传输媒体
  4. 数据包进入路由器后
  5. 下往上逐层解封网络层.
  6. 路由器根据数据包目的网络地址自身转发表,确定数据包的转发端口
  7. 然后从网络层向下逐层封装数据包
  8. 并通过物理层 将数据包发送到传输媒体
  9. 数据包最终到达主界H2时,还要由下往上逐层解封,最终解封出主机H1所发送的数据

2. 概述

  • 链路就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换节点
  • 数据链路是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路
  • 数据链路层以为单位传输和处理数据

三个问题:封装成帧、差错检测、可靠传输

网络

干的活

称之为

应用层

封装成为应用层协议数据单位

应用层协议数据单元

运输层

运输层为其添加运输层协议首部

运输层协议数据单元

网络层

网络层为其添加网络层协议首部

网络层协议数据单元

数据链路层

添加一个数据链路层协议首部, and 添加一个帧尾

帧头

3.封装成帧

帧头和帧尾的作用之一就是帧定界

引自GPT 3.5

在 OSI 网络模型中,数据链路层是第二层,它负责将网络层(第三层)传递过来的数据包(也称为分组)封装成帧,以便在物理层(第一层)进行传输。

封装成帧的过程包括以下几个步骤:

  1. 帧起始标记:数据链路层在传输数据之前,需要在每个数据帧的开头添加一个特定的起始标记,用于标识帧的开始。起始标记通常是一个固定的比特模式,例如 01111110
  2. 帧首部:在起始标记之后,帧首部包含了一些必要的控制信息,如帧的地址、控制字段等。这些信息用于识别和控制帧的传输和处理。
  3. 数据字段:帧首部之后是数据字段,也称为数据负载。数据字段是网络层传递过来的数据包,它包含了要传输的实际数据。
  4. 帧尾部:帧尾部包含了一些错误检测和校验的字段,用于保证数据的完整性和准确性。常见的错误检测方法包括循环冗余检验(CRC)帧检验序列(FCS)
  5. 帧结束标记:在帧尾部之后,数据链路层添加一个帧结束标记,用于标识帧的结束。帧结束标记与起始标记相同,通常是 01111110

通过封装成帧,数据链路层将网络层传递的数据包转换为一系列的帧,每个帧都包含了起始标记、帧首部、数据字段、帧尾部和帧结束标记。这样,数据链路层就能够将数据传输到物理层,并通过物理介质进行实际的传输。

封装成帧的过程使得数据链路层能够在物理层上可靠地传输数据,并提供了错误检测和校验的机制,以确保数据的完整性和准确性。这种封装成帧的方式是在不同的网络技术和协议中广泛使用的基础。

我们将数据链路层网络层交付的协议数据单元添加针头针尾的操作称为封装成针

添加针头和针尾的目的 都是为了在链路上 以针为单元来传送数据 也就是为了实现数据链路层本身的功能

为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大一些

如图所示 帧的数据部分的长度应远大于 帧头和帧尾的长度 这样才能提高针的传输效率.

因为仅从数据链路层来看 帧的数据部分才是真正要传输的数据

帧头和帧尾 是为了实现数据链路层功能而额外添加的

当然了考虑到差错控制等多种因素, 每一种数据链路层协议, 都规定了针的数据部分的长度上限, 称为最大传送单元MTU

4. 差错检测

实际的通信链路都不是理想的,毕竟在传输过程中可能会产生差错。1与0互变,这称为比特差错

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

奇偶校验(漏检率比较高)

  • 在待发送的数据后面添加1位奇偶检验位,使整个数据中“1”的个数为奇数(奇校验) 或 偶数(偶校验)
  • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码
  • 如果有偶数个位发生误码,则奇偶性不发生误码,不能检查出误码(漏检)

循环冗余校验CRC(广泛运用)

  • 收发双方约定好一个生成多项式G(x)
  • 发送方基于待发送的数据和生成多项式计算出检错码(冗余码),将其添加到待传输数据的后面一起传输
  • 接收方通过生成多项式来计算收到的数据是否产生了误码
  • 计算方式:摸2取余
    • 构造被除数:待发送信息后加上多项式最高次数个0
    • 构造除数:生成多项式各项系数构成的比特串
    • 做除法,检查余数,不够补零
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 数据链路层在网络体系结构中的地位
  • 2. 概述
  • 3.封装成帧
  • 4. 差错检测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档