作者:向往美
链接:https://www.zhihu.com/question/21546408/answer/53576595
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

举例说明: 我们知道,出于历史的原因,世界上出现了很多的国家和民族,他们都使用不同的语言。 比如,要和法国人通信就要学会法语,和日本人通信就要学会日语,同理,要学会德语、意大利语、西班牙语。。。 如果每和一个国家通信就要学会对方的语言,那可要累死了。 所以,最好的办法,就是大家都用1种语言通信。这样只要学会一门外语就可以跟所有的国家通信了。 这种“世界通用语言”可以通过2种途径得到:现成的,和新发明的 工业革命以后,日不落帝国是世界的中心,其直接继承者美国也是世界的中心,它们都使用英语,于是英语借助其强势地位成为世界通用语言。 同时,“世界语”也是一种世界通用语言,与英语不同,世界语是“新发明”的语言(当然也借鉴了其它语言的规则),也就是说,没有哪个民族是”世界语民族“,也不可能在某处发现一块1000前的石碑,上刻世界语。。。 因为没有一个国家的母语是世界语,所以在用世界语交流的时候必须要经过一个“翻译”的过程:把本国语言,翻译成世界语。 所以我们可以说,世界语是一种"无根"的语言,是一种“不完备”的语言,它必须依赖于其它的语言才能使用,或者说:运行于其它语言之上。

出于历史的原因,“电脑网络”是从无到有、从小到大发展起来的。 有很多的网络被发明出来。有些网络只应用于小面积,比如一个家庭,一栋楼房,线路长度按米、百米计算。这类网络叫做“局域网” 有些网络应用于很大的面积,比如我办理了宽带,这样我和电信公司之间就有一条长达N公里线路,或者电信公司和电信公司之间有长达几十公里的线路。这类网络叫做“广域网”。这些网络各自使用自己的协议(语言),互不兼容(不同的语言相互不能理解), 因特网就是“网络世界语”,各种网络都用1种协议:因特网协议(TCP/IP协议族)交流,所以各种网络都要有个“翻译”的过程:把本网协议,翻译成因特网协议。 正如上文所言,世界语是“不完备”的语言,因为大家使用世界语需要一个翻译的过程。 因特网协议也是不完备的协议,其它网络在运行TCP/IP协议族的时候,也需要一个翻译的过程,这就是MAC地址之所以存在的核心要点,下面详述。

在因特网出现之前就已经有很多的网络出现了,而且因特网并不是第一个全球大网(很明显,历史悠久的有线电话网络就是全球大网) 然后,因特网出现了。 需要注意的是,因特网诞生之初并没有想到自己会成为一个全球性的大网,所以没有针对全球网络的特点进行设计,这就留下了一些短板(比如IP地址不够,协议有漏洞,想想大名鼎鼎的ARP协议漏洞 。因特网成功以后,这些漏洞被IPV6弥补)。

设计因特网的初衷,是为了应付对苏联的核战争(当时还存在苏联)。

你可能听说过“恐怖平衡”这个概念,说的是美苏任何一方如果先发制人的向对方发动核战争,对方的核报复也会让自己身处火海,所以谁也不敢首先使用核武器,从而避免了核大战。

但很明显,只有“棋逢对手”才会出现“平衡”,如果我方“棋高一着”,有能力取得核战争的胜利,那就可以把这种可笑的“平衡”扔进太平洋。

美国国防部在思考:

我往苏联扔一颗核弹,苏联的军事指挥通信系统就垮掉了,没有了指挥,再强大的军队也成了无头苍蝇,没有了战斗力。

可苏联往美国扔核弹,美国也会有同样的结局。

可是。。。如果我设计一种通信网络结构,这种结构”容灾性“很好、很”健壮“、很”高可用“ ,苏联的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层模型,因特网协议族并没有覆盖完整的7层 (只定义了第3层和第4层),很明显,因特网没有定义水晶头的形状、网线里有几根铜线、铜线里面传输的电压是多少等等参数,这些参数是诸如以太网这样的网络定义的。 那么,为什么因特网不定义这些参数呢? 上面说了:“也许”从一开始,因特网就没有想到自己会成为一个世界大网,所以就没有定义得这么复杂。 但也有另一种可能:其实一种网络技术,不一定要“大而全”,从1层到7层全制定,可以只制定其中几层。 比如以太网定义了1~2层(物理层、数据链路层),因特网定义了3~4层(网络层、传输层),其它公司定义了5~7层(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种语言” 所以,就必须要“翻译” 也就是把以太网的MAC地址,翻译成因特网的IP地址,这就是ARP的作用 假如我的中文名字叫做“刘涛”,如果要翻译成世界语,就肯定要有个世界语的名字(假设叫LIUTAO)

同样是名字: 刘涛→翻译成→LIUTAO 同样是地址: 21-35-6D-1F-83-9E→翻译成→202.143.90.8

当然了,如果因特网从开始制定之初,就定义了从物理层到传输层的协议,那么因特网就不再依赖于其它任何的网络,这时就不用什么MAC地址了。

IP地址与MAC地址的渊源相关推荐

  1. python获取本机 ip地址、mac地址(物理地址)、计算机名、硬盘序列号、CPU序列号、主板序列号、bios序列号、bios uuid号

    文章目录 python获取本机IP地址.mac地址(物理地址).计算机名 物理地址 计算机名.ip地址 硬盘序列号 CPU序列号 主板序列号 bios序列号 bios uuid号 python获取本机 ...

  2. Ubuntu修改IP地址和MAC地址

    Ubuntu修改IP地址和MAC地址 修改IP和MAC地址以及网关的方法:>  > >  >  sudo ifconfig eth0 192.168.1.2 netmask 2 ...

  3. 组播技术中IP地址到MAC地址的映射

    以太网组播MAC地址 以太网传输单播IP报文的时候,目的MAC地址使用的是接收者的MAC地址.但是在传输组播数据包时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用组播MAC地址. ...

  4. 24c04硬件地址位_一文读懂IP地址和MAC地址有什么区别和联系

    IP地址和MAC地址虽然都叫地址,然而实际上却没有什么联系.先来看看什么是IP地址.MAC地址,在来谈谈他们之前的区别. 定义 一.MAC地址 MAC(Media Access Control或者Me ...

  5. 计算机网络——IP地址与MAC地址

    1.1.1 认识IP地址 IP地址用于在TCP/IP通信协议中标记每台计算机的地址,通常使用十进制来表示,但在计算机内部,IP地址是一个32位的二进制数值. IP地址 网络号 表示其所属的网络段编号. ...

  6. 获取IP地址和MAC地址

    先获取IP地址,再通过IP地址获取MAC地址,Mark一下. //获得IP地址WSADATA wsaData;char name[155];char * ip;PHOSTENT hostinfo;if ...

  7. springboot 获取客户端ip_JAVA如何获取客户端IP地址和MAC地址

    本文介绍了JAVA如何获取客户端IP地址和MAC地址 ,分享给大家,具体如下: 1.获取客户端IP地址 public String getIp(HttpServletRequest request) ...

  8. IP地址与MAC地址的区别

    IP地址是指互联网协议地址(Internet Protocol Address),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个 ...

  9. 解析IP地址与MAC地址

    一.IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP地址,这种写法叫点分十进制格式 ...

  10. Python根据IP地址获取MAC地址

    Python3根据IP地址获取MAC地址(不能获取本机IP,可以获取与本机同局域网设备IP的MAC) main.py #!/usr/bin/env python3 # -*- coding: utf- ...

最新文章

  1. 年终总结,程序员票选最喜欢的编程语言花落谁家?
  2. SimpleDateFormat 详解
  3. HttpSession常见问题
  4. matlab在电力行业中的仿真技术-MATLAB小电流接地系统单向故障仿真分析
  5. src与href属性的区别
  6. 意大利归还中国文物;翟天临咪蒙成考公务员题目;携程回应五一机票涨价;腾讯未成年人网络保护体系上线;这就是今天的大新闻...
  7. jax-rs jax-ws_迟来总比没有好:SSE或服务器发送的事件现在已在JAX-RS中
  8. GDI+图像处理前言
  9. JavaScript 事件:Web 表单如何实现禁用右键、复制粘贴/剪切和输入框自动填充?
  10. 怎么删除已经安装的mysql_怎么样删除已经安装的mysql | wdlinux致力于Linux服务器架构,性能优化.免费CDN加速系统,免费智能DNS解析,负载均衡,集群分流...
  11. vb雅西高速计算机考试,雅西高速沿途风貌车拍八
  12. gRPC python封装深度学习算法教程
  13. oreilly免费电子书
  14. [技巧]如何绕过MaxtoCode的15天限制
  15. Mac OS X 下安装Tableau Desktop Pro for Mac 10.2.0
  16. 延边大学计算机考研专业课考什么,延边大学2021小学教育经验贴
  17. Leveraging Long-Range Temporal Relationships Between Proposals for Video Object Detection论文详读
  18. 怎样应对秋冬季出现的腹泻等肠胃疾病
  19. caffe源码学习:softmaxWithLoss前向计算
  20. 客户端禁止 cookie,session 还能用吗?

热门文章

  1. 【正版软件】威力导演16 LE版 附激活码
  2. Windows ❀ 网络认证
  3. 考研数二第九讲 函数凹凸性证明,求极值以及拐点及渐近线
  4. C语言assert函数完全攻略
  5. 雷达原理笔记之恒虚警概率检测
  6. Turtlebot4快速入门教程-A1激光雷达检测
  7. input自适应高度
  8. 偷个懒,公号抠腚早报80%自动化——2.手撕爬虫定时爬新闻
  9. turtle库函数大全
  10. xhtml和html有什么区别