<讲个故事>为什么IP地址与Mac地址缺一不可?为了方便理解,来讲个故事:再深一点:

IP与MAC

每个人的电话号码或邮箱地址都是独一无二的,所以在我们平时打电话,发邮件的时候,只需要知道对方的电话号码或邮箱即可实现通信.

而理论上,世界上的IP地址和Mac地址也是独一无二的,为什么通信过程中,既需要Mac地址又需要IP地址呢?

简单的讲,是因为网络环境太复杂了.网络通信要经过许多路由器转发信息,才能实现双方的通信.所以才需要ip和mac同时存在.

为了方便理解,来讲个故事:

传纸条

我是昭昭,我处在教室座位的第一排,我想给第五排的小Y同学传一个纸条.但迫于自己胳膊不够长,只能把纸条折三折,在纸条的背面面写上(我是昭昭,帮我把这个纸条传给小Y,谢谢路过小伙伴啦!),

然后我把折好的纸条传给第二排,第二排的小伙伴,看到背面的字(我是昭昭,帮我把这个纸条传给小Y),就把这个纸条传给了第三排,同理,依次后传,最后这个纸条到了第五排的小Y手中.

在上面的故事里:

昭昭等同于发送方ip 小Y等同于接收方ip

由于我的胳膊不够长,就只能借助小伙伴们的胳膊来传纸条,胳膊可以看做Mac地址,不同人的胳膊就是不同的Mac地址(每个人都有两条胳膊,也就是两个Mac地址哟~),

有传纸条经验的人都知道,纸条在传送过程中经过了很多人(的胳膊),而且传送方和接收方(的胳膊)一直在不停地更换,所以换到网络中,也就是在传递过程中,Mac地址一直在变.

总结一下,IP地址负责标记发送方和接收方,而MAC地址负责传输过程中的分段传送,所以二者缺一不可.

再深一点:

传纸条一定要加自己的名字么?

这个,其实吧,如果不加自己名字的话,人家小Y收到后怎么回你呢?

帮忙传纸条的小伙伴是何许人也?

在实际的网络中,这些帮我传纸条的小伙伴们就是网关(可以理解为我们平时家里装的无线路由器).

为什么每个路由器都需要两个mac地址?

因为,收发是两个动作,一个mac负责收,一个mac地址负责发,当然高端的路由器也也可以像哪吒一样拥有三头六臂,也就是拥有大量的网卡.这样的路由器一般性能都很强! 所以说,拥有三头六臂的哪吒最适合传纸条了...

关于TTL:

TTL

在实际的网络中,发送数据要远比传纸条复杂得多,比如,在传纸条的过程中,第四排的是一个新同学,他不知道小Y在第五排,他以为小Y在第二排,就把纸条传到了第二排,然后这个纸条就会一直在第二排与第四排之间循环传递...这种乌龙事件在网络中是有可能发生的,为了避免这种情况,我们会在要传递的数据上,加一个初始值(这个初始值就是大名鼎鼎的TTL,暂定128),每经过一次传递,就将这个值减1,当减到0的时候,就把这个数据包丢掉,不再继续传递,这样就减少了网络资源的浪费.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

一种高效无锁内存队列的实现

Disruptor是LMAX公司开源的一个高效的内存无锁队列。这两天看了一下相关的设计文档和博客,下面尝试进行一下总结。 第一部分。引子 谈到并发程序设计,有几...

94180
来自专栏企鹅号快讯

一次垃圾邮件的分析

本篇文章来自同事对一次垃圾邮件的分析: 上周一(12月4号),朋友给我转发了一封垃圾邮件,邮件里面附带一个word文档,我们俩都是搞信安,自然察觉一丝危险的气味...

23770
来自专栏我就是马云飞

LiveDate和LifeRegistry的协同操作

前言 这个是Android Architecture Components(简称AAC)的第三篇,之前的两篇 文章分别介绍了Lifecycle和ViewMode...

22680
来自专栏Create Sun

基础拾遗------------依赖注入

前言   好久没有写微博了,因为前段时间由于家庭原因决定从工作了3年多的北京转移到上海去。依赖注入在学习net core的时候也有写过类似的东西,只是实践的较少...

384100
来自专栏技术记录

java-FFmpeg(一) 实现视频的转码和截图功能

FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方...

1.9K80
来自专栏静晴轩

Gulp折腾之路(II)

前段时间折腾Gulp,主要是搜寻一些插件,组合之以优化前端开发流程。这段折腾历程除了达成所愿外,给予最大的收获是:只要你想实现某功能,基本就已有对应插件供使用;...

36850
来自专栏腾讯Bugly的专栏

手把手教你如何分析 iOS 系统栈 crash

先上栈,这个 crash 是我们目前开发产品的 top5 crash ? 第一步 对于死在 ojbc _ msgSend 的函数(不仅仅是 msgSend, o...

53980
来自专栏数据之美

Nginx log error:client sent invalid userid cookie

基于日志的统计分析按日志来源一般分为后端 cgi、app 日志和前端 js 挂码日志,其中前端 js 挂码由于与具体后端业务逻辑低耦合、异步加载等特性,使得其在...

46790
来自专栏Play & Scala 技术分享

PlayScala 2.5.x - 实现完全异步非阻塞的流数据导出

29740
来自专栏尚国

深入剖析最新IE0day漏洞

在2018年4月下旬,我们使用沙箱发现了IE0day漏洞;自从在野外发现上一个样本(CVE-2016-0189)已经有两年多了。从许多方面来看,这个特别的漏洞及...

15620

扫码关注云+社区

领取腾讯云代金券