TCP/IP网络中,主机和路由器在网络层用IP地址来识别,在数据链路层用物理地址,也就是MAC地址来识别。两台主机在通讯过程中,假设已知道了对方的IP地址,但是网络层数据在经过链路层时还要知道对方的MAC地址。通过IP地址找到MAC地址的过程就是正向地址解析,地址解析协议就是干这事的。
通常地址解析会有将静态影射和动态映射结合。静态映射就是在本机存储一张ARP表,用来存储一部分的IP地址和MAC地址映射。当不知道对方的MAC地址,也就是表中没有存某一个IP的MAC地址的时候,就要用动态映射,也就是通过ARP协议来找相应的MAC地址。ARP协议是只用于同一子网下,只为同一子网下的主机和路由器解析IP为MAC.
假设A要发送IP数据到B,但是A中的ARP表没有B的MAC地址,就会先启用ARP协议,以获得B的MAC地址。
首先, A构造一个ARP查询分组,分组中插入源IP和源MAC,以及目的IP和目的MAC,但是目的MAC事先不知道,要通过查询才知道,所以会在目的MAC字段插入FF-FF-FF-FF-FF-FF, 指示网卡以广播的形式广播到整个子网。这个全1的MAC地址就是MAC广播地址。子网中的机器收到这个广播的帧,检查源IP是否是子的IP,不是就丢掉帧,是则单独给发送查询帧的主机发送一个ARP响应分组,其中就包括了要查询的IP对应的MAC地址,同时A也更新自己的ARP表。这样A就是知道了要查询的MAC地址,IP数据在通过数据包通过数据链路层是将插入查到的MAC,然后将数据发到子网的主机上。
上面讲的是IP数据将数据包发送到同一子网,如果数据包发送到另一个外网,网卡封装是插入的MAC地址,首先插入的路由器的MAC,然后经路由器决定转发到最后的网络,当转发到最后的网络是再次启用ARP查询目的IP的MAC地址,查到之后插到帧中发出去。
交换机的工作原理
这里讲的是链路层的交换机,其他第三层的交换机暂时不涉及。一个普通的局域网是路由上连接一个交换机,交换机中连接多个主机.
交换机的任务就是接受链路层的帧转发到其他的链路上。功能是过滤和转发。过滤就是决定帧是否转发到某个端口还是丢弃掉,转发是决定帧从那个接口出去。这两个功能借助交换机表来完成。
交换机表项
MAC地址 接口 时间 三个字段
交换机的转发分组是基于MAC地址的,那也说明交换机是处在链路层,而路由器是基于IP地址的。
假设目的地址为DD-DD-DD-DD-DD-DD的帧从x接口到达交换机,交换机检查自己的交换机表是不是有这个表项:
1 不存在,交换机就将从其他接口广播出去,也就是没有表项的话,就广播帧
2 存在,但是这个地址和x接口对应,丢弃掉真个帧,过滤掉。
3 这个地址和其他的接口对应,那就从这个接口转发出去。
局域网中多台计算机通过交换机起来,这些计算机之间的通讯,是直接k靠MAC地址直接寻址,发送相应的机器上,不用通过路由器。可以说局域网通讯是基于MAC的,处在同一交换下的机器直接借助交换机的过滤转发帧,实现通讯.
来源:https://www.cnblogs.com/uolo/p/6907187.html