草庐IT

【秒懂路由】有了IP地址,MAC地址还有必要吗?

中兴文档 2023-07-17 原文

​不知道大家有没有困惑:为什么有了IP地址,还需要MAC地址呢?

他们之间到底有什么联系?又有什么区别?是不是有一个是多余的?

流言传到了“IP地址”和“MAC地址”的耳朵里,他俩也非常苦恼,今天文档君把话筒递给他们,看看他们怎么说?

PART 01MAC&IP的自白

MAC地址说:

我是MAC地址,工作在数据链路层,生活在物理网卡上。

我对感情非常专一,从不朝三暮四,这一辈子我的“CP”都是同一块网卡。我们的感情非常稳定,每一块网卡都只有一个独一无二的MAC地址,不像IP地址那样见异思迁。

IP地址说:

我是IP地址,工作在网络层,生活在IP协议簇中。

有人说我是“万花丛中过,片叶不沾身”,经常和不同的设备“组CP”,特别是MAC地址,经常说我见异思迁。

但其实生活不易,我在同一时间也只有唯一的一个“CP”,和这个设备的CP组合到期了,我还没来得及休息一下下,就被安排去和另外一个设备“组CP”了。

停停停!你俩是不是偏题了!

还是让文档君来正经介绍吧!

PART 02MAC地址是啥?

MAC地址,全称为Media Access Control Address,直译为媒体存取控制地址,又名物理地址、硬件地址。

每个网卡出厂时,厂家都会为其标记全球独一无二的序列号,就像我们的身份证号。

也就是说,MAC地址不是针对设备而言的,而是针对网卡的。

以计算机为例,计算机上有几个网卡,就有几个MAC地址。比如笔记本电脑联网方式同时具备有线和无线两种,网卡也就有有线网卡和无线网卡两个,即存在两个MAC地址。

PART 03IP地址是啥?

IP地址,全称为Internet Protocol Address,直译为互联网协议地址。

主要用来在互联网中区分不同的联网设备。

IP地址为连入互联网(公网)内的每台设备提供一个独一无二的逻辑地址标识。通过IP地址,我们可以在互联网中准确找到目标设备,并与其建立通信。就像现实生活中网购时填写的收件地址。

IP地址与MAC地址不同的是,为保证网络高效运行,IP地址是动态分配的,也可以人为修改,就好比你可以到处搬家,或者可以去“有风的地方”看一看~

但是MAC地址不可以随意改变,就像你的身份证号,无论你搬到哪里,身份证号都是证明“你是你”的最有效的凭证~​​

PART 04IP&MAC区别?

其实MAC地址和IP地址有很多不同,文档君整理了MAC地址和IP地址的区别,让你一眼看懂~


MAC地址

IP地址

格式

00:16:3E:00:F3:C9

6个16进制数,用“:”隔开

其中前6位16进制数表示网络硬件制造商的编号

196.168.10.10

4个8位二进制数,用“.”隔开

(以应用最广泛的I​Pv4地址为例)

地址类型

物理地址

逻辑地址

是否可变

正常情况,不可变更

可以手动变更,或重新自动分配

分配方式

固定/静态分配

动态/静态分配

用途

识别网络适配器和设备

实现数据传输,确定数据包发送和接收

网络层级

数据链路层(二层)

网络层(三层)

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”,他俩配合使用才能确定网络中唯一的一台设备,数据传输才不会出错。

PART 06测试时间

怎么样,今天又和文档君一起,学到了有用的知识了吧。

那么一起来做个小测验,验证一下学习的成效吧!​

有关【秒懂路由】有了IP地址,MAC地址还有必要吗?的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  3. ruby-on-rails - 如何在 mac os snow leopard 中升级 ruby​​ 和 rails - 2

    我想将我的MacSnowLeopardruby​​从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai

  4. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  5. ruby - 在不使用 RVM 的情况下在 Mac 上卸载和升级 Ruby - 2

    我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案

  6. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  7. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  8. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  9. ruby-on-rails - 验证电子邮件地址是 Paypal 用户 - 2

    我想验证一个电子邮件地址是否是PayPal用户。是否有API调用来执行此操作?是否有执行此操作的ruby​​库?谢谢 最佳答案 GetVerifiedStatus来自PayPal'sAdaptiveAccounts平台会为您做这件事。PayPal没有任何codesamples或SDKs用于Ruby中的自适应帐户,但我确实找到了编写codeforGetVerifiedStatusinRuby的人.您需要更改该代码以检查他们拥有的帐户类型的唯一更改是更改if@xml['accountStatus']!=nilaccount_status

  10. ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1 - 2

    我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/

随机推荐