在学习《计算机网络》时,我总有一个疑问,为什么明明有了IP地址,还要MAC地址呢?IP地址和MAC地址到底有什么区别呢?
一、交换机
交换机的内部结构如下。
当交换机的端口接收到网络包时,这个网络包的头部会有MAC地址,交换机会在MAC地址表中查找目标MAC地址对应的端口号,并向这个端口号进行转发。
二、路由器
路由器的内部结构如下
路由器中有两个模块,转发模块和端口模块。转发模块负责判断包的转发目的地。端口模块负责包的转发操作。
在终端输入,即可查看路由表
route print
在查找转发目的地时,会将网络包的IP地址与路由表中的项进行匹配,匹配规则是看是否在同一网段。例如目标地址是192.168.0.134就会匹配到上面的5项,目标是192.168.0.0,子网掩码是24上。这样就能找到对应的接口。
当路由器接收到一个数据包时,它首先检查数据包的目标IP地址,并根据路由表确定下一个跳的路由器或目标设备的IP地址。然后,路由器将数据包转发到下一个跳的路由器或目标设备,而不会改变数据包中的目标MAC地址。 然而,在数据链路层,设备是根据目标MAC地址进行转发的。因此,当数据包到达目标设备所在的子网时,交换机会根据目标MAC地址将数据包转发到目标设备。如果交换机没有找到目标MAC地址,它会将数据包广播到所有端口,直到找到目标设备为止。
在转发数据包的过程中,路由器会根据目标IP地址查找目标设备的MAC地址。这个过程是通过地址解析协议(ARP)来实现的。当路由器需要发送数据包到目标设备时,它将发送一个ARP请求,请求目标设备的MAC地址。当目标设备收到ARP请求时,它将回复一个ARP响应,其中包含它的MAC地址。 一旦路由器获取了目标设备的MAC地址,它将更新它的ARP缓存,并将数据包转发到目标设备。交换机会将数据包转发到目标设备所在的端口,并在数据包头部的帧头中加上源MAC地址和目标MAC地址。
在网络包从一个路由器到另一个路由器的过程中,通常情况下是不需要使用交换机的。 在网络通信中,路由器是用于连接不同网络的设备,它们可以根据目标IP地址将数据包转发到正确的目标网络。当数据包从一个路由器传输到另一个路由器时,它们会直接通过网络介质(例如光纤、双绞线等)进行传输,而不需要经过交换机。到局域网后就会使用到交换机。不过,现在的路由器都会集成交换机的功能。
总之,路由器用于不同网络之间的通信,而交换机用于局域网之间的通信。
之前有个问题一直搞不明白,为什么为什么明明有了IP地址,还要MAC地址呢?其实这是和网络通信的设计是有关系的,如果不分局域网和互联网,一个地址就能搞定,但这样全世界都在在一个局域网下,管理起来不方便,效率也不高。将网络设备分成子网和互联网是出于以下几个原因:
1. 减少广播风暴:如果所有设备都在同一个局域网中,当一个设备广播一个消息时,所有其他设备都必须处理这个消息。这可能会导致网络拥塞和性能下降。通过将设备分成子网,可以限制广播消息的范围,从而减少网络拥塞和提高性能。
2. 提高安全性:将设备分成子网可以更好地控制网络访问和保护网络安全。例如,可以限制只有特定子网中的设备才能访问某些资源,从而提高网络的安全性。
3. 简化管理:将设备分成子网可以更好地管理网络。例如,可以更容易地监控和管理每个子网中的设备,而不必处理整个局域网中的所有设备。
4. 提高可扩展性:将设备分成子网可以提高网络的扩展性。例如,可以更容易地添加新的设备或子网,而不必对整个局域网进行修改。