数据链路层
数据链路层
- 数据的差错检测
- 组帧、解帧 数据帧帧头帧尾
- 标识身份 MAC地址
用以太网络标准来定义数据链路层
数据链路层不仅仅只有以太网,还有HDLC、PPP
按照地域来分类
局域网:小型地域5KM之内(以太网标准)
城域网:以城市为单位
广域网:范围较大从全局角度考虑(HDLC、PPP)、
局域网以太网标准来定义
- 定义传输介质的标准
- 定义了数据链路层数据封装<传输>的标准
以太网标准:EthernetⅡ、802.3
数据封装:原始数据上打上几层新的能够实现通信以及其他作用的封装
PDU:protocol data unity 协议数据单元,可以理解为具体的应用数据
数据链路层采用分组交换。
报头:不同层级打上不同的封装
数据段(semment):传输层报头+上层PDU
数据包(packet):网络层报头+上层PDU(包含传输层报头+上层PDU)
数据帧(frame):数据链路层报头+上层PDU+数据链路层帧尾
发送方:数据封装的过程
接收方:数据解封的过程
到底谁是发送方,接收方并不是一成不变的,根据不同数据变化的。
EthernetⅡ:通信数据
802.3:一些协议中STP IS-IS
Ethernet2:
TYPE:类型(0x代表16进制)
- 标识上层的协议,不同的组合代表上层不同的协议:0x0800--->ipv4 0x86dd--->ipv6 0x0806--->ARP
- 区分究竟是Ethernet2帧还是802.3帧
<=1500(0x05DD):802.3 STP/IS-IS
>=1536(0x0600):Ethernet 2
16进制转10进制
0x05DC:16*0*12+16*1*13+16*16*5=12+208+1280=1500
FCS:帧校验序列(CRC)进行差错检测:发出之前将算出的结果填充到FCS中,接受时根据CRC同样计算出一个结果,与数据中的FCS进行比对,如果相同,则可以继续处理,如果不同,则丢弃。
数据发送之前进行CRC算法:全世界都知道的公开算法
差错检测任何地方都进行:发出时计算结果填充到FCS 接受时同样计算然后比对
谁发谁填充,谁收谁检查
802.3:
LLC:逻辑链路控制(将链路从逻辑意义上控制)
DSAP:目标服务访问点 上层的协议
SSAP:源目标访问点 上层的协议
control:控制链路逻辑状态信息,从逻辑意义上进行通断控制
SNAP:子网络服务协议,私有开发的协议才会出现,前提条件:802.3
:机构代码,只有私有的协议厂商才会定义
:私有协议的类型
二进制0 1 0 1 一位2进制:bit<比特>
Byte<字节> 1B<字节>=8b<比特>
0000 0000 8个bit等于1个字节 32bit = 4字节
E2:在E2这个数据链路层协议中,上层数据最小46最大1500 封装大小为18个字节
802.3:数据链路层封装额外多了8个字节所以需要上层数据承载的大小进行8字节的缩减。
MAC:物理地址
分为2部分,OUI地址
前24位:OUI:组织唯一标识符
后24位:
出厂自带,直接烧录进网卡
- 工作在这条链路上,区分该链路上的不同设备节点 6个字节=48位(比特)
- 数据的传输方式--->在这一条链路的概念
这样一个链路范围:广播域:在一个范围内能够传递数据,广播信息
单播:QQ聊天 私聊 单对单 点对点 1对1
第8位一定是0
组播:QQ群聊,规定一个范围内才可以收到
第8位一定是1,其他可选
广播:点对所有
第8位一定是1,其他也是1
MAC地址抓包的时候--->16进制
概念讲的是第8bit--->2进制
1个16进制数=4位2进制数
16进制如何变为2进制
0000 0001:1000 0000:1100 0010:0000 0000:0000 0000:0000 0000
这个是组播:第8位为1,其他任意
FF:FF:FF:FF:FF:FF--->广播帧
数据封装过解封装在数据链路层的行为:
组帧:
- 收到上层数据后,此时填充源目第MAC以及TYPE<标识上层>和FCS<校验>
解帧:
- 先查看目的MAC是否自己可以接受 【单播=是自己 广播=接受 组播=加组】
- 执行FCS校验 校验通过则进行第3步
- 看Type交由上层的协议处理