我们先从一个实际问题出发:
小明和小红约好周末去小红家里玩,小红和小明说了他的地址是:杭州市.西湖区.西湖小区.1号。
小明第一次去,他看了下导航,导航显示需要先步行到附近地铁A口,坐地铁到西湖站C口,步行到小红家。
小明第二次去,这时候就不需要导航了,他已经记住了。
同理,两台电脑A、B相互传数据时,电脑A是如何将数据包发送到电脑B呢?
请忽略图中的集线器
在A第一次连接B时,A仅仅知道B的ip地址,并不知道B的MAC地址,那么A能通过B的ip地址找到B吗?
答案是否定的。
因为IP地址是网络层的,类似于小红家,网络层并不负责数据的直接传输。当网络层的数据封装到下一层的数据链路层时,必须依靠着MAC地址来确认下一步往哪里走。
这时候没有B的MAC地址也没有导航怎么办?
聪明的电脑A想到了一种办法,我是用网线的,我传数据的速度非常快,我给连接的所有的电脑都发送下,收到数据的电脑确认下数据里面的IP地址与自己的是否一致,这样就可以成功将数据发送到B了。这种给所有电脑传数据的方式叫做广播。
这里CD都知道这个数据包不是发给自己的,就没有接收
当B接收到A的广播请求时,收到的数据里面有A的IP地址、MAC地址,这样B就可以给A单独发一条数据包。这种方式叫做单播,B也会将A的IP和MAC的映射关系记录在自己的ARP表中
这条单播数据成功到达A,A就知道了B的MAC地址啦。同理A也会将B的IP和MAC映射记录在自己的ARP中
在A第二次连接B时,他的数据就知道如何走了
总结下:
IP地址和MAC的主要区别:
IP地址封装在网络层,他是数据传输的终极地址,可以理解为小红家,当数据包传输过程中路过每一个交换机(理解为地铁站),这些数据在传输的时候只认MAC地址,比如一开始数据出发时,他的IP地址是小红家(杭州市.西湖区.西湖小区.1号)他的MAC地址并不是小红家的MAC地址,而是交换机(地铁站)的MAC地址。
ARP协议:当两台设备第一次交互时,在不清楚目的MAC地址时,通过广播发送请求数据包,当目的IP地址接收到数据时,更新自己的ARP缓存表,单播回应给数据发送者,发送者收到请求,再更新自己的ARP。