不知道大家有没有困惑:为什么有了IP地址,还需要MAC地址呢?
他们之间到底有什么联系?又有什么区别?是不是有一个是多余的?
流言传到了“IP地址”和“MAC地址”的耳朵里,他俩也非常苦恼,今天文档君把话筒递给他们,看看他们怎么说?
PART 01 MAC&IP的自白
MAC地址说:
我是MAC地址,工作在数据链路层,生活在物理网卡上。
我对感情非常专一,从不朝三暮四,这一辈子我的“CP”都是同一块网卡。我们的感情非常稳定,每一块网卡都只有一个独一无二的MAC地址,不像IP地址那样见异思迁。
IP地址说:
我是IP地址,工作在网络层,生活在IP协议簇中。
有人说我是“万花丛中过,片叶不沾身”,经常和不同的设备“组CP”,特别是MAC地址,经常说我见异思迁。
但其实生活不易,我在同一时间也只有唯一的一个“CP”,和这个设备的CP组合到期了,我还没来得及休息一下下,就被安排去和另外一个设备“组CP”了。
停停停!你俩是不是偏题了!
还是让文档君来正经介绍吧!
PART 02 MAC地址是啥?
MAC地址,全称为Media Access Control Address,直译为媒体存取控制地址,又名物理地址、硬件地址。 每个网卡出厂时,厂家都会为其标记全球独一无二的序列号,就像我们的身份证号。
也就是说,MAC地址不是针对设备而言的,而是针对网卡的。 以计算机为例,计算机上有几个网卡,就有几个MAC地址。比如笔记本电脑联网方式同时具备有线和无线两种,网卡也就有有线网卡和无线网卡两个,即存在两个MAC地址。
PART 03 IP地址是啥?
IP地址,全称为Internet Protocol Address,直译为互联网协议地址。
主要用来在互联网中区分不同的联网设备。
IP地址为连入互联网(公网)内的每台设备提供一个独一无二的逻辑地址标识。通过IP地址,我们可以在互联网中准确找到目标设备,并与其建立通信。就像现实生活中网购时填写的收件地址。
IP地址与MAC地址不同的是,为保证网络高效运行,IP地址是动态分配的,也可以人为修改,就好比你可以到处搬家,或者可以去“有风的地方”看一看~
但是MAC地址不可以随意改变,就像你的身份证号,无论你搬到哪里,身份证号都是证明“你是你”的最有效的凭证~
PART 04 IP&MAC区别?
其实MAC地址和IP地址有很多不同,文档君整理了MAC地址和IP地址的区别,让你一眼看懂~
MAC地址 | IP地址 | |
格式 | 003EF3:C9 6个16进制数,用“:”隔开 其中前6位16进制数表示网络硬件制造商的编号 |
196.168.10.10 4个8位二进制数,用“.”隔开 (以应用最广泛的IPv4地址为例) |
地址类型 | 物理地址 | 逻辑地址 |
是否可变 | 正常情况,不可变更 | 可以手动变更,或重新自动分配 |
分配方式 | 固定/静态分配 | 动态/静态分配 |
用途 | 识别网络适配器和设备 | 实现数据传输,确定数据包发送和接收 |
网络层级 | 数据链路层(二层) | 网络层(三层) |
PART 05 为何缺一不可?
简单来说,IP地址和MAC地址产生的目的是方便网络中的设备精准地找到彼此。
沿用前文的例子,我们把MAC地址比作身份证号码,把IP地址比作住址。
如果只有身份证号码(MAC地址),在茫茫人海中肯定找不到你心爱的文档君。
如果只有住址(IP地址),你找到了文档君的家,但是家里具体哪个人是文档君呢?还是无法分清。
但是如果把住址(IP地址)和身份证号(MAC地址)配合使用,就可以先找到省→市→区→街道→小区,再通过身份证号码(MAC地址)就可以很容易地抓到在屏幕前码字的文档君啦。
同理,设备在进行通信的时候,IP地址和MAC地址也是缺一不可。
在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。因为IP地址在一个LAN中是唯一的,但是在不同的局域网中,IP地址可能是相同的,而且IP地址可以手动更改,这就可能导致重复的IP地址。但MAC地址是唯一的,不同的设备上的MAC地址是完全不同的,所以不同的局域网依靠MAC地址来识别不同的设备,从而避免IP地址的冲突。
因此,“IP地址+MAC地址”才是真正的“CP”,他俩配合使用才能确定网络中唯一的一台设备,数据传输才不会出错。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 谈谈linux网络编程中的应用层协议定制、Json序列化与反序列化那些事
一、序列化与反序列化
二、应用层协议如何定制
三、网络通信中数据流动的本质
四、网络版计算器编写linux【网络编程】之协议定制、序列化与反序列化 一、序列化与反序列化 二、应用层协议如何定制 三、网络通信中数据流动的本质 四、网络版计算器编写 4.1 业务流程 4.2 核心代码 一、序列化与反序列化 由于socket api的接口,在读写数据的时候是以…