网络:数据链路层原理总结
目录
一、主要作用
1、封装成帧
2、透明传输
3、差错检测
3.1 奇偶校验码
3.2 循环冗余校验码CRC
二、最大传输单元MTU
三、以太网协议
1、MAC地址
2、以太网协议
2.1 数据格式
2.2 MAC地址表
一、主要作用
数据链路层的主要作用:
- 封装成帧:将网络层的数据封装成帧的个数,在数据前添加帧首,在数据后添加帧尾;
- 透明传输:对于出现在帧数据中的控制字符,但是要当做不存在的去处理;
- 差错检测:物理层只负责传输比特流,无法控制是否出错,所以需要数据链路层负责差错检测的工作。
1、封装成帧
帧是数据链路层数据的基本单元。发送端在网络层的一段数据的前后分别添加一个标记,形成“帧”;接收端根据帧前后的特定标识,识别出“帧”。
2、透明传输
透明传输指的是,控制字符在帧数据中,但是要当做不存在的去处理。也就是说,如果在帧数据中出现了和“帧尾部”的控制字符相同的字符,也要正确的进行处理。这需要对数据中的特殊字符,进行特殊处理。
对特殊字符进行处理的方法,就是在特殊字符前面,增加一个转义字符。如下图所示,ESC字符就是增加的转义字符。
如果帧数据中出现了转义字符,则继续在前面增加转义字符,表示这是转义字符:
3、差错检测
物理层只负责传输比特流,无法控制是否出错,所以需要数据链路层负责差错检测的工作。
3.1 奇偶校验码
奇偶校验码要求数据位和校验位的和,是偶数。这样,如果奇数位数字出现了问题,就会被检测出来。当然,如果是偶数位的数字出现了问题,是不能被检测到的。
3.2 循环冗余校验码CRC
循环冗余校验码,是一种根据传输或保存的数据而产生固定位数校验码的方法。固定位数可能是一位,也可能是多位。用于检测数据传输或者保存后可能出现的差错。生成的数字计算出来,并且附加到数据后面。
模2除法:
模二除法和真实的除法很类似,差别在于,模2除法不需要借位。例如0-1等于1,但是不需要高位的数值减1。在每一位上看,实际上执行的就是异或操作,如下左图所示。
CRC的三个步骤:
- 选定一个用于校验的多项式G(x),并在数据尾部添加r个0,其中,r是G(x)中x的最高阶次数;
- 用添加了r个0的数据,用于模2除法除以多项式G(x)的位串;
- 将得到的余数,填充在原数据r个0的位置,得到可校验的位串。
注意事项:
- CRC的错误检测能力,与位串的阶数r有关,r越高检错能力越强;
- 数据链路层只进行数据的检测,不会进行数据的纠正。
二、最大传输单元MTU
MTU(Maximum Transmission Unit),最大传输单元。用于描述最大的可传输的数据帧的长度。
数据帧过大或过小,都会影响传输效率;以太网MTU一般是1500字节。
路径MTU,取决于整个传播链路中的MTU最小值。
三、以太网协议
1、MAC地址
MAC地址,也叫物理地址、硬件地址。每个设备都拥有唯一的MAC地址。
MAC地址有48位,即6个字节。通常由6组十六进制数字组成,每组都是一个字节,即两个16进制数。
2、以太网协议
以太网是一种使用广泛的局域网技术,是一种应用于数据链路层的协议。使用以太网协议可以完成相邻设备的数据帧传输。
2.1 数据格式
以太网协议的数据格式:
类型取决于后面的帧数据中承载的数据的类型,:
- 如果是IP数据,类型是0800;
- 如果是ARP请求或应答数据,类型是0806;
- 如果是RARP请求或应答数据,类型是0805。
2.2 MAC地址表
路由器中会存储一个MAC地址表,用来定位MAC地址对应的硬件接口。MAC地址表是一个映射,用来把一个MAC地址映射到一个具体的硬件接口。如图:
如果路由器发现MAC地址表中没有找到某个MAC地址,那么E将会广播数据包到除了数据发送方之外的全部硬件接口,接受到广播的硬件会向路由器反馈自己的MAC地址,然后E根据收到的反馈数据,更新MAC地址表。
网络:数据链路层原理总结相关推荐
- Sniff网络基础原理和软件实现技巧详解
Sniff网络基础原理和软件实现技巧详解 前言 SNIFF真是一个古老的话题,关于在网络上采用SNIFF来获取敏感信息已经不是什么新鲜事,也不乏很多成功的案例,那么,SNIFF究竟是什么呢? SNIF ...
- 网络-数据链路层回顾
数据链路层是干嘛的? 网络层是研究分组怎样从一个网络通过路由器转发到另一个网络 数据链路层主要研究在同一个局域网中,分组怎样从一个主机传送到另一个主机(不经过路由器) 数据链路层主要使用两种信道: 点 ...
- 网络编程原理进阶___TCP/IP(javaee)
点击跳转 本章重点 网络编程原理进阶 应用层 DNS 传输层 UDP TCP面试重点 `TCP`原理 确认应答 超时重传 连接管理(面试重点) 3次握手 4次挥手 滑动窗口 流量控制 拥塞控制 延时应 ...
- 以太网及网络工作原理二
以太网及网络工作原理二 2.以太网工作原理 2.2.以太网数据帧 2.3.数据帧传输 2.4.交换机的工作原理 2.5.网线的分类 2.6.千兆以太网 2.6.1.千兆位以太网标准主要四种类型的传输介 ...
- 网络工程原理与实践教程实验安排
<网络工程原理与实践教程(第3版)>胜在超凡实验指导书和教材合为一体,"易学,易教,内容新" 第10章 实 验.... 235 实验1 水晶头的制作... 23 ...
- 充分掌握网络工作原理及底层实现 大家都做什么项目啊?
张孝祥,张老师是软件编程语言培训和软件工程师速成培训专家.精通c/c++/vc++.vb.java.sql server.oracle.asp.jsp.j2ee.android等编程语言和数据库系统, ...
- 雷电网络(一):厘清雷电网络的原理
闪电网络为解决比特币拥堵而生,当然也可以用于其他区块链项目,比如我们上篇说的OMG.不过,以太坊也有自己的"闪电网络",它的名字叫雷电网络.甚至,以太坊除了雷电网络,还有其他类似的 ...
- 一文读懂闪电网络工作原理
一 引言 了解比特币的人都知道,比特币网络的拥堵问题由来已久,转账高手续费.速度缓慢严重制约了比特币的发展.关于扩容的争论喋喋不休,共识分歧严重,造成了多次比特币分叉.目前来看,社区共识无法达成一 ...
- 以太坊闪电网络实现原理
2019独角兽企业重金招聘Python工程师标准>>> 以太坊闪电网络实现原理 线上直接转账需要一定的费用,如果存在大量小额交易的情况下,费用会变的难以承受,因而以太坊引入了微交易支 ...
- 网络攻防原理及应用 知识梳理
文章目录 网络攻防原理及应用课程 复习 第一章 概述 1. 网络安全的引入 2. 网络安全的目标 3. 网络的主要安全威胁 4. 网络安全体系 5. 网络攻击手段 6. 网络防御手段 7. 密码技术应 ...
最新文章
- Matlab与机器学习-- 数据的归一化
- YII相关知识点记录
- php中的isset函数,PHP函数isset()只能用于变量
- _Linux实操-实用指令
- C++ 重载左移和右移运算符
- Mac或者Linux安装RabbitMQ
- 掌握渗透测试,从Web漏洞靶场搭建开始
- 关于打印数组一直输出地址符号的一个解决方法
- matlab 类型转换(类型判断)
- 项目中的设计模式【工厂方法模式】
- Weblogic部署程序运行不起来的坑
- 《Qt 5/PyQt 5实战指南》目录
- 华硕win10键盘失灵_win10笔记本键盘失灵怎么办_win10笔记本电脑键盘失灵一键修复教程...
- 高德地图的集成(简单至极)
- 喜欢的现代诗 -。-
- Zabbix主页应用介绍
- jboot-admin学习
- iOS开发工具-网络封包分析工具Charles
- STM32软件模拟IIC---读写驱动AT24Cxx
- python3.8与pyinstaller_pyinstaller 3.5 在python 3.8 环境下出现不兼容的问题