问题可以简化为区域网内可通过mac区分主机为什么还要使用ip地址和掩码?

答:

因为网路协议的分层设计决定了ip层调用mac层(术语叫网路层调用数据链路层)。事实上区域网内不配置ip也是可以通讯的,你电脑的网卡的部分功能就是通过mac找mac,只不过这部分功能封装在网卡驱动里,并不直接对程序员提供可以调用的介面,所以你才不能用。而通过mac找mac的功能只有ip层才能用。当然代码都是人写的,只有你做网卡和路由器相关的设备时,才会接触到ip层和mac层的代码。


mac地址就像你的名字,没法用来「定址」,ip地址就像邮政编码,和「位置」相关,路由器都是用ip来定位目的地


根据OSI的网路模型可以将计算机网路划分为七层

应用层 表示层 会话层 传输层 网路层 数据链路层 物理层

网线属于物理层

而你说的MAC地址属于数据链路层的范畴,只有二层设备才关心MAC地址(如交换机)

IP+掩码的方式可以让计算机知道目标IP是否在区域网内

如果在一个区域网内,那么将通过交换机直接将报文封发到目标地址

如果不在一个区域网内,那么将通过交换机将报文封发到网关进一步传输


1,MAC解决的是一个链路内的问题,IP解决的是跨链路的问题

2,如果你乐意,你可以直接将一个TCP或者UDP报文封装到mac帧里面,而不用中间的ip报文相关封装

3,但是这样,tcp/udp、IP、MAC这三个协议就成了三角关系

tcp/udp与ip要考虑交互

tcp/udp与mac要考虑交互

ip与mac要考虑交互

4,为了简化,tcp/ip协议在实现的时候,就选择了tcp-ip-mac一串下来的结构

tcp/udp与ip要考虑交互

ip与mac要考虑交互

5,这个糖葫芦串,或者一层一层的包皮,在某些特例下看似是复杂了(比如楼主举例),但是放到全局,还是简化了的

一句话攻略:这么设计,是为了tcp、udp等高层协议,只需要考虑和ip协议的对接,而不用考虑和乙太网相关协议的对接


当然可以只用mac地址通信啦,简单来讲mac层的ARP协议包就是单纯用mac地址通信的。

但是,由于多年的计算机网路通信的发展,我们目前主要关注于不但要实现广域网区域网通信,更要考虑传输控制,拥塞控制,通信质量保证,我们也知道mac并没有做这些,所以要想更正确的进行通信需要用到IP层,我们默认规定了完成有质量的通信,并且完成有质量的通信去用IP层,这也是为什么区域网不用mac层,说白了就是,IP已经开发出来了很多必要的功能,没必要再在mac层上再开发一遍。


一个是小网内的标识,一个是大网的标识。

就好比在公司你有个工号,出了公司你就得用身份证。


有了身份证号可以区分每个人了,为什么还需要具体的地址才能找到每个人呢。。。mac地址和IP地址的作用完全不同的。


推荐阅读:
相关文章