交换机不认识ip地址,但是为什么两台电脑能通过ip地址转发数据呢?

2026-02-25 16:33:27 RAIZ

图片需求描述
兄弟们,你们说,两台电脑之前通信,我们都知道,是通过ip地址通信的,但是,两台电脑之间连接一个二层交换机或者一个傻瓜交换机,为什么两台电脑就能通信呢?
二层交换机,又不认识ip地址,它是怎么将两台电脑之间的数据进行转发的。
睿智创新RAIZ,一体化IT服务提供商
图片解决过程

在讲二层交换机之前,我们还需要搞懂一个理论OSI模型

分层工作,我简化了一下(OSI模型)分7层。

应用层:最上面的工作在5、6、7层,就是我们通常在使用的应用服务,如网页、金蝶软件应用服务。

传输层(TCP/UDP):工作在第四层,当系统运行了一个应用软件,在系统中就会有对应的服务,当服务正在运行中,就会生成一个端口,对应这个软件。

网络层(IP):工作在第三层,那就是ip地址,路由器,三层交换机。

数据链路层(以太网):工作在第二,二层交换机。

物理层(物理线路):工作在第一层,网线、网卡、光纤等。

看了上面的理论,那我们知道了,数据链路层的交换机,是不认识ip地址的,那为什么交换机能转发两台电脑的ip地址呢?也可以正常通信?

图片交换机的工作详细步骤:

1. 学习阶段:构建MAC地址表

交换机内部有一个 MAC地址表,记录着每个端口连接了哪个设备的MAC地址。

当电脑A首次发送数据时,数据帧里会包含源MAC地址(A的MAC)

交换机收到后,会查看这个源MAC地址,然后说:“哦,这个MAC地址是从我的1号端口来的。” 于是它在表中记录:MAC_A <-> 端口1

通过这种方式,交换机逐渐学习到整个局域网里所有活跃设备的MAC地址和端口的对应关系。

我将两台电脑连接到交换机之后,交换机会自动学习这两台电脑的mac地址表。

可以看到,电脑A,使用ipconfig/all,可以看到mac地址70b5-e88f-84be

睿智创新RAIZ,一体化IT服务提供商

电脑B,使用ipconfig/all,可以看到mac地址是705a-0f7f-bf20

睿智创新RAIZ,一体化IT服务提供商

那我们在交换机上查看mac地址表。

睿智创新RAIZ,一体化IT服务提供商

电脑A,mac地址70b5-e88f-84be,对应的是交换机1/0/3接口。

电脑B,mac地址705a-0f7f-bf20,对应的是交换机的G1/0/4接口。

2. 转发/过滤决策

当交换机要转发一个数据帧时,它只看帧头里的目的MAC地址

情况一:已知单播(点对点)

如果目的MAC地址在它的地址表里(比如目的MAC_B对应端口3),它会只把数据帧从端口3发送出去。其他端口(1,2,4...)都收不到。这非常高效。

情况二:未知单播

如果目的MAC地址不在它的表里(比如一个新设备),交换机会将这个帧从除了接收端口以外的所有端口广播出去(称为“泛洪”)。总有一个端口连接着目标设备。

情况三:广播或多播

如果目的MAC地址是 FF:FF:FF:FF:FF:FF(广播地址)或是特定的多播地址,交换机也会进行泛洪,确保所有设备都能听到。

3. 电脑如何知道目的MAC地址?——ARP协议

这里有一个关键问题:电脑A想发给电脑B,它知道B的IP地址(比如192.168.1.3),但它最初并不知道B的MAC地址
这时就需要 ARP(地址解析协议)

睿智创新RAIZ,一体化IT服务提供商


  1. 电脑A在局域网内广播一个ARP请求:“谁的IP是192.168.1.3?请告192.168.1.2。

睿智创新RAIZ,一体化IT服务提供商

2.所有电脑都会收到广播包,但只有电脑B会回复一个ARP应答:“我的IP是192.168.1.3,我的MAC地址是MAC_B。”

睿智创新RAIZ,一体化IT服务提供商

电脑A将 IP_B -> MAC_B 的对应关系存入自己的 ARP缓存

睿智创新RAIZ,一体化IT服务提供商

现在,电脑A在组装数据帧时,就能正确填写目的MAC地址为MAC_B了。

睿智创新RAIZ,一体化IT服务提供商

核心答案就是:交换机通过学习和查询MAC地址表,在数据链路层完成转发,完全绕过了对IP地址的理解。IP地址是给路由器和终端主机用的,用于进行更高层次的、跨网络的路径选择和通信,交换机只能认识mac地址,通过mac地址表转发数据的。

我要咨询