ARP表、MAC表、路由表的区别和各自作用
文章目录
- ARP表、MAC表、路由表的区别和各自作用
- 同一网络内:
- ARP表
- request - 请求
- reply - 响应
- MAC地址
- 在同一网络内,交换机如何工作?
- 不同网络
- 路由表
- 不同网络通信流程
- PC1到路由器
- 路由器到PC2
- 简短总结
ARP表、MAC表、路由表的区别和各自作用
同一网络内:
ARP作用: 让发送方知道目标的MAC地址, 不管是发给同一网络内的PC机还是路由器, 均需要知道对方的MAC地址
ARP表
ARP协议: 2种类型的报文
请求时是广播, 响应时是单播
request - 请求
发送方:
源MAC地址 | 已知 |
---|---|
源IP地址 | 已知(假设是PC1: 192.168.1.1) |
目标MAC | FFFF-FFFF-FFFF(广播MAC地址: 代表网络内的所有节点) |
目标IP | 已知 (假设是PC2: 192.168.1.2) |
当第一次发送时, 路由器是不会接受该数据包的, 因为数据包在解封装时, 会先检查第二层MAC地址, 再检查第三层IP地址, MAC地址符合,但是IP地址不符合,因此,最终只有PC2能够接受该数据包
reply - 响应
源MAC地址 | 已知 |
---|---|
源IP地址 | 已知(假设是PC1: 192.168.1.2) |
目标MAC | 已知 |
目标IP | 已知 (假设是PC2: 192.168.1.1) |
收到的MAC地址会存放在ARP缓存表中
PC1的ARP缓存表:
PC2的ARP缓存表:
ARP缓存表有生存时间
什么样的设备有ARP表: 只要这个设备需要充当发送方或者是接收方时
PC机, 路由器有ARP表
路由器R1的ARP表:
PC1在ping 192.168.1.254之后
生存时间 20 min
交换机也有ARP表:
只不过是空的, 尽管发送的请求要经过交换机, 但是当给交换机配置了IP地址, PC1去ping之后, 交换机就有了APR表
MAC地址
在同一网络内,交换机如何工作?
交换机存储的是MAC地址表:
收到数据帧(Frame), 交换机检查MAC地址表
- 有表, 按表转发
- 没表, 泛洪(向除源端口其他所有端口发送)
不同网络
路由表
实现跨网络通信需要路由,路由存在路由表里面
当ping另外一个网络的终端设备时, 本设备知道该ip地址是跨网络的, 本设备也有路由表, 其中第一条为默认路由, 可以使用route PRINT
命令查看本机路由表
配置网关就相当于配置默认路由
不同网络通信流程
PC1在进行跨网络通信时,需要先将包发送给本网络内的路由器, 那PC1是如何知道要发送给路由器的呢? 路由器又是如何知道要将该数据包发送给PC2的呢?
PC1到路由器
- 因为给PC1配置了网关(192.168.1.254), 也就是相当于配置了默认路由(因此主机也是有路由表的), 当PC1发现是跨网络通信时,就会将包发送给路由器, 那么问题来了 => 在通信时,发送方要知道接收方的IP地址和MAC地址
- 但是现在PC1知道要发送给路由器, 也就是说知道路由器的ip地址,但是不知道路由器的MAC地址(默认开始时PC1的ARP表为空)
- 因此PC1会发送一个ARP请求广播到本地网络,以获取路由器的MAC地址
- 路由器收到APR请求后, 回复其MAC地址这样PC1就可以构建包含路由器MAC地址的以太网帧,并将数据包发送给路由器
路由器到PC2
- 路由器接收到数据包后,会查看路由表来确定下一跳地址和转发接口, 也就是判断将该数据包发送给哪个网段内的主机。
- 确认网段后, 路由器也要先查看ARP表, 看是否有目标ip对应的MAC地址, 如有就进行发送, 没有,则先进行APR广播来获取目标主机的MAC地址, 最后再将数据包发送给目标主机PC2
简短总结
在同一网络内,为了获取目标的MAC地址,使用ARP协议。ARP通过广播请求和单播响应来实现这一过程。数据封装遵循OSI七层模型,从应用层到物理层依次封装;解封装则相反。首次通信时,设备通过ARP请求学习目标MAC地址并缓存至ARP表中,后续通信直接查表。交换机根据MAC地址表转发帧,未找到记录时采用泛洪方式,并定期刷新MAC表以防止攻击。对于不同网络间的通信,则需借助路由器及其路由表完成跨网传输。