乙太网或者无线区域网都使用mac地址区分主机,为什么还要正确设置主机ip地址和掩码才能实现主机间通讯?
问题可以简化为区域网内可通过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地址的作用完全不同的。
推荐阅读: