通俗讲网络通讯之MAC与IP的关系,只留一个行不行(OSI层面)

本文详细介绍了IP地址和MAC地址在网络通信中的作用和区别。IP地址是互联网协议地址,用于标识网络上的设备,而MAC地址是媒体访问控制地址,标识网络接口卡。两者在网络层和数据链路层的不同以及在OSI模型中的位置。IP地址可以在不同网络拓扑中变化,而MAC地址通常固定。此外,通过ARP协议,IP地址可以转换为MAC地址以实现网络通信。
摘要由CSDN通过智能技术生成

摘抄自互联网。
*IP地址就像家里的门牌号,MAC地址就像你的身份证号,只知道MAC地址是无法知道你在什么位置的,除非是有个超大功率的扩音器,世界上所有人都能听到:你在哪?然后你再用着一个扩音器喊:我在这。然后通信才能这样进行。而IP地址呢?不管你人去了哪?总会有个邮件地址,比如北京市海淀区闵庄路87号一样,很容易就会定位到你的位置。

1. 什么是IP地址

首先,我先为大家介绍一下什么是IP地址,IP地址(Internet Protocol Address)的全称叫作互联网协议地址,它的本义是为互联网上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分。
那么,IP地址分为:IPv4和IPv6。我们这里着重讲的是IPv4地址,IP地址是由32位的二进制数组成,它们通常被分为4个“8位二进制数”,我们可以把它理解为4个字节,它地格式表示为:(A.B.C.D)。其中,A,B,C,D这四个英文字母表示为0-255的十进制的整数。例:192.168.1.1
最初设计互联网络时,为了便于寻址和层次化构造网络,每个IP地址包括两个标识码(ID),也就是网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。

2. 什么是MAC地址

MAC地址(Media Access Control Address)的全称叫做媒体访问控制地址,也称作局域网地址,以太网地址或者物理地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。MAC地址共48位(6个字节)。前24位由IEEE(电气和电子工程师协会)决定如何分配,后24位由实际生产该网络设备的厂商自行制定。例广播地址:FF:FF:FF:FF:FF:FF
MAC地址是啥?MAC地址是MAC(Media Access Control)协议所使用的地址,最早是在以太网中使用的,后来在IEEE中定义的802协议中被广泛使用,但也不是全部。因此,MAC地址只在802协议的网络中才有,MAC协议是数据链路层的子层,并不能说MAC地址就是数据链路层地址。

3.了解OSI模型

接下来,我们先来了解下OSI模型(Open System Interconnection Reference Model),OSI模型是一种概念模型,它是一个标准,一个试图使各种计算机在世界范围内互连为网络的标准框架。
在这里插入图片描述
在OSI模型中的物理层(Physical Layer):它是提供物理链路,传递电信号或者光信号用的,在局域网上传输数据帧(data frame),它负责管理计算机通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。

第二层:数据链路层(Data Link Layer):数据链路层负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。而且此层还负责MAC地址。

第三层:网络层(Network Layer):决定数据的路径选择(数据选路)和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据,例如:IP地址。

第四层:传输层(Transport Layer):它会建立一个安全通道,以防数据丢失。端到端之间的连接建立。把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息,例如:传输控制协议(TCP)等。

第五层:会话层(Session Layer):负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。对会话的控制,保持数据的单向传输,一对一,一对多的控制。

第六层:表达层(Presentation Layer):将我们的信息数据进行加密,进行加密算法;以及数据的转化。信息数据加密、转换、压缩。把数据转换为能与接收者的系统格式兼容并适合传输的格式。

第七层:应用层(Application Layer):起到了调用的作用,提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3.HTML.等。

4.区别

说了这么多的概念,接下来我来总结下IP地址和MAC地址之间的区别:

1、对于网络中的一些设备,路由器或者是PC及而言,IP地址的设计是出于拓扑设计出来的,只要在不重复IP地址的情况下,它是可以随意更改的;而MAC地址是根据生产厂商烧录好的,它一般不能改动的,一般来说,当一台PC机的网卡坏了之后,更换了网卡之后MAC地址就会变了。

2、在前面的介绍里面,它们最明显的区别就是长度不同,IP地址的长度为32位,而MAC地址为48位。

3、它们的寻址协议层不同。IP地址应用于OSI模型的网络层,而MAC地址应用在OSI模型的数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。

4、分配依据不同。IP地址的分配是基于我们自身定义的网络拓扑,MAC地址的分配是基于制造商。一个是主观的,而另一种是可观的。

5. 能否只存其一

想了一个办法,就是把网络划分成很多个子网。这样,在路由的时候,路由器可以把其他子网看成一个整体来进行计算MAC地址的分配是基于制造商。一个是主观的,而另一种是可观的。

举例说明: 我们知道,出于历史的原因,世界上出现了很多的国家和民族,他们都使用不同的语言。
  比如,要和法国人通信就要学会法语,和日本人通信就要学会日语,同理,要学会德语、意大利语、西班牙语。。。
如果每和一个国家通信就要学会对方的语言,那可要累死了。
  所以,最好的办法,就是大家都用1种语言通信。这样只要学会一门外语就可以跟所有的国家通信了。 这种“世界通用语言”可以通过2种途径得到:现成的,和新发明的
  工业革命以后,日不落帝国是世界的中心,其直接继承者美国也是世界的中心,它们都使用英语,于是英语借助其强势地位成为世界通用语言。
  同时,“世界语”也是一种世界通用语言,与英语不同,世界语是“新发明”的语言(当然也借鉴了其它语言的规则),也就是说,没有哪个民族是”世界语民族“,也不可能在某处发现一块1000前的石碑,上刻世界语。。。
  因为没有一个国家的母语是世界语,所以在用世界语交流的时候必须要经过一个“翻译”的过程:把本国语言,翻译成世界语。
  所以我们可以说,世界语是一种"无根"的语言,是一种“不完备”的语言,它必须依赖于其它的语言才能使用,或者说:运行于其它语言之上。
  出于历史的原因,“电脑网络”是从无到有、从小到大发展起来的。
  有很多的网络被发明出来。有些网络只应用于小面积,比如一个家庭,一栋楼房,线路长度按米、百米计算。这类网络叫做“局域网”
   有些网络应用于很大的面积,比如我办理了宽带,这样我和电信公司之间就有一条长达N公里线路,或者电信公司和电信公司之间有长达几十公里的线路。这类网络叫做“广域网”。这些网络各自使用自己的协议(语言),互不兼容(不同的语言相互不能理解), 为了实现网络世界的大一统,让这些互不兼容的网络能够相互通信,从而建立起一个“国际互联网”,就需要大家都用同一种协议通信。
   时势造英雄,这种协议出现了,名叫“因特网协议”(也叫TCP/IP协议)。
  因特网协议就是“网络世界语”,不管你这个网络的私有协议是多么的千奇百怪,对外通信一律都用TCP/IP。因为因特网协议不是这些网络的原生协议,所以各种网络都要有个“翻译”的过程:把本网协议,翻译成因特网协议。
  正如上文所言,世界语不是任何一个民族的“原生语言”,所以大家使用世界语都需要一个翻译的过程。而这个翻译过程,正是MAC地址之所以存在的理由,下文详述。
  在因特网出现之前就已经有很多的网络出现了,而且因特网并不是第一个全球大网(很明显,历史悠久的有线电话网络就是全球大网)
  然后,因特网出现了。
   需要注意的是,因特网诞生之初并没有想到自己会成为一个全球性的大网,所以没有针对全球网络的特点进行设计,这就留下了一些短板(比如IP地址不够,协议有漏洞,想想大名鼎鼎的ARP协议漏洞 。因特网成功以后,这些漏洞被IPV6弥补)。 设计因特网的初衷,是为了应付对苏联的核战争(当时还存在苏联)。
  你可能听说过“恐怖平衡”这个概念,说的是美苏任何一方如果先发制人的向对方发动核战争,对方的核报复也会让自己身处火海,所以谁也不敢首先使用核武器,从而避免了核大战。
  但很明显,只有“棋逢对手”才会出现“平衡”,如果我方“棋高一着”,有能力取得核战争的胜利,那就可以把这可笑的“平衡”扔进太平洋。
  美国国防部(DoD)在思考: 我往苏联扔一颗核弹,苏联的军事指挥通信系统就垮掉了,没有了指挥,再强大的军队也成了无头苍蝇,没有了战斗力。
  可苏联往美国扔核弹,美国也会有同样的结局。
  可是。。。如果我设计一种通信网络结构,这种结构”容灾性“很好、很”健壮“、很”高可用“ ,苏联的1颗核弹灭不了,2颗核弹灭不了,3颗核弹才可以灭。而我1颗核弹就可以灭了它。这样我就有了喘息的余地,我就可能成为核战争的胜利者。 因特网就是在这种思考之下诞生了。
  因特网能抵抗核爆炸?真有这么神奇么?看看图就知道了。
  先说说传统的电话网拓扑:
  电话网是一个典型的星形网络,用户A要给用户F打电话,其路径就是A-K-F
  同理,用户C要给用户G打电话,路径就是C-K-G
   也就是说,任何用户之间要打电话,都必不可免的要经过中央交换机K
  所以你知道为何在打仗的时候,电信局是首要攻击目标了,因为电信局里面放着电话交换机。如果要破坏这个城市的电话网络,我不用派兵挨家挨户砸电话,只要用导弹炸掉电信局的电话交换机,就万事OK了!
  那么该怎样防止这种情况的发生呢?传统的战争理论是这样思考的: 方案A,我隐藏交换机的位置所在,让敌方找不到它在哪。
  但现代战场,天上有卫星,地下有监听,在严密的监视网络面前,想要将自己隐匿起来,已经不容易了。 那就方案B,我在交换机周围布置重兵,建设防御工事,就算你发现了也攻不进来。
  但现代化的武器威力巨大,再加上核武器,再多的人、再坚固的工事也难以抵挡。
   可见由于现代化武器的出现,战争理论也要跟着现代化了。
  于是思想家们开动脑筋,另辟蹊径,在网络的拓扑结构上做文章,改“集中式”为”分布式“,造就出了因特网。
  因特网采取了什么方法避免核心设备被攻击,从而让网络能够在战争中存活更长的时间呢? 方法就是:没有核心设备!
 详见下图:

   可以看到,网络拓扑由星形网络,变成了网状网络。
  这里的每个用户(或称节点)都是一个电话交换机(对于因特网,就是路由器) 此时,如果A和H打电话,那路径可多了: 最短距离当然是A-H,所以优先走A-H。
  但如果A-H断掉了,还可以走A-D-H、A-E-H、A-E-F-B-D-H。。。。
  所以,A-H断了没事、B-C断了没事,C-D断了没事、F-G断了没事。。。 由此可见,网状网络的是一种非常“高可用”的网络,容灾性很好。
   这些节点的地位(功能)都是相同的,不存在某个节点比另外的节点更重要的情况。所以一个节点出了问题,另外的节点就可以取而代之。
  而星形网络就不是这样,很明显中央节点比其它节点更重要,中央节点失效,其它节点无法替代,整网就失效了。
  随着节点数的增加,节点之间的可用线路的数量呈指数方式增加,函数是N*(N-1)/2。
  这个简单的函数可是有很大的威力的,借用网上的一张图:
  相比于星型网络,如果要破坏这样的一张网状网络,又该如何下手呢?
   因特网最初是国防通信网络(APRA-阿帕网),后演变成连接各大学、政府部门和科研机构的教学科研网,最后演变为烧钱的商业化网络。 以上所说的知识面叫做“因特网的体系结构”。
  再说说因特网协议:TCP/IP协议族
  从一开始,因特网就没有想过成为世界性大网,所以因特网的协议从制定之初就是”不完备“的。 也就是说,因特网必须要基于其它网络之上,依靠其它的网络才能完成自身的功能。
  就像是世界语是不完备的,必须要基于其它语言之上,才能实现其自身的功能。
  如果世界语运行于汉语之上,那就写作: 世界语 over 汉语
  比如,已经存在一种局域网技术,叫做”以太网“,那么好,因特网就运行于以太网之上,英文写作: TCP/IP over Ethernet
  注:TCP/IP是专为因特网开发的一系列协议当中的2个协议,因这2个协议最重要(同时也最出名),就用这2个协议代言因特网了。
  还有一种城域网技术叫做“令牌环网 ”,那么好,因特网就运行在令牌环网之上 ,英文写作: TCP/IP over Token-ring
  还有一种广域网技术叫做"ATM",那么好,因特网就运行于ATM之上,英文写作: TCP/IP over ATM
  如果你想要因特网运行于USB呢?自然就是: TCP/IP over USB 。。。。。。。。。。。
  你肯定知道OSI 7层模型,IP、TCP分别对应第三层和四层,因特网协议族并没有覆盖完整的7层 ,很明显,因特网没有定义水晶头的形状、网线里有几根铜线、铜线里面传输的电压是多少等等参数,这些参数是诸如以太网这样的网络定义的。
  那么,为什么因特网不定义这些参数呢?
  上面说了:“也许”从一开始,因特网就没有想到自己会成为一个世界大网,所以就没有定义得这么复杂。
  但也有另一种可能:其实一种网络技术,不一定要“大而全”,从1层到7层全制定,可以只制定其中几层。
  比如以太网只定义1~2层(物理层、数据链路层),IP和TCP分别定义了3、4层(网络层、传输层),再往上既有因特网的协议(比如FTP),也有其它公司的一些高层协议(比如SQL、JPEG、HTTP)
  这样,不同的网络、不同的协议之间相互配合就可以了。
  就像是,我是一家生产火车的厂家,我当然可以生产铁轨,制定铁轨的宽度,生产火车车厢。
  但既然已经有大量的铁轨铺设完毕了,那我就不用管铁轨的事情了,火车运行于现成的铁轨之上就可以了。
  在这里,铁轨就是以太网(局域网)、ATM(广域网)或者其它现存的2层网,火车就是因特网。
  所以,从来不存在“纯粹的因特网”,因为因特网没有定义底层,只存在TCP/IP over XXX。
  经过以上的解释,你就知道为何一定需要MAC地址了:因特网并不存粹,还包括以太网。
  因为因特网是第三层协议,是没有根基的“空中楼阁”,需要以太网这样的2层网具体落地实施,而MAC地址又是2层概念,所以MAC地址就这样进入了因特网的体系结构。
  以太网的MAC地址格式是12个16进制数,比如0800200A8C6D
  因特网IP地址格式是4个点分10进制数,比如192.168.201.160
  刚才说了,不存在“纯粹的因特网”,所以因特网必须要基于以太网之上才能工作,所以就是“同时运行了2个网”
  就像是世界语必须要基于中文之上才能工作,所以就是“同时说了2种语言” 所以,就必须要“翻译” 也就是把因特网的IP地址,翻译成以太网的MAC地址,这就是ARP的作用
  假如我的中文名字叫做“刘涛”,如果要翻译成世界语,就肯定要有个世界语的名字(假设叫LIUTAO)
  同样是名字: 刘涛→翻译成→LIUTAO
  同样是地址: 21-35-6D-1F-83-9E→翻译成→202.143.90.8
  当然了,如果因特网从开始制定之初,就定义了从物理层到传输层的协议,那么因特网就不再依赖于其它任何的网络,这个纯粹的因特网就只需要纯粹的IP地址,网线所插上的也不再是以太网卡,而是“因特网卡”,既然没有了以太网,也就不用什么MAC地址了。

作者:向往美
链接:https://www.zhihu.com/question/21546408/answer/53576595
来源:知乎

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜灼华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值