网站首页 > 技术教程 正文
在教计算机网络课程中,经常会碰到这样的问题,为什么需要两个地址:一个是MAC(物理地址),另一个是IP地址。各种解释都有,基本上一个观点就是一个是物理地址,一个是逻辑地址。然而,这样的解释太抽象,什么是物理,什么是逻辑。这些抽象的表述会让人无法理解到其本质。下面我就谈谈这个问题。
要想说明这个问题,首先得说说计算机网络的目标是什么。计算机网络的根本目标就是将数据从一点传送到另外一点。听起来很简单,但是里面包含的意思很多。例如,两个点之间是在同一个网络还是跨网络连接的,如何才能将数据正确的传送到对方,如果出现错误怎么办等等。
为了说明问题的本质,我们首先将问题简化:假设两点在一个网络内。在这种情况下,只需要MAC地址就可以了。例如通过交换机将多台电脑组成一个网络,为了找到对方,必须通过一个地址来标识。就像寄快递一样,如果没有地址,快递员是无法将快递送到对方的所在地的。这就是我们所说的MAC地址。当A点要将数据传递给B点时,会在数据的首部添加B的MAC地址,即目标地址。当然在首部中也有源地址,即发送方的MAC地址,还有其它一些信息,例如用于校验的等等。组装好的这个数据称为帧。然后A点就将帧通过网卡发送出去。
此时交换机收到这个帧后,查找自己的转发表。转发表主要有两列,一列是MAC地址,另外一列是该MAC地址对应的端口。查找的结果只有两种情况:找到或没找到。如果找到就将数据从该MAC对应的端口转发出去。如果没找到,很简单,交换机会把帧向所有端口广播(除了该帧进入的端口),因此肯定会有一个合适的端口收到的。这个广播的方法很粗暴,也很奏效。
这就是MAC地址的作用。MAC地址是刻录在网卡这个物理设备上的,一般是无法改变的。
然而,如果两点不在一个网络内。这时就需要IP地址了。因为IP地址含有两个部分,一个是网络地址,一个是主机地址。因此,通过对方的IP地址,是可以判断出对方是否和本机在一个网络内。如果在一个网络内,如上所述,只需要知道对方的MAC地址即可通信。
如果不在一个网络内,本机的网络层就认为数据应该发送给网关。道理是显然的,如果不在一个网络内,首先得把数据发送出网络才可以。如何发出网络,当然是发给网关,因为网关就相当于网络的门卫。要想把数据发给网关,同样需要知道网关的MAC地址,如何知道网关的MAC地址呢?这就涉及到ARP协议。
电脑缓存里有一张ARP表,该表主要有两列:一列是IP地址,另外一列是MAC地址。这张表不是天生就有的,是随着网卡收到网络中的各种通信数据,不断学习增加的。
话说回来,如果ARP表中有网关IP地址对应的MAC地址,则问题就转化为网内数据发送,上面已经讲的很清楚了。如果ARP表中没有网关IP地址对应的MAC地址,则启动ARP协议,即向网内广播,询问该IP地址的MAC地址。广播询问的结果是网关收到广播后,发现是问自己的MAC地址,所以就回复询问方自己的MAC地址。然后数据发给网关的问题,也转化为网内数据发送,上面已经讲的很清楚了。
大家发现没有,在跨网通信时是需要IP地址的。因为需要通过IP地址来判断是网内通信还是网外通信。有人可能会说,让MAC地址也具有能够区分网络的特征不就可以不需要IP了么。事实上这样做是不实际的。每个网卡出厂时就有一个独一无二的MAC地址,出场时是不可能知道你用它时是在哪一个网络里,也就是天生它就不具有能够区分网络的特性。而且也不需要它具有这种特性。因为MAC只负责设备到设备的通信就够了。这层通信是真正的通信,所以称为物理通信。
而跨网络传输数据时,需要考虑传输的路径,即为了到达目的地,下一跳应该去哪儿,从而一跳一跳的传输到目的地。而网内传输,不需要考虑传输路径,只要发出去一定可以到达。最坏情况下就是通过广播传输也能到达。而跨网络传输时,这一招不灵了。因此,跨网传输时需要考虑网络之间的传输,需要使用能够表示网络特征的地址,即IP地址。所以IP地址是负责网络到网络传输的。
至于发给网关后,下一步发给谁,本机就管不着了。本机只能保证在网络内传输,即下一跳的概念。下下一跳,只能由网关来负责了。其实网关就是路由器的一个接口。网关通过IP地址来确定路由,通过find路由表来 确定下一跳应该去往哪个网络,然后就将数据从连接那个网络的路由器的接口发送出去。发送出去同样要判断目标IP是和当前路由接口的网络是否同一网络。问题又回到上面讲的过程了。所以周而复始。
可见IP地址和MAC地址的概念并不矛盾。他们之间是不同层次的,就像有了领导还必须有群众才可以,谁也离不开谁。数据从一点传到另外一点,要经过几个网络,网络路线是怎样的,需要使用IP地址来解决。而网内传输需要使用MAC地址来传输。可见没有网内真正的通信传输,何以实现网络之间的通信。而如果没有网络路由的路径的话,数据是不可能到达目的地的,因为方向都没有。
如果再往深里挖掘,地址的概念还可以包括网址。就像百度的网址,我们为什么有了IP还需要网址呢?这超过了我们的题目范围,下次再说。
你可以试试IP数据云,可以精准查询IP归属地(最高到街道)、IP应用场景;而且,还能查出哪些是代理IP。
想要查询IP归属地,精确到街道级别的,可以输入网址免费查IP地址→免费IP地址查询 - 全球IP地址定位 - IP数据云,免费测试!
精准识别IP是不是代理IP,是不是真人IP~~
- 上一篇: IP地址和MAC地址有什么区别?分别有什么用呢
- 下一篇: 交换学习笔记1——MAC地址表
猜你喜欢
- 2024-11-25 今天就想给各位分享一个文件,《MAC地址与厂商对应表》
- 2024-11-25 IP地址和Mac地址和主机名
- 2024-11-25 Mac 地址与 IP 地址有什么区别?
- 2024-11-25 科普一下:什么叫MAC地址表溢出,一分钟了解一下
- 2024-11-25 网卡的真正硬件地址MAC
- 2024-11-25 如何通过 IP 地址得到 MAC 地址
- 2024-11-25 计算机网络mac地址作用是什么,mac地址的作用是什么?
- 2024-11-25 通过DOS命令查看MAC地址步骤
- 2024-11-25 ip地址的划分
- 2024-11-25 有了IP地址,MAC地址真的还有必要吗?
你 发表评论:
欢迎- 04-27spring框架怎么实现依赖注入?
- 04-27卸载 Mac 应用程序的 4 种基础方法
- 04-27用户界面框架jQuery EasyUI示例大全之Application
- 04-27win7 64位 server.CreateObject("excel.application")
- 04-27SpringCloud的配置文件bootstrap和application的区别
- 04-27Excel VBA小技巧:用Application.Version判断用户Excel版本
- 04-27JSA宏教程——应用程序(Application)对象事件
- 04-27详解flink 1.11中的新部署模式-Application模式
- 最近发表
-
- spring框架怎么实现依赖注入?
- 卸载 Mac 应用程序的 4 种基础方法
- 用户界面框架jQuery EasyUI示例大全之Application
- win7 64位 server.CreateObject("excel.application")
- SpringCloud的配置文件bootstrap和application的区别
- Excel VBA小技巧:用Application.Version判断用户Excel版本
- JSA宏教程——应用程序(Application)对象事件
- 详解flink 1.11中的新部署模式-Application模式
- 为什么CEO念“C~E~O”,而APP却不能念A~P~P?
- 汇川技术|Inoproshop软件中Application简介及常用功能
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)