当前位置: 首页 > news >正文

ch5链路层和局域网

回顾TCP/IP参考模型,明确链路层和物理层在整个模型中的地位,简要提出链路层要解决的问题是单段链路的数据传输,物理层解决的是数字信号与电气信号之间的相互转换


链路层概述

节点:主机和路由器(包括网桥和交换机)
链路:沿着通信路径连接相邻节点的通信信道
有线链路
无线链路
局域网
:链路层协议交换的数据单元。封装网络层数据报  

数据链路层的职责:将分组通过一个链路,从一个节点传输到临近的另一个节点。

分组传输可以经过不同的链路使用不同的链路层协议实现:
例如,以太网,帧中继,最802.11无线LAN
每个链路协议提供不同的服务
例如,可以在链路上提供或不提供可靠的传输

传输类比
从成都到九寨沟的旅途
打的:成都某地到成都机场
飞机:成都机场到黄龙机场
大巴:黄龙机场到风景区
旅客 = 数据包
运输段 = 通信链路
运输模式 = 链路层协议
旅行社 = 路由算法 

链路层服务:

成帧(Framing)
把网络层数据报加头和尾(唯一一个加尾部的层),封装成帧
帧头中包括指明目的和源的“物理地址”(不同于IP地址)
链路接入(Link access)
媒体访问控制(Medium Access Control,MAC)协议
共享媒体的多路访问 
可靠交付(Reliable delivery)
在出错率很低的链路上很少用 (光纤,部分双绞线)--链路层不一定要具有全部的这些功能服务。
无线链路:高出错率

流量控制(Flow control):
节点具有有限容量的帧缓冲能力
在邻接的发送节点和接收节点间的同步调节
差错检测(Error detection):
差错由信号衰减和噪声引起
接收者检测错误:如果发现差错,发送者重传帧或丢帧
纠错(Error correction):
接收者检测和纠正错误,不需发送者重传
半双工和全双工(Half-duplex and Full-duplex)
半双工,一个节点不能同时传输和接收
全双工,节点可以同时传输和接收
 

差错检测和纠错技术

奇偶校验

奇校验:用户数据和校验信息中1的个数为奇数个时,奇偶位为1
偶校验:用户数据和校验信息中1的个数为偶数个时,奇偶位为1

加单个奇偶位

二维奇偶校验:
检测和纠正单个位错误,检测的两个位错误

差错检测-循环冗余编码CRC

多项式编码,该编码将比特串看作是0和1的一个多项式
  101001 =>  x5+x3+1(幂次是后面的位数,x0=1)

r+1位模式G,称为生成多项式

CRC原理:在K位信息码(目标发送数据)后再拼接R位校验码,使整个编码长度为N位,因此这种编码也叫(N,K)码。

        通俗的说,就是在需要发送的信息后面附加一个数(即校验码)生成一个新的发送数据发送给接收端。这个数据要求能够使生成的新数据被一个特定的数整除。这里的整除需要引入模 2除法的概念。

那么,CRC校验的具体做法就是

(1)选定一个标准除数(K位二进制数据串)

(2)在要发送的数据(m位)后面加上K-1位0,然后将这个新数(M+K-1位)以模2除法的方式除以上面这个标准除数,所得到的余数也就是该数据的CRC校验码(注:余数必须比除数少且只少一位,不够就补0,补前面)

(3)将这个校验码附在原m位数据后面,构成新的M+K-1位数据,发送给接收端。

(4)接收端将接收到的数据除以标准除数,如果余数为0则认为数据正确。

注意:CRC校验中有两个关键点:

        一是要预先确定一个发送端和接收端都用来作为除数的二进制比特串(或多项式)标准数;

        二是把原始帧与上面选定的除进行二进制除法运算,计算出FCS校验码

        前者可以随机选择,也可按国际上通行的标准选择,但最高位和最低位必须均为“1”

模2运算的加法运算与减法运算是相同的,等价于按位异或(XOR),比如

1011 XOR 0101 = 1110
1001 XOR 1101 = 0100
1011 - 0101 = 1110
1001 - 1101 = 0100

G=1001,所以知道r+1=4,r=3,所以D后面+了三个0,除出来R=011

接收方则用R加在D后面,看能不能整除。
 

假设:
通信双方协商的生成多项式为:
   G=X4+X2+X+1
发送放要发送的数据为:
   D=11001100
问题:
CRC校验信息需要多少位?
发送方最终发送的数据是多少位?
发送方最终发送的数据内容是什么?
如果传输过程中出现1位错误能否检测?出现6位错误能否检测?为什么

G=10110ÿ

相关文章:

  • java基础filter servlet interceptor controller之间的关系
  • Python 怎么注释大段
  • 操作失败——后端
  • 华为、华三交换机、路由器启用基于端口的环回检测功能配置
  • Python怎么翻译:探索Python在翻译领域的无限可能
  • gitlab将本地文件项目上传至gitlab服务
  • 微电子加速迈向后摩尔时代!复旦大学梅永丰课题组集成 DNN 与纳米薄膜技术,精准分析入射光角度
  • 计算机基础(5)——进制与进制转换
  • 明天15点!如何打好重保预防针:迎战HVV经验分享
  • python11 序列的相关操作
  • Unity 性能优化之LOD技术(十)
  • vue 将echart 下载为base64图片
  • 【计算机毕业设计】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
  • 解决 Spring Cloud GateWay报错:Exceeded limit on max bytes to buffer : 262144
  • 如何把docker里的内容拷贝出来
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 08.Android之View事件问题
  • Android单元测试 - 几个重要问题
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Cookie 在前端中的实践
  • flask接收请求并推入栈
  • Intervention/image 图片处理扩展包的安装和使用
  • javascript 总结(常用工具类的封装)
  • JavaWeb(学习笔记二)
  • Js基础知识(一) - 变量
  • react-native 安卓真机环境搭建
  • SpiderData 2019年2月25日 DApp数据排行榜
  • spring-boot List转Page
  • Twitter赢在开放,三年创造奇迹
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于Java中分层中遇到的一些问题
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 每天10道Java面试题,跟我走,offer有!
  • 如何设计一个微型分布式架构?
  • 微服务框架lagom
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​批处理文件中的errorlevel用法
  • # 数据结构
  • (4)logging(日志模块)
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (转)memcache、redis缓存
  • ..回顾17,展望18
  • .htaccess配置常用技巧
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?