tcp/ip 卷一 读书笔记(3)为什么既要有IP地址又要有MAC地址

网络层

首先明确一点,并不是所有的网络之间传输数据都需要mac地址和ip地址,比如说点对点线路之间的通信就没有MAC地址,网络层使用ipx协议时就没有ip地址,但是在当前的主流网络中,我们都使用ip地址和mac地址

既然mac地址唯一,为什么还要有IP地址?

之前我们提到,mac地址是唯一的,那理论上,在任何两个设备之间,我应该都可以通过mac地址发送数据,为什么还需要ip地址?

mac地址就好像个人的身份证号,人的身份证号和人户口所在的城市,出生的日期有关,但是和人所在的位置没有关系,人是会移动的,知道一个人的身份证号,并不能找到它这个人,mac地址类似,它是和设备的生产者,批次,日期之类的关联起来,知道一个设备的mac,并不能在网络中将数据发送给它,除非它和发送方的在同一个网络内。

所以要实现机器之间的通信,我们还需要有ip地址的概念,ip地址表达的是当前机器在网络中的位置,类似于城市名+道路号+门牌号的概念。通过ip层的寻址,我们能知道按何种路径在全世界任意两台Internet上的的机器间传输数据。

mac地址通常是不变的,ip地址是可变的,尤其是移动设备,ip地址会经常变更。

mac地址的设计不携带设备在网络中的位置信息,想要通过mac地址通信,我们得在所有的设备上维护一张很大的表,记录所有mac地址路由在当前位置的的下一跳,这显然是不合理的。

既然能通过ip地址发送数据,为什么要有mac地址

既然ip地址有位置信息,而且在一个网络中也是唯一的,那么我们为什么不完全通过ip地址通信,抛弃mac地址呢?或者说,合并ip层和mac层的功能。

  • 历史原因
    最初的链路层协议是和ip地址无关的,没有网络层方面的设定,只有物理层和链路层,最初也只有集线器,没有交换机路由器,服务器之间传输数据全靠mac地址。在没有ip地址之前,mac地址已经在使用了。现在到处都在用的二层交换机,就是根据mac地址转发数据。

  • 设计的原因
    现在这样设计是好的设计,链路层的实现不需要考虑数据之间的转发,网络层的实现不需要考虑物层的影响。

也就是说,理论上可行,目前无太大意义,反而有坏处。

posted on 2016-06-07 00:29  张宇飞  阅读(5068)  评论(0编辑  收藏  举报