二、TCP/IP模型-数据链路层
1、以太网协议介绍
不同的协议栈用于定义和管理不同网络的数据转发规则。
一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网组网技术。
如果用的是以太网协议,就会有MAC地址,其他协议不会有MAC地址。
以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。
以太网是建立在CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。
早期的以太网∶以太网是建立在CSMA/CD机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器HUB是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。
交换机组网∶交换机做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能,并替代HUB成为主流的以太网设备。但是交换机对网络中的广播数据流量不做任何限制,这也影响了网络的性能。
路由器分割广播域,交换机分割冲突域。
20世纪70年代,由Xerox公司联合Intel和DEC公司开发出以太网
1973年,传输速率3Mb/s(实验室)
1980年,传输速率10Mb/s
1990年,出现双绞线介质的以太网
1992年,传输速率100Mb/s
1998年,传输速率1000Mb/s
2010年,IEEE发布40G/100G标准
2013年,400G的以太网标准工作正式启动!
MAC地址:表示的是一个物理设备,也称之为“物理地址”,不可以随意修改。
任何一个上网的节点,也必须拥有一个IP地址,该地址在一个网段内是唯一的。
IP地址:称之为一个上网设备的“逻辑地址”,是可以随意修改的。
IP地址相当于人的名字,MAC地址相当于人的家庭住址。
如果想要设备之间实现互通,则必须同是知道目标设备的IP址和MAC地址。
以太帧的格式有两个标准∶Ethernet_II格式和IEEE 802.3格式,因此协议规定以太网帧的数据格式
以太网技术所使用的帧称为以太网帧(Ethernet Frame)简称以太帧。
在以太网中,数据通信的基本单位是以太网帧(Frame)。
如图所示。
Ethernet Ⅱ以太帧∶
D.MAC∶6字节,目的MAC地址,6字节,该字段标识帧的接收者。
S.MAC∶6字节,源MAC地址,6字节,该字段标识帧的发送者。
Type∶2字节,协议类型。常见值∶(用于标识上层协议的类型)
0x0800: Internet Protocol Version 4 (IPv4);
0x0806: Address Resolution Protocol (ARP)。
FCS:帧校验序列。通过CRC算法循环冗余校验。数据发送前要进行计算
Length/Type>=1536(0x0600) Ethernet_II 用于区分是802.3的帧还是E2的帧
IEEE802.3帧长度字段值小于等于1500(0x05DC)
逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。
DSAP∶1字节,目的服务访问点,若后面类型为IP值设为0x06。服务访问点的功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端口号。
SSAP∶1字节,源服务访问点,若后面类型为IP值设为0x06。
Control∶1字节,该字段值通常设为0x03(保留字段),表示无连接服务的IEEE 802.2无编号数据格式。
SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成(子网络服务接入点,私有化的,使用公有化协议,这个字段不会显示)。
Org Code:机构标识。三个字节都为0。
Type:类型。字段的含义与EthernetII帧中的Type字段相同。
Length/Type <= 1500 (0x05DC) IEEE 802.3 用于区分是802.3的帧还是E2的帧
Ethernet_II格式和IEEE 802.3区别
1、长度区别:Ethernet_II数据长度为18字节。IEEE 802.3数据长度为21-26字节
2、data数据长度区别:Ethernet_IIdata IEEE 802.3 data长度 38-1492B
数据帧的总长度为64-1518字节,这样设计的原因是什么?(另外,以太网口的最大传输单元是1500字节,即MTU=1500B。)
以太网中,最小帧长为64字节,这是由最大传输距离和CSMA/CD机制共同决定的。
规定最小帧长是为了避免这种情况发生∶ A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点。B站点认为线路空闲继续发送数据,导致冲突。
高层协议必须保证Data域至少包含46字节,这样加上以太网帧头14字节和帧尾4字节校验码正好满足64字节的最小帧长,如果实际数据不足46个字节,高层协议必须填充一些数据单元。
而出于对传输效率和传输可靠性的折中考虑,使得以太网帧的最大长度为1518字节,对应IP数据包就是1500字节。
较大的帧长度,数据的有效传输效率会更高;但是数据帧过长,传输时会占用共享链路过多的时间,对时延敏感应用造成极大的影响。
因此最终选择了一个折中的长度∶1518字节的数据帧长,对应1500字节的IP数据包长度,这就是最大传输单元MTU的由来。
网络接口卡(Network Interface Card,NIC)也称为"网卡",是计算机、交换机、路由器等网络设备与外部网络世界相连的关键部件。
网卡有很多类型,本章节我们提及的都指以太网接口卡,简称以太网卡或以太卡。
我们所说的交换机也均为以太网交换机,则交换机上每个转发数据的网口所使用的网卡都是以太网卡。
2、MAC地址
MAC(Media Access Control)地址:在网络中唯一标识—个网卡,每个网卡都需要并拥有唯一的一个MAC地址。网卡的MAC地址是具有全球唯一性的。
MAC地址是在IEEE 802标准中定义并规范的,凡是符合IEEE 802标准的以太网卡,都必须拥有一个MAC地址,用MAC地址来定义网络设备的位置。不同的网卡,MAC地址也不同。
每个以太网设备在出厂时都有一个唯一的MAC地址,那为什么还需要为每台主机再分配一个IP地址呢?或者说每台主机都分配唯一的IP地址了,为什么还要在网络设备(如∶网卡)生产时内嵌一个唯一的MAC地址呢?
主要原因有∶
IP地址是唯一的。IP地址是基于网络的拓朴结构分配的,IP地址可变。
MAC地址是唯一的。MAC地址是根据制造商分配的,MAC地址不可变。
若路由选择建立在设备制造商的基础上,这种方案是不可行的。
当存在两层地址寻址时,设备更灵活,易于移动和维修。
如果一个以太网卡坏了,可以被更换,而无须更换一个新的IP地址;如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。
MAC地址的作用:是唯一标识一个网卡,可以通过MAC地址进行同网段的数据访问。
一个MAC地址有48 bit(比特),6 Byte(字节)长,12位的16进制数字组成。MAC地址通常采用"十六进制"+"."表示。
二进制和十六进制 1个16进制数可以用4位二进制数来表示,1:4关系。
16进制-->1位最大代表15 2进制 -->4位最大代表15
二进制 [逢2进1] 8 4 2 1
十进制 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
二进制 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
十六进制 | A | B | C | D | E | F |
mac地址:50-2B-73-CC-41-1E
5 | 0 | 2 | B | 7 | 3 | C | C | 4 | 1 | 1 | E |
0101 | 0000 | 0010 | 1011 | 0111 | 0011 | 1100 | 1100 | 0100 | 0001 | 0001 | 1110 |
4、MAC地址构成
一个制造商在生产制造网卡之前,必须先向IEEE注册,以获取一个长度为24bit(3字节)的厂商代码,也称为OUI(Organizationally Unique ldentifier)。
后24bit由厂商自行分派,是各个厂商制造的所有网卡的唯一编号。
MAC地址∶代表一个网络接口的物理地址,全球唯一
MAC地址由两部分组成:供应商代码和序列号。其中前24位代表100该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。
(1)单播(Unicast)
通信形式上是点对点,单对单的通信。类似QQ私聊。
单播MAC地址(物理MAC地址)∶这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
从高位向低位(从左往右)第8bit为0(如xxxx-xxx0-xxxx-xxxx-xxxx-xxxx)且一定为0其他任意。
数据封装时,E2/802.3的源MAC和目的MAC都是单播MAC,则为单播通信。
单播MAC地址用于标识链路上的一个单一节点。单播MAC地址可以作为源或目的地址。
目的MAC地址为单播MAC地址的帧发往一个单一的节点。
注意∶单播MAC地址具有全球唯一性,当一个二层网络中接入了两台具有相同MAC地址的终端时(例如误操作等),将会引发通信故障(例如这两台终端无法相互通信),且其他设备与它们之间的通信也会存在问题。
(2)组播(Multicast)
通信形式上-点对多点,单对多的通信,类似QQ群聊。
组播MAC地址∶用来代表局域网(LAN)上的一组终端。
从高位向低位(从左往右)第8bit为1,且一定为1,(例如xxxx-xxx1-xxxx-xxxx-xxxx-xxxx)
数据封装时,因为组播代表的是一组的集合,面向的一组的通信,此时该地址不能成为数据的源地址,仅可以充当数据的目的地址。
组播通信的特点:通信前,每个设备要自己进行加组,如果没有加入进该组[没有加进该组播]则数据即便接收也无法处理,如果此时已经提前加组,则该数据可以进行处理。
组播MAC地址用于标识链路上的一组节点。
目的MAC地址为组播MAC地址的帧发往一组节点。
组播MAC地址不能作为源地址,只能作为目的地址。
Broadcast发送给一组目标,MAC地址是01-00-5E开头(第8位bit=1),IP地址=D类组播地址
(3)广播(Broadcast)
通信形式上-点对所有,单对所有的通信,类似QQ广告/新闻联播。广而播之 /强制性接收处理
广播MAC地址∶用来表示局域网上的所有终端设备。
从高位向低位(从左往右),48位全为1的MAC地址(FF-FF-FF-FF-FF-FF)。
数据封装时,因为广播代表的是所有人的集合,面向所有人的通信,此时该地址不能成为数据的源地址,仅可以充当数据的目的地址。
广播MAC地址可以理解为一种特殊的组播MAC地址。其具体格式为∶FFFF-FFFF-FFFF。
目的MAC地址为广播MAC地址的帧发往链路上的所有节点。
广播通信的特点:此时不需要设备提前加组,该通信是强制性的行为,网络中每一个可以接收到该数据的设备, 此时必须要进行下一步的处理。
Broadcast发送给所属广播域内的所有目标,MAC地址是FFFFFFFFFFFF ,IP地址=广播地址
数据链路层基于MAC地址进行帧的传输。
1.当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议。
2.帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。
3.主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。
4.如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。
5.如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。
6.如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。
7.本例中,Type字段的值为0x0800,表明该帧需要发送到IP协议上处理。在发送给IP协议之前,帧的头部和尾部会被剥掉。
a场景:
单播数据抵达接收端接口以后,接收者的动作:
1、首先看目的MAC,是否是自己的mac,如果不是丢弃,如果是,则进行下一步;
2、将数据也进行CRC检验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3、查看type字段,交由type字段标识的上层协议处理。数据链路层工作,结束。
b场景:
组播数据抵达接收端接口以后,接收者的动作:
1、首先看目的MAC,查看自己本地是否加组,如果没加组丢弃,如果加组,则进行下一步;
2、将数据也进行CRC检验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3、查看type字段,交由type字段标识的上层协议处理。数据链路层工作,结束。
c场景:
广播数据抵达接收端接口以后,接收者的动作:
2、将数据也进行CRC检验,比对FCS字段,如果不同则丢弃,如果相同,则进行下一步;
3、查看type字段,交由type字段标识的上层协议处理。数据链路层工作,结束。
整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】