交换机(数据链路层)
识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应端口记录在自己内部的一个地址表中。
交换机的MAC地址学习功能 ,
设想一个模型,有A,B,C,D这四台PC接在一台交换机上, 首先交换机最初加电时它里面的MAC地址表为空,也就是还没学习,在学习的最初状态. 首先,比如A发给D一个数据, 这个时候交换机首先在连接A那台PC的端口上学习到A的MAC地址,并且把这个MAC地址记录到交换机里的MAC地址表里, 但是这个时候交换机并不知道D是在哪,因为MAC表里还没有D的MAC. 这个时候怎么办呢?交换机会复制多份这个数据(多帧复制),向交换机的所有端口都转发这个数据(除A接的那个端口外),这个称为泛洪,flooding 。当B和C接到这个数据时,首先检查目的地址,发现不是发给我的,那么就丢弃这个帧 . 当D接到这个帧时,发现这是发给自己的,然后D便会发给A数据,这个时候交换机在D的接口又学习到了D的MAC地址 , 这个时候交换机学习到了两条MAC地址。
交换机工作的那层是不不知道什么叫IP地址呢,交换机始终是靠MAC地址找寻的
ARP协议(网络层)
Internet是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。当主机发送一个数据包到另一台主机的过程中 可能要经过多种不同的物理网络。主机和路由器都是在网络层通过IP地址来识别的,这个地址是在全世界内唯一的。 然而,数据包是通过物理网络传递的。在物理网络中,主机和路由器通过其MAC地址来识别的,其范围限于本地网络中。 MAC地址和IP地址是两种不同的标识符。这就意味着将一个分组传递到一个主机或路由器需要进行两级寻址:IP和MAC。需要能将一个IP地址映射到相应的MAC地址。
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。 所谓“地址解析”就是主机在发送帧前将目标网络层地址转换成目标物理地址的过程。在使用TCP/IP协议的以太网中,即完成将IP地址映射到MAC地址的过程——使用ARP协议通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
ARP协议运行过程
在因特网中,数据报传递过程中包括如下步骤:
发送者知道目标端的IP地址
IP要求ARP创建一个ARP请求报文,其中包含了发送方的物理地址MAC地址、发送方的IP地址和目标端的MAC地址与IP地址,目的MAC地址这个时候为全F,因为这个arp是一个广播。全F的MAC地址就是一个广播,因为这个时候A不知道D的mac地址,所以要发送一个广播,通知全部的PC,找寻D的MAC地址 ,怎么发送给全部同网段的PC呢?就是靠全F的mac地址。也叫flooding。
将报文传递到数据链路层,并在该层中用发送方的物理地址作为源地址,用物理广播地址作为目的地址,将其封装在一个帧中。
同一链路中的每个主机或路由器(同一网段上的所有计算机)都接收到这个帧,因为该帧中包含了一个广播目的地址,所有的站点都对报文进行移交,并将其传递到ARP。除了目标机器以外的所有机器都丢弃该报文。目标机器对IP地址进行识别。
目标机器用一个包含其物理地址的ARP响应报文做出响应,并对该报文进行单播。 (经过分析,目的IP是自己的,于是B更新自己的ARP高速缓存,记录下A的IP和MAC。然后B就会回应A一个ARP应答,就是把A的源IP,源MAC变成现在的目的IP和目的MAC,再带上自己的源IP,源MAC,发送给A(单播)。)
发送方接收到一个响应报文,这样它就知道了目标机器的物理地址。更新自己的ARP高速缓存。 那么现在A机中有B的MAC和IP,B机中也有A的MAC和IP。ARP请求和应答过程就结束了。
这样就可以将携带目标机器数据的IP数据报封装在一个帧中,并单播到目的地址。
由于ARP高速缓存是会定时自动更新的,在没有静态绑定的情况下,IP和MAC的映射关系会随时间的流逝而自动消失。因此,在以后的通信中,A在和B通信时,会首先查看ARP高速缓存中有没有B的IP和MAC的映射关系,如果有,就直接取得MAC地址,如果没有就再发一次ARP请求的广播,等待B机再次应答即重复上面动作。
注意:
交换机的学习是交换机自己多帧复制,不是靠广播实现,ARP是PC发送ARP广播。在A的arp表项里会记录D的ip和mac的对应关系
转自:我是李小胖