一、封装成帧

1、MAC帧

类型字段 (2个字节):
用来标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。

数据字段 (46-1500):
正式名称是MAC客户数据字段最小长度64 字节-18字节的首部和尾部 = 数据字段的最小长度。

FCS字段 (4 字节):
当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64 字节。
在帧的前面插入的 8 字节中的第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC帧

2、封装成帧

1)、封装成帧(framing):就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。

2)、接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

3)、分组交换的一个重要概念:就是所有在因特网上传送的数据都是以分组(即IP数据报)为传送单位。

4)、网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的前面和后面分别添加上首部和尾部,就构成了一个完整的帧。
帧长等于数据部分长度加上帧首部和帧尾部的长度,而首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。

5)、首部和尾部还包含许多必要的控制信息,在发送帧时,是从帧首部开始发送。各种数据链路层协议都要对帧首部和帧尾部的格式有明确的规定。为了提高帧的传输效率,应当使帧的数据部分长度尽可能大于首部和尾部的长度。但是,每一种链路层协议都规定了帧的数据部分的长度上限——最大传送单元MTU(Maximum Transfer Unit)。


注:
 当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。
 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。他们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。
 

发送错误:
 当数据在传输中出现差错时,帧定界符的作用更加明显。假定发送端在尚未发完一个帧时突然出现故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,在接收端就知道前面收到的数据时个不完整的帧(只有首部SOH,没有传输结束符EOT),必须丢弃。而后面收到的数据有明显的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

二、透明传输

透明:某一个实际存在的事物看起来却好像不存在一样。对于数据链路层传输数据,表示无论什么样的比特组合都能通过这个数据链路层,因此数据链路层相对于这些数据来说就是透明的。

1、界定差错

  由于帧的开始和结束的标记是专门指明的控制字符,因此,所传输的数据中的任何8比特的组合一定不允许和用作帧界定符的控制字符的比特编码一样,否则就会出现帧界定错误。
  当传送的帧是用文本文件组成的帧时,其数据部分显然不会出现像SOH和EOT这样的帧界定符,可见不管从键盘上输入什么字符都可以放在这样的帧中传输,这样的传输就叫做透明传输。
  但当数据部分是非ASCII码的文本文件时,情况就不同了。如果某个数据的某个字节的二进制代码出现和SOH、EOT这种控制字符,数据链路层就会误认为“找到帧的边界”,收下部分帧,丢弃剩下的部分数据。
  

2、解决办法

  为了解决透明传输问题,就必须使数据中的SOH和EOT不被解释为界定符。
  发送端的数据链路层在数据中出现控制符”SOH”和”EOT”的前面插入一个转义字符”ESC”(其十六进制编码是1B)。而在接收端的数据链路层在将数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
  

三、差错检测

  现实的通信链路不会是理想的。这就是说,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1.这就是比特差错。
  在一段时间内,传输错误的比特占所传输比特总数的比率为误码率BER。为了保证传输的可靠性,目前在数据链路层广泛使用了循环冗余检验CRC,详情见我的另一篇博客。

CRC循环冗余检验

链路层基本问题 : 封装成帧、差错检测、流量控制相关推荐

  1. 计算机网络5-详述链路层:封装成帧、透明传输、差错控制、链路层协议(SR GBN ALOHA CSMA PPP HDLC)、滑动窗口

    一.链路层概述 1.基本功能概述 数据链路层主要负责通过一条链路从一个结点向另一个物理链路直接相连的相邻节点传送数据报 即,将其上层网络层交付给其的数据报,安全无差错地传给相邻结点 2.相关术语 节点 ...

  2. 数据链路层的三个基本问题——封装成帧、透明传输和差错检测

    参考资料:<计算机网络>第七版(谢希仁著) 一.封装成帧 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首 ...

  3. 数据链路层三个基本问题(封装成帧 、透明传输和差错检测 )

    文章目录 使用点对点信道的数据链路层 1.1 数据链路和帧 1.2 三个基本问题 1. 封装成帧 2. 透明传输 3. 差错检测 循环冗余检验CRC 帧检验序列 FCS 接收端对收到的每一帧进行 CR ...

  4. 【计算机网络笔记】数据链路层(封装成帧,差错检测,可靠传输)

    链路:从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点. 数据链路:把实现通信协议的硬件和软件加到链路上 数据链路层以帧为单位传输和处理数据. 三个过程:封装成帧,差错检测,可靠传输 封 ...

  5. 【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★

    文章目录 一.数据链路层 功能 二.封装成帧 ★ 三.流量控制 和 可靠传输 ★★ 1.停止等待协议 ★ 2.后退 N 帧 ( GBN ) 协议 ★ 3.选择重传 ( SR ) 协议 ★ 四.差错控制 ...

  6. 计算机网络学习:封装成帧、差错检测和可靠传输

    目录 一.数据链路层 二.封装成帧 三.差错检测 四.可靠传输 1.停止等待协议 2.滑动窗口协议 3.选择重传协议 五.总结 一.数据链路层 这一篇记录一下五层协议体系结构中的数据链路层.这一层属于 ...

  7. 数据链路层——封装成帧、透明传输、差错检测、最大传输单元MTU、以太网协议

    OSI模型中的数据链路层与物理层,在TCP/IP协议中同属于网络接口层. 数据链路层为物理连接之间提供了可靠的数据传输.数据链路层主要解决3个问题:封装成帧.透明传输.差错检测. 封装成帧 " ...

  8. 数据链路层:封装成帧、透明传输、差错检测

    从整个互联网来看,局域网仍属于数据链路层的范围. 链路 VS 数据链路 链路:从一个结点到相邻结点的一段物理链路. 数据链路:物理线路+实现通信协议的硬件和软件.(早期通信协议也称通信规程) 另一种分 ...

  9. 王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR

    第三章知识 数据链路层的基本概念 数据链路层功能概述 封装成帧 透明传输 什么数据都能传输 数据链路层的流量控制 流量控制方法 滑动窗口协议: 每一个小格标识一个帧 发送窗口:发送端正在处理的发送的数 ...

最新文章

  1. 换人!这些算法都不会还搞什么操作系统
  2. 你说我做丨为你定制「大局观版」职场设计课
  3. 数据聚集技术在mondrian中的实现
  4. WOR文件转换成GST文件
  5. 互联网协议套件(TCP/IP)及七层OSI模型
  6. nssl1470-X【并查集,素数】
  7. java 代码运行速度慢_C代码的运行速度总是比Java快,对吧? 错误!
  8. 计算机组成部分有cpu吗,计算机组成原理笔记——处理器(1)[未完]
  9. java helper 设计模式_必知必会的 Java 设计模式入门知识(十):外观模式
  10. 2020没赚到,你真的该好好想想了
  11. 【习惯】是学习最好的坚持方式
  12. 0618----Shell(二)
  13. DISPLAY尚未设置
  14. 问题 B: Bumped!
  15. 牛小刚的Spring自学笔记之IOC
  16. 20190904携程机试
  17. 抖音火爆的微信早安推送在线版,无需搭建代码,简单配置即可给心爱的他/她定时推送消息了
  18. Mac 上编译MapBox Native gl
  19. 改造Kindeditor之:自定义图片上传插件。 外加给图片增加水印效果的选择。
  20. 有回路的有穷自动机转化为正规式的方法

热门文章

  1. JavaScript 基础
  2. 《知易行难》扩展练习
  3. CSS中的特殊的选择器
  4. Sublime text 入门学习资源篇及其基本使用方法
  5. LINUX内核之普通自旋锁
  6. 一个立即关闭显示器的小软件(Masm开发,只有3KB大小)
  7. STL之函数对象和谓词
  8. 怎样获取linux命令帮助?
  9. Java内存模型FAQ(四)重排序意味着什么?
  10. linux 每日学一点《明明白白配置lilo启动引导器》