目的:
物理层负责将比特流转换成信号,并传递给线缆。既不知道信号会发往何处,也不在意某一位是否会在某处丢失。
数据链路层提供了一种能够正确且稳定地传输比特流的结构,把数据传输到目的地。
数据链路层在意的是,数据是从哪个端口来的,应该送到哪个端口。
(这个端口是指物理交换机上的物理端口,也就是接口)
传输数据格式:
在数据链路层会把数据进行封闭,封装后的数据叫作帧。帧的组成如下:
前导码(8字节)+目的MAC地址(6字节)+源MAC地址(6字节)+类型(2字节)+数据包(46~1500字节)+FCS(字节)
MAC地址是由48位组成的唯一信息,其中前24位是运营商地址,由IEEE管理分配。后24位是运营商管理的唯一信息。
传播方式:
以太网中的通信分3种:单播,广播,多播。
单播:一对一通信。
广播:一对所有通信。例如:ARP(地址解析协议)
多播:对特定的小组通信。
L2交换机原理(数据链路层工作原理):
在数据链路层的设备种类很多,但我们只要掌握了L2(数据链路层)交换机,基本上能应对所有网络环境了。
转发地址的切换叫作“交换”,L2交换机根据数据链路层的信息(也就是MAC地址的信息)对帧进行L2交换。
L2交换机是根据内存中的MAC地址表对帧进行交换的。MAC地址表由端口(这个端口是指物理交换机上的物理端口,也就是接口)和源MAC地址的信息构成,
看地址表,就知道哪个节点连接哪个端口。L2交换机主要有3项职责:
1,登记收到帧的端口和源MAC地址
2,将不知道对应哪个端口的MAC地址进行泛洪(后面介绍泛洪和广播的区别)
3,删除不再需要的信息(过期的MAC地址表)
L2交换机是如何利用地址表进行交换的呢?
1,MAC-A的节点(或电脑)准备发送帧到MAC-B的节点,帧的源MAC地址是:MAC-A的MAC地址,目的MAC地址是:MAC-B的MAC地址。
这时,我们假设MAC地址表中是空的:
(注意,这时候MAC-A节点是已经知道MAC-B节点的MAC地址的。在实际情况中一般并不知道MAC-B节点的MAC地址,
所以节点MAC-A要先通过ARP广播确定节点MAC-B的MAC地址后,才能开始通信。什么ARP广播,在后面介绍)
2,MAC-A节点发送数据到交换机,交换机收到帧后,将节点A的端口号和源MAC地址作为新的条目,添加到MAC地址表中。这时MAC地址表内容如下:
这里的端口号为1号,意思是这个节点连接到了交换机的1号物理端口上了。
3,由于交换机不知道节点MAC-B的MAC地址连接的是哪个端口,所以会将帧复制并发给其它所有端口,节点B接收到帧后,发现帧上的目的MAC地址和自己的相同,
则生成一个帧给交换机一个回应,帧的源MAC地址是:MAC-B的MAC地址,目的MAC地址是:MAC-A的MAC地址。这的MAC地址表还是和上面一样。
4,交换机收到MAC-B节点发过来的帧后,把MAC-B节点的MAC地址也登录到MAC地址表中。
5,上面的MAC表建立完成后,MAC-A节点就可以和MAC-B节点直接通信了。
但里面的条目并不是一直保存下去。有两种情况下会被删除掉:
(1)线缆被拔掉时
(2)超过一定时间未收到帧。(也就是过期了)
其实MAC地址表里还有一列“类型”,这个列有两个值,一个是“Static”,另一个是“Dynamic”。
Static表示是本机静态设置的或是系统上已经占用的MAC地址,不会被自动删除;
Dynamic是指通过帧动态学到的内容(就像上面一样),过了老化时间就会被删除。
关于VLAN:
VLAN是在物理网络上划分出来的逻辑网络。VLAN有3个特点:
(1):不受网络端口的实际物理位置的限制。
(2):有着和物理网络同样的属性。
(3):L2层的单播,多播和广播只会在同一VLAN中起作用,不会进入其它VLAN中。
有时候,想把所有的节点都纳入到广播域中,不是一件好事,会影响广播的效率。
例子:
在企业中,经常有这样一种情况:同一个公司的同一个部门有多个不同的办公地点(比如在不同的楼层),
但是这两个地点的同事的电脑又要求能够相互访问。如果将这两个地点的主机接在同一个交换机下,布线将是一个麻烦的事情。
VLAN本质上就是代表VLAN ID的一些数字。其原理只是将VLAN ID的数据分配给各个端口,由此去识别端口而已。
如何设置VLAN:
VLAN有两种设置方法,一种是端口VLAN,另一种是打标VLAN。
端口VLAN:就是将VLAN分配给端口。例如:把端口1和2分配给VLAN1,把端口3,4,5分配给VLAN2。
打标VLAN:就是给VLAN打上标签。如何打标签?就是给帧上加上一个段包含VLAN的信息而已。实现方式就是在帧上,加上4个字节的VLAN标签。
分配完VLAN后,VLAN1内的广播,VLAN2就不会收到。如果要让VLAN1和VLAN2之间产生通信,必须通过L3交换机或路由器等L3层设备进行中转才行。
(为什么不能跨网段(物理或逻辑)通信,必须通过路由设备中转,后面讲解)
端口VLAN有一个不好的地方,就是如果跨交换机设置VLAN的话,有多少个VLAN,就要准备多少个端口和线缆。
例如:交换机1上有3个VLAN(VLAN1,VLAN2,VLAN3),交换机2上也有3个VLAN(VLAN1,VLAN2,VLAN3),要让这3个VLAN连通的话,
就要在交换机1上准备3个端口,和交换机2准备的3个端口相连接,并且还要准备3根线。
打标VLAN就不需要这么多端口和线缆,两台交换机上,只需要1个端口和根线缆就可以了。
打标VLAN还有一个特点,就是存在一个VLAN叫作:本征VLAN(Native VLAN)。这个VLAN上的数据不会被打标(可能是为了设置一个默认VLAN,传输数据快)
为什么不能跨网段(物理或逻辑)通信,必须通过路由设备中转?
因为数据链路层的核心是“MAC地址表”,MAC地址表记录的只有“端口“和”MAC地址“还有一些其它设置,没有记录”IP地址“。
也就是说,他不是针对IP地址进行转发的,而是针对MAC地址进行转发的。而在转发时,交换机只能把数据转发到和交换机端口绑定的MAC地址,
也就是MAC地址表中的地址。或者是不在同一交换机上,在其它交换机上,但这两台交换机必须相连接,而且源节点和目的节点的VLAN ID必须一致。
这样就限定了能够直接通信的节点在物理上,必须是同一个网段里(虽然有可能在同一个物理网络里,因为VLAN ID不同也不能通信,但如果不在同一个物理网络里,
就算VLAN ID一致,也是不能通信的)。
两个物理网段如何通信呢,这就需要路由器了。为什么路由器能够跨网段,等讲网络层的时候再讲。
(用网桥也可以实现两个网段连接,具体请参考网桥的资料)
补充:
泛洪和广播的区别:
泛洪是指交换机在转发数据时,在MAC表中无法找到与数据包目标地址一致的条目,就将数据包从所有端口发送出去(除了接收该数据包的端口),以期找到目标主机来接收数据包,可以了解为2层的行为。范围是VLAN或交换机上的所有节点。
广播是指向所有节点发信息。分为第2层广播和第3层广播。 第2层广播也称硬件广播,用于在局域网内向所有的结点发送数据,通常不会穿过局域网的边界(路由器),除非它变成一个单播。广播将是一个二进制的全1或者十六进制全F的地址。 广播(第3层)用于在这个网络内向所有的结点发送数据。第3层广播也支持平面的老式广播。广播信息是指以某个广播域所有主机为目的的信息。这些被称为网络广播。常用的ARP就是用广播的方式进行的。