ARP表、MAC表、路由表的区别和各自作用

文章目录

ARP表、MAC表、路由表的区别和各自作用

拓扑图如下:

同一网络内:

ARP作用: 让发送方知道目标的MAC地址, 不管是发给同一网络内的PC终端还是路由器, 均需要知道对方的MAC地址

ARP表

ARP协议: 2种类型的报文

请求 时是广播 , 响应 时是单播

request - 请求

当PC1作为发送方,PC2作为接收方时:

源MAC地址 已知
源IP地址 已知(假设是PC1: 192.168.1.1)
目标MAC FFFF-FFFF-FFFF(广播MAC地址: 代表网络内的所有节点)
目标IP 已知 (假设是PC2: 192.168.1.2)

当第一次发送时, 路由器是不会接受该数据包的, 因为数据包在解封装时, 会先检查第二层MAC地址, 再检查第三层IP地址, MAC地址符合,但是IP地址不符合,因此,最终只有PC2能够接受该数据包

reply - 响应

PC2回复PC1:

源MAC地址 已知
源IP地址 已知(假设是PC1: 192.168.1.2)
目标MAC 已知
目标IP 已知 (假设是PC2: 192.168.1.1)

PC1会将收到的PC2的MAC地址会存放在自己的ARP缓存表中, PC1的ARP缓存表如下图:

同时PC2也会记录PC1传来的MAC地址,PC2的ARP缓存表如下图:

ARP缓存表有生存时间, 主要目的是为了确保缓存表中的信息是最新的和有效的。

什么样的设备有ARP表: 只要这个设备需要充当发送方或者是接收方时

PC机, 路由器有ARP表

开始时,路由器R1没有PC1的MAC地址:

PC1在ping 192.168.1.254(R1)之后,R1则记录了PC1的mac地址:

每一条ARP记录的生存时间(EXIPRE)如上图 20 min

交换机也可以有ARP表:

只不过是空的, 尽管发送的请求要经过交换机, 但是当给交换机配置了IP地址, PC1去ping之后, 交换机就有了APR表,这里就不展示了

因此, 在同一网络中,只要某个设备充当发送方或者是接收方时,该设备就会有ARP表

MAC地址

在同一网络内,交换机如何工作?

交换机存储的是MAC地址表:

交换机在收到数据帧(Frame)时, 会检查MAC地址表

  1. 有表, 按表转发
  2. 没表, 泛洪(向除源端口其他所有端口发送)

不同网络

路由表

实现跨网络通信需要路由,路由存在路由表里面

当ping另外一个网络的终端时, 本设备可以根据IP和子网掩码判断出目的ip地址是跨网络通信, 因此本设备(主机)也应该有路由表, 其中第一条为默认路由 , 使用route PRINT命令查看本机路由表, 模拟器看不了,只能在本机上查看
注意: 因此并不是只有路由器才会有路由表

配置网关就相当于配置默认路由

不同网络通信流程

PC1在进行跨网络通信时,需要先将包发送给本网络内的路由器, 那PC1是如何知道要发送给路由器的呢? 路由器又是如何知道要将该数据包发送给PC2的呢?

PC1到路由器
  1. 确定目的网络: 当发送数据时, PC1会先检查目的IP地址是否与自己在同一网络
  2. 使用路由表: 当PC1发现是跨网络通信时, 因为给PC1配置了网关==(192.168.1.254), 也就是相当于配置了默认路由(因此主机也是有路由表的==)因此PC1会使用其路由表来确定下一跳将包发送给路由器, 那么问题来了 => 在通信时,发送方要知道接收方的IP地址和MAC地址
  3. 但是现在PC1知道要发送给路由器, 但是现在不知道路由器的MAC地址(默认开始时PC1的ARP表为空)
  4. 解析路由器MAC地址: 因此PC1会发送一个ARP请求广播到本地网络,以获取路由器的MAC地址
  5. 路由器收到APR请求后, 以单播形式发送ARP响应报文给PC1 此时PC1中的ARP缓存表中记录了路由器的MAC地址
  6. 这样PC1就可以构建包含路由器MAC地址的以太网帧,并将数据包发送给路由器,数据包格式如下图:

    其中数据链路层记录了源MAC地址(即主机),目的MAC地址(即路由器), 而网络层记录了源IP地址(即主机),目的IP地址(即PC2),从而将数据包发送给了路由器,接下来就有路由器进行转发即可
路由器到PC2
  1. 路由器接收到数据包后,会查看路由表来确定下一跳地址转发接口, 也就是判断将该数据包发送给哪个网段内的主机。
  2. 确认网段后, 路由器也要先查看ARP表, 看是否有目标ip对应的MAC地址, 如有就进行发送, 没有,则先进行APR广播来获取目标主机的MAC地址, 最后再将数据包发送给目标主机PC2
流程图

PC1->R1 R1->RC2 有 没有 否 有 没有 检查是否同一网络 PC1 ping PC2 ARP缓存中有路由器MAC? PC1 构建以太网帧
包含路由器MAC地址,目的主机IP地址 PC1 发送ARP请求报文 路由器收到后,发送ARP响应报文 PC1 发送数据包到路由器 路由器构建以太网帧
包含PC2的MAC地址 路由器ARP缓存有PC2 MAC? 路由器发送ARP请求
广播获取PC2的MAC PC2 收到后,发送ARP响应报文 路由器转发数据包给PC2 PC2 收到数据包
并回复PC1

简短总结

在同一网络内,为了获取目标的MAC地址,使用ARP协议。ARP通过广播请求和单播响应来实现这一过程。数据封装遵循OSI七层模型,从应用层到物理层依次封装;解封装则相反。首次通信时,设备通过ARP请求学习目标MAC地址并缓存至ARP表中,后续通信直接查表。交换机根据MAC地址表转发帧,未找到记录时采用泛洪方式,并定期刷新MAC表以防止攻击。对于不同网络间的通信,则需借助路由器及其路由表完成跨网传输。

相关推荐
xserver219 分钟前
ensp 基于端口安全的财务部网络组建
网络·安全
从后端到QT2 小时前
boost asio 异步服务器
服务器·网络·tcp/ip
Blankspace学2 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
墨水\\2 小时前
Ansible部署及基础模块
服务器·网络·ansible
手心里的白日梦2 小时前
网络计算器的实现:TCP、守护进程、Json、序列化与反序列化
网络·tcp/ip·json
不吃鱼的羊2 小时前
Excel生成DBC脚本源文件
服务器·网络·excel
言成言成啊2 小时前
TCP与UDP的端口连通性
网络协议·tcp/ip·udp
敲代码娶不了六花2 小时前
对计算机网络中“层”的理解
网络·网络协议·tcp/ip·计算机网络
x66ccff2 小时前
HTTPS如何通过CA证书实现安全通信,以及HTTPS的局限性
网络协议·安全·https
Graceful_scenery3 小时前
https双向认证
服务器·网络·网络协议·http·https