数据链路层与MAC地址+网络层
如果数据进行封装时,基于E2或者802.3标准,此时我们称之为是一个以太网数据帧
E2和802.3作用
定义帧头和帧尾的格式
数据
对于下层的每个层级而言,上层所反馈或者传递给我的信息,下层认为皆是数据
MAC地址
mac地址:物理地址:网卡地址
每个设备出厂时,烧录进网卡芯片中。自带出厂。
在一个以太网中,标识设备在链路中的什么位置。
E2
D.MAC:目的mac地址,接收者的mac信息
S.MAC:源mac地址,发送者的mac信息
Type:类型。用于标识上层的协议
Data:由应用层传到数据链路层的所有数据(包括上面的几次封装)
FCS:帧校验序列 ------ 算法:CRC循环冗余校验(整体的信息)
(将前面的数据进行计算得出来的数据)(用于差错检测)
发送者的动作
由发送者填充源目mac信息,以及type字段标识上层协议,以及CRC检验,数值填充至FCS,信息都填充完毕之后,此时借助物理层,转变为二进制比特流,从链路中传递。
数据抵达接收端接口以后,接收者的动作:
1.首先看目的MAC,是否是自己的mac,如果不是丢弃,如果是,则进行下一步;
2.将数据也进行CRC检验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3.查看type字段,交由type字段标识的上层协议处理。
数据链路层工作,结束。
802.3
Length:表示Data的长度。
LLC:逻辑链路控制
D.SAP:目标服务接入点(相当于E2中的Type字段)
S.SAP:源服务接入点
Control:保留字段(无用)
SNAP:子网络服务接入点(私有化才有)
Org Code:机构标识
Type:类型:标识厂商私有化的协议是什么
两者区别
E2的帧长度增加18B
802.3
1.私有化:帧长度增加26B
2.公有化:帧长度增加21B
1Byte(1B)(字节) = 8bit(8b)(位)
MTU
MTU:最大传输单元(规定1500,可以修改),存在于每条链路的概念。(不包含数据链路层的封装,指的是网络层及以上的封装)(只有在某种特殊的业务场景下会去修改MTU,一般不进行修改)
数据太小的话进行Padding值
Padding:补丁 00000000 ---- 按照46取值(不够补0,补到46位)
E2和802.3的区分
当 Length/Type >= 1536 (0x0600) 时为 Ethernet_II
当 Length/Type <= 1500 (0x05DC) 时为 IEEE802.3
E2中的一些协议
ARP = 0x0806
IPV4 = 0x0800
IPV6 = 0x86DD
进制
0x ---- 十六进制数
二进制比特流
01 ---- 二进制 ---- 逢二进一
十进制:0123456789
十六进制:0123456789A(10) B(11) C(12) D (13) E (14) F (15) 16 =0x10
二进制和十六进制之间 1个16进制可以用4个二进制表示,1:4关系
1 | 1 | 1 | 1 | 是否取值 |
---|---|---|---|---|
8 | 4 | 2 | 1 | 取值所代表的数值 |
在一台交换机上每台设备间的物理链路:不是直连 -- 直接连接
逻辑状态:都处于互联状态,处于一条链路上
MAC地址
由两部分组成,前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。
mac地址 ----- 物理地址 ----- 网卡地址
网卡上 ---- 烧录进网卡芯片 ---- mac地址
mac地址:显示16进制 = 12个16进制数
mac地址的概念
单播
通信形式上,点对点,单对单的通信。(类似于qq私聊)
数据封装时,源mac和目的mac都是单播mac,则为单播通信
单播mac地址特点:从高位地向低位(从左往右)第8位为0,且一定为0,其他任意
组播
通信形式上,点对多点,单对多的通信。(类似于qq群聊)
数据封装时,因为组播代表的是一组的集合,面向一组的通信,此时组播mac不能成为数据的源地址,仅能充当目的地址。
单播mac地址特点:从高位地向低位(从左往右)第8位为1,且一定为1,其他任意
广播
通信形式上,点对所有,单对所有的通信。广而播之/强制的接受处理。
数据封装时,因为广播代表的是所有人的集合,面向所有人的通信,此时广播mac不能成为数据的源地址,仅能充当目的地址。
单播mac地址特点:从高位地向低位48位全部为1,且一定为1
a:目的mac为单播mac
b:目的mac为组播mac
c:目的mac为广播mac
a场景:
单播数据抵达接收端接口以后,接收者的动作:
1.首先看目的MAC,是否是自己的mac,如果不是丢弃,如果是,则进行下一步;
2.将数据也进行CRC检验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3.查看type字段,交由type字段标识的上层协议处理。
数据链路层工作,结束。
b场景:
组播数据抵达接收端接口以后,接收者的动作:
1.首先看目的MAC,查看自己本地是否加组,如果没加组丢弃,如果加组,则进行下一步;
2.将数据也进行CRC检验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3.查看type字段,交由type字段标识的上层协议处理。
数据链路层工作,结束。
c场景:
广播数据抵达接收端接口以后,接收者的动作:
1.首先看目的MAC,如果是广播,则直接进行下一步;
2.将数据也进行CRC检验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3.查看type字段,交由type字段标识的上层协议处理。
数据链路层工作,结束。
IP报文头部
IP Header
Header Length:代表ip报头的长度
DS Field:定义报文的优先级
Total Length:代表总长度(报头长度加数据长度)
DF 不分片位
1 不可分片
0 可以分片
Identification:用来区分不同设备发来的分片(区分哪些分片是一组数据)
Flags:标志位:例如:MF,当MF为1时表示后面还有分片,当为0时表示后面没有分片。
Fragment Offset:用来区分每片分片在整组数据中的位置
Time to Live :防环机制 , 经过了多少个三层设备(每经过一个减一) 固定数值:255 128 64 (当TTL值为1 时数据被丢弃)
Protocol:标示使用的什么协议(3层拆完后4层使用什么协议) 1:ICMP 6:TCP 17:UDP