1.当年设计IP地址的目的是什么呢?
当年设计出IP地址就是因为随着网络中的设备逐渐增多,人们发现路由(也就是寻找数据包从发送方到接收方的路径)变得越来越困难了,于是人们想了一个办法,就是把网络划分成很多个子网。这样,在路由的时候,路由器可以把其他子网看成一个整体来进行计算。对于目的地在其他子网的数据包,路由器只需要让数据包到达那个子网即可,而剩下的工作由子网内部解决。虽然这种方法只能让寻找到的路径接近最优而不保证最优,不过它大大减少了路由器的计算量,利大于弊,所以被采用了。
2.那么为什么我们需要IP地址呢?
因为如果我们只用MAC地址的话,我们会发现路由器需要记住每个MAC地址所在的子网是哪一个(不然每一次收到数据包的时候路由器都要重新满世界地去找这个MAC地址的位置)。而世界上有248个MAC地址,这就意味着即使我们给每个MAC地址只留1字节的储存空间,每个路由器也需要256TB的内存!这显然是不可能实现的。这就是我们需要IP地址的原因了。和MAC不同的是,IP地址是和地域相关的。对于位于同一个子网上的设备,我们给他们分配的IP 地址前缀都是一样的,这个前缀就像邮政编码一样。这样,路由器过IP地址的前缀就能知道这个设备在哪个子网上了。现在,路由器只需要记住每个子网的位置即可,大大减少了路由器所需要的内存。
3.既然IP地址不能去掉,那么能不能去掉MAC地址呢?
也不能。因为IP地址是要设备上线以后才能根据他进入了哪个子网来分配的,在设备还没有IP地址的时候(或者分配IP地址的过程中),我们还需要用MAC地址来区分不同的设备。
总之,MAC地址就像自己的ID号,而IP地址就像带着邮政编码的住址,有各的用途。所以我们需要两个地址,缺一不可。
补充1:ARP协议仅适用于局域网吗?
ARP协议只对它的下一个要连接的设备MAC层进行访问,同在一个局域网内的主机可以直接访问MAC层;但是对于不同网络中的主机,就需要IP转发,ARP只与转发的路由器的MAC层进行对话,告诉源主机该路由器的MAC地址,好让IP数据包进行选路转发。就像这样,ARP只对和它直接相连的主机的硬件网口进行通信,若要多跳,则每跳之间会有自己的ARP进程运行,互不干扰。
补充2:ARP攻击是不是只能在局域网中?
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。