之前说过,数据链路层一个很重要的功能就是成帧和拆帧,因为帧是数据链路层的一个单元,数据链路层是对于帧进行处理的。那么这里就具体讲一讲数据链路层是怎么成帧的。

首先我们应该想想成帧所涉及的问题。第一就是网络层的数据包交给链路层之后,按照怎样的格式封装成帧?第二就是,用什么来区分帧头和帧尾?也就是什么时候帧开始,什么时候结束的问题。以及,怎么看传送的帧是对的?能不能看出来帧的某个比特错了?这些都是成帧机制应该考虑的,所以帧的格式设计成如下这样:

能看出来,帧的组成主要是标志和字段两个部分,标志主要是标识了帧的开始和结束,字段部分主要有地址字段,控制字段,正文字段和校验字段四个部分。地址字段表明了帧的去向和来源,这是硬件的网卡地址,控制字段就是各种协议,正文字段是真正的信息,校验字段是用来检验帧是不是有错误,通常有CRC校验等等。这样来看,上面的几个问题就都解决了。标志是成帧的一个重要标志,链路层读到标志,就知道帧开始了,这也就界定了一个帧的范围。对于正文字段,链路层读不懂,他也不会在意正文字段是什么,他眼中的正文也就是一串0101而已。

数据链路层成帧的方法主要有三个:字符计数法,字符填充的首尾界定法和比特填充的首尾界定法。

1.字符计数法  用一个帧的第一字节来说明帧的总长度(总长度包含这个帧头)

看这张图,白色为帧头,指明了长度,比如第一帧长度为5,后面就跟了4个字节,第二帧的长度为5,后面也跟了4字节,之后是两个8字节长度的,所以各自跟了7字节的正文部分。但是很显然,如果头这一个字节出了问题,影响的就不仅仅是这一帧了,其他的都会出问题。比如:

第二个帧头出了问题,那么就会出现大问题:后面的全部帧都会出错,连锁反应。所以这种方法不太常用。

2.字符填充的首尾界定法

在帧的头之前和尾之后加一个特殊的字符,只要读到这个字符帧就开始了,再次读到就认为这个帧结束了,如下图所示:

这种方法能够避免上面字符计数法的头出错问题,但是他也有问题:如果正文里面出现了flag特殊字符怎么办?解决办法是在正文里面flag字符前面加上转义字符esc,这样读到flag之前如果没有转义字符esc,那么认为帧结束,如果有esc那么认为他就是普通的数据就行。问题又来了,那么正文里面如果有esc字符呢?那么就在esc前面再加一个esc就行了,这两个的处理是一样的。如下图:

3.比特填充的字符界定法

这种方法和第二种比较类似,区别是他把flag具体化了,为6个1。这样当正文读取的时候一旦出现了5个连续的1,那么在后面填充一个0,避免出现6个1造成帧提前结束。如下图所示:

收端接收到之后,每读到5个连续的1之后,就把后面的0去掉一个,这样就得到了原文的数据了。

上面三种方法就是最常见的链路层成帧的方法。

数据链路层的成帧方法相关推荐

  1. 数据链路层(比特流成帧方法、纠错和检错、流量控制方法)

    数据链路层功能: 向网络层提供一个定义良好的服务接口.即将源机器中来自网络层的数据传输到目标机器的网络层.数据链路层提供以下三个服务:(1)无确认的无连接服务:LANs:(2)有确认的无连接服务:Wi ...

  2. 计算机网络数据链路层封装,计算机网络(3.3)数据链路层- 封装成帧

    数据链路层协议有许多种,但有三个基本问题则是共同的.性能 这三个基本问题是: 一.封装成帧.二.透明传输.三.差错控制.编码 封装成帧 封装成帧 (framing) 就是在一段数据的先后分别添加首部和 ...

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

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

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

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

  5. 【Java TCP/IP Socket】应用程序协议中消息的成帧与解析(含代码)

    程序间达成的某种包含了信息交换的形式和意义的共识称为协议,用来实现特定应用程序的协议叫做应用程序协议.大部分应用程序协议是根据由字段序列组成的离散信息定义的,其中每个字段中都包含了一段以位序列编码(即 ...

  6. 【计算机网络复习 数据链路层】3.2 封装成帧和透明传输

    封装成帧和透明传输 一.封装成帧 二.透明传输 一.封装成帧 封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧.接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比 ...

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

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

  8. 计算机网络(4.1)——数据链路层的功能概述、封装成帧和透明传输

    基本概念 结点:主机.路由器 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线.光纤和微波.分为有线链路.无线链路. 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件 ...

  9. 数据链路层 要解决的三个问题 封装成帧 透明传输 差错控制

    链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点. 一条链路只是一条通路的一个组成部分. 数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据 ...

最新文章

  1. php数字转中文数字排序,php实现中文转数字
  2. github和git@osc提交问题
  3. Flutter路由管理代码这么长长长长长,阿里工程师怎么高效解决?(实用)
  4. squid 日志清理
  5. linux recv 返回值与linux socket 错误分析
  6. JavaScript巧学巧用
  7. python-excel写入代码
  8. 打印机扫描功能不见了_打印机扫描文件找不到路径怎么办?
  9. 省电指南-ESP8266如何降低功耗
  10. 阿里云服务器固定ip和弹性公网ip
  11. RHCE第一讲【II】
  12. Java API在HDFS上实现文件的上传、下载到本地、创建文件夹、删除文件和重命名文件
  13. 【yum是什么?】centos7基于阿里云,配置网络yum
  14. VVC/JEM代码学习26:m_pcTrQuant-transformN*N
  15. 做SEO优化必须掌握的10大技能
  16. (转)某618大促项目的复盘总结
  17. 数据库(DataBase)-数据库备份
  18. 清华计算机考研 年龄,清华大学2020研究生录取数据公布,最小博士仅有18岁
  19. HTML5+CSS3做一个有动画跳动发光的文字效果
  20. 面向过程(POP)与面向对象(OOP)

热门文章

  1. vue v-model 双向绑定表单元素的数据:实质是绑定了value、checked、selected属性
  2. COBOL语法和文法(2)
  3. 衡量度量过程性能的几个指标
  4. APP上架到各大应用商店指南
  5. html+在ul中加边框,为元素添加边框,你有多少种好办法?
  6. php x20有啥用,vivo X20有什么新功能
  7. WannaCrypt 防护补丁MS17-10
  8. MySQL DBA的KPI考核指标有哪些
  9. 微信营销KPI考核标准有哪些?
  10. bam文件读取_把bam文件读入R,并且转为grange对象