您的位置:首页 > 其它

有了 IP 地址,为什么还要用 MAC 地址

2016-04-06 14:28 441 查看
为什么要这样设计?交换机为什么不可以处理ip?为什么要分层?

因为交换机只能处理mac地址,不能处理ip地址。交换机工作在二层,只认识MAC地址。

交换机处理mac,路由器处理ip



简单地说两句:

二层是这样工作的:每个接入设备口分配一个地址,一般的星形结构的网络,每台设备发出的数据所有其他设备都能收到,然后根据目标地址看是否是发给自己的。这个地址是谓MAC地址,因为身在最底层,没有设置分配机制或者自动获取机制,每台设备制作的时候固定写在里面,并且确保全球不重复,这样就不会有冲突。

当然后来也就有了交换机,也就是带有存储转发功能的集线器,可以把包存一下,看一看目标地址,然后选择某一条线路发出去。怎么知道哪条线路是哪个MAC?学咯,每条线路发来的包看一下来源地址,然后记到表里面。

二层还要解决多个设备同时发送冲突的问题,要检测,要处理,要重发等等。

三层是这样工作的:每个设备有一个IP地址,也要保证唯一。这个IP地址可以手工分配,也可以通过DHCP获取。手工分配的时候需要注意保证唯一。局域网内想联系一个IP地址,先要知道对应的MAC地址,这时候走二层的ARP全网问一下就可以了。反过来,自己作为新设备想要一个IP地址,要么RARP要一个,要么走基于UDP的DHCP要一个,当然都只限于局域网内。

有了这些底层的东东,每台设备都有了自己的IP地址,这样就可以互相通信。三层的关键在于,有了路由器,路由器用于将不同的网段连接在一起,并对两个网段间的通信进行存储转发。比如A网络10.0.0.0/24,B网络10.0.1.0/24,中间有一路由器隔着,两边的网关都是.1。10.0.0.2要发信给10.0.1.2,那么先看子网掩码,发现不在自己网络内,然后交给10.0.0.1,路由器看到在网络B内,从10.0.1.1发出,然后到达10.0.1.2。

假如这俩网络没有路由器,直接走二层,那么多电脑连在一起,广播包就会占掉大量的网络带宽。

路由器,顾名思义就是要找路用的。比如B网络还用一个路由器连接着C网络10.0.2.0/24,那么A网络一台机器要发包给C网络的一台机器,路由器怎么知道怎么走法呢,于是需要路由协议,路由器之间要说说话,了解一下对方的状态。

再往大了去,就是互联网了。中国的一台电脑要连接美国微软,那么发出的包先到宽带运营商,然后到北京出口,然后觉得现在走欧洲到美国慢,于是转到上海,走海底光缆到了美国,再走旧金山,到西雅图,再到雷德蒙。如果只有MAC地址,是无法支撑起这么大的网络的,你觉得直接访问到MAC地址就行了,问题是你让路由器怎么给你找到路线呢?

所以,对于原题「都只是描述IP是什么,MAC是什么。当数据包到达局域网后,完全可以直接送到对应的IP地址主机,为什么还要询问一下对应IP主机的MAC地址?」

你缺乏网络知识,搞不清NAT的含义,只以为公网就是用IP的,局域网就是用MAC地址的。

如果你本身用的公网IP,那么全部走IP访问即可。如果是局域网多台电脑共用公网出口,那么首先要做的是NAT转换,这个是要在4层TCP和UDP上做的。只在二层无法完成。

你说的东西更像IPv6,这样不需要再做NAT,所有内网设备都可以分配一个IPv6地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: