跳至主要内容

对网关的理解

网络模型被OSI分成七层,TCP/IP协议大致对应了2、3、4、7层,分别是数据链路层、网络层、传输层、应用层,IP协议处于网络层上,它的工作原理说白了并不复杂:
  1. 整个互联网上所有的机器都有唯一一个IP地址对应。这并没有什么稀奇的,MAC地址也是唯一的,稀奇的在后面
  2. 机器的IP地址按照连接顺序进行了一定程度的分组,这样一个连续的IP段大致都在相同的路线上,这样路由器寻找特定IP地址的时候就方便多了,把整个地址空间分成若干个可能重叠的大段,每个大段一般这样表示:A.B.C.D/n,表示32位IP地址的前n位与A.B.C.D的前n位相同。比如192.168.1.0/24,所有前24位与192.168.1.0相同的都是这个网段的IP,由于IP地址8位一分组,24位就是前三段,也就是192.168.1.x。符合规范的这段连续的IP段就叫做一个子网。这种子网的表示方法叫做CIDR。
  3. 这种表示方法对人来说比较直观,但是计算机有另一种更快速的计算方法,对于A.B.C.D/n,我们构造一个前n位都是1、后面其他位都是0的IP地址,这个32位IP地址和A.B.C.D按位与的结果,就是前n位与A.B.C.D相同而后面其他位都是0的IP地址;如果这个32位IP地址和另一个IP地址与的结果,刚好与A.B.C.D与的结果相等,就说明这个IP地址和A.B.C.D的前n位相等,就说明新IP地址在CIDR范围内。我们把前n位都是1、后面其他位是0的地址也用IP地址的形式表示出来,那么192.168.1.0/24对应的就是255.255.255.0,这个就叫做子网掩码,掩码也就是mask,mask在计算机用语当中表示按位与的操作数,用来从目标数中取出特定的二进制位。也就是说IP+子网掩码是CIDR的另一种表示形式。

对于任意一台计算机或者路由器来说,它首先会有一些本地的链路,这些链路的IP地址都在各自特定的CIDR当中,这个子网叫做链路子网,链路子网中的IP地址都可以通过链路层协议直接访问,具体的访问方法与IP协议无关,在以太网当中是靠ARP,但是如果是WLAN,或者令牌环网,或者PPPoE,又会有所不同。比如子网是192.168.1.0/24,那么范围内所有IP地址都会直接调用链路层协议访问。表现在路由表中,就是这样一项:
192.168.1.0/24 -> link local, ifindex = XXX
即“192.168.1.0/24范围的IP通过XXX网卡的链路层协议直接访问”
如果还有其他链路,也会有相应的表项,比如说还有一个网卡上面的链路子网是111.222.1.0/24,那么就有另一项:
111.222.1.0/24 -> link local, ifindex = YYY
特别的,每个网卡上都会有一个IP地址,是本机的IP地址。当数据包发到这个IP地址的时候,设备就会正确理解“这个数据包是发给我自己的”,否则会理解为“这个数据包需要我代为转发”。这些本机的IP地址一定在链路层子网当中,比如说192.168.1.0/24中本机的IP地址是192.168.1.1,111.222.1.0/24中的IP地址是111.222.1.15,那么就有两个表项:
192.168.1.1/32 -> local
111.222.1.15/32 -> local
到local表示交给本机的更高层的协议栈,比如TCP/UDP去处理。否则会转发到其他机器。
我们注意到这些表项和刚才的表项有重叠的部分,比如说192.168.1.1/32其实包含在192.168.1.0/24里面。路由表的不同表项有不同的优先级,子网越小的越优先,也就是后面n越大的越优先,这样192.168.1.1/32就比192.168.1.0/24优先。

除了这些IP地址以外,其他的IP地址显然是无法直接访问的,需要由其他设备进行转发。不同网段的IP地址可能需要不同的设备进行转发。我们必须在路由表当中记住某段IP具体由哪个设备转发,记录的方法是记住需要转发的IP段CIDR,和需要发往的设备的IP地址,像这样:
100.101.1.0/24 -> via 192.168.1.17
这个via后面的地址,192.168.1.17,这个设备有进一步将数据包转发到目的网段的能力,比如说上面有一个链路层子网就是100.101.1.0/24,或者有另一条路由信息表明这个网段应该进一步发给其他的某个设备。这个设备在IP协议当中就叫做Gateway(网关),因为所有发到目的网段的流量都会从这个设备上经过,这个设备像个门一样,把两个网段连接了起来。
大多数情况下,这个IP地址位于某个链路层子网中,这样本机可以直接通过链路层协议将IP报文发送到网关。一部分设备(主要是硬件路由器)支持递归的路由表配置,这个时候网关地址可以不是本地链路层子网中的地址,当需要将IP报文发送到这个网关时,设备会递归查找网关的路由信息,直到查找到可以直接发送的地址为止。

互联网上的网段太多了,而且天天都在变,我们不可能给每个设备都配上互联网上所有的网段。幸好,对于大部分设备来说,除了特定的少数几个网段以外,大部分IP地址都有相同的网关,于是我们可以通过配置一个包含整个IP空间的CIDR来指定大部分IP地址的共同的网关:
0.0.0.0/0 -> via 111.222.1.254
由于前面说的原则,子网越小越优先,这条规则的优先度最低,而且能匹配所有的IP地址,因此可以理解为无法匹配到其他子网网段时使用的默认规则,因此这个网关一般叫做默认网关。
一个设备可能有多个网关,但是一般最多只有一个默认网关(不考虑等价路由、策略路由等复杂的情况)。也有可能没有默认网关,比如说骨干网上的路由器通过BGP协议交换路由信息,一般路由表就由非常多的CIDR组成,这些CIDR合起来能覆盖互联网上所有的公网IP。

最后说下链路层地址与IP地址。许多链路层协议也有自己的地址,一般是MAC地址,比如最常用的以太网。链路层地址在链路层协议中使用,表明这个链路层报文会被发给谁;而IP地址在IP层协议中使用,表明这个报文最终要发给谁。可以分为两种情况:
1. 直接通过链路层发送:
链路层地址: (源MAC地址) (目的MAC地址)
IP地址: (源IP地址) (目的IP地址)
2. 经过网关转发
从本机出发发往网关时,链路层的目的是网关而IP层的目的不是网关:
链路层地址: (本机源MAC地址) (网关MAC地址)
IP地址: (本机IP地址) (目的IP地址)
网关转发到其他网关:
链路层地址: (网关MAC地址) (下一跳网关MAC地址)
IP地址: (本机IP地址) (目的IP地址)
最后一个网关转发到目标:
链路层地址: (最后一个网关MAC地址) (目的MAC地址)
IP地址: (本机IP地址) (目的IP地址)
在转发过程中,IP报文的源和目的保持不变,链路层地址则只和这一跳的双方有关,甚至如果中间经过了不一样的链路层,还会更换二层数据包的格式。

Popular posts from 产品随想的博客

产品随想 | 周刊 第128期:将时间转化为知识和体验

自行车棚效应:我们为什么在小事上纠结,却对大事视而不见?   https://limboy.me/posts/bike-shedding Benz-Patent   https://www.mercedes-benz.com/en/innovation/milestones/benz-patent-motor-car/ 豐田博物館   https://toyota-automobile-museum.jp/tw/ 值得一去的汽车博物馆 一人公司   https://github.com/cyfyifanchen/one-person-company one-person-company, 一人公司 AI 工具系列 wujiaxian   https://wujiaxian.com/ 可能吧创始人的个人Blog,介绍自己的方式,很值得学习 日本京都10大設計熱點!「建築大師貝聿銘操刀美術館,皆川明設計旅館、選物店,還有全球最美的藍瓶咖啡店舖!」   https://www.elle.com/tw/life/style/g33846398/2020-kyoto-10-hotspots/ 京都真是非常美 Henry L. Stimson   https://en.wikipedia.org/wiki/Henry_L._Stimson?useskin=vector While Kyoto may have satisfied the military criteria for a useful target, Stimson objected, declaring in a meeting if the Interim Committee on June 1, 1945, "...there was one city that they must not bomb without my permission and that was Kyoto." 人性的努力保护了京都 Brooke Astor, 105, Aristocrat of the People, Dies   https://www.nytimes.com/2007/08/14/obituaries/14astor.html 值得尊敬...

BIM江湖演义——ArchiCAD vs Revit

原文 地址 江湖中历来不缺乏传奇。在建筑软件的这片江湖中,风云变幻,豪杰辈出,有两大世家始终屹立不倒——一个来自欧罗巴,名字低调:“图形软件”(Graphisoft),却继承了一身的艺术家气质,手握长剑白衣胜雪;一个来自美利坚,人称“自动桌子”(Autodesk),性格豪放不羁,七种武器样样精通。本文所说的,就是这两大世家的代表人物:ArchiCAD与Revit之间的较量。 这个论题本是老生常谈了,谈到BIM绕不过的就是Revit与ArchiCAD。两者的对比许多帖子都讨论过,但往往大而化之,原则性的东西多,细节的东西少,因此我想再作一次比较,希望能深入一点,具体一点,力争较为全面地反映两者的真实面貌。但这种对比往往两面都不讨好,你懂的,因此本文也多用戏说的语气,我姑妄说之,列位看官也就姑妄听之吧,有不当之处还请多多包涵! 先介绍一下本人对这两个软件的熟悉程度。我用ArchiCAD有4年了,出过几套施工图,都已竣工,编过一系列向日葵图库,颇受好评,对ArchiCAD的认识偏重于施工图;用Revit一年半,出过四个工程的土建及MEP模型,也用其API编了若干插件,对Revit的认识偏重于建模(包括结构及MEP建模)。应该说对ArchiCAD与Revit的认识都算深入了。 当然两者的深度比较是一个庞大的工程,而且个人看法难免有偏见,技术上也多有误解之处,因此希望各位能指正与补充。 1 软件的思想、架构对比 从软件的历史来说,无疑是ArchiCAD悠久得多,Revit是Autodesk在2002年才收购回来的,但Revit有一个强有力的东家,马上推出“BIM”这个很炫的口号,一下把ArchiCAD沿用多年的“虚拟建筑”这个老老实实的口号给打败了,于是ArchiCAD也只好宣称自己是个BIM软件,搞得在外人看来,倒像是Revit占了先机。 从软件设计的角度来看,两者也是差别巨大的。ArchiCAD从20多年前就致力于三维建筑设计,在这方面积累了足够多的经验,多年来也是沿用其架构做一些小更新、小完善、小整合。从我接触的7.0到最新的14.0,感觉比较大的变动就是10.0版整合PlotMaker、12版支持多核计算提升速度、12版新增幕墙工具、13版团队工作大幅改进。在界面上、使用习惯上一直差别不大,这也在一个侧面反映了ArchiCAD软件设计的一个“精英思路”——我本来就...

产品随想 | 周刊 第52期:HP家的Linux笔记本

Products 腾讯柠檬清理   https://github.com/Tencent/lemon-cleaner 腾讯开源,那基本意味着不再维护了...... (据专业人士看,代码写的烂) Teclis   https://teclis.com/ 一个比较窄,但质量非常高的搜索引擎 Ina La Revue Des Médias   https://larevuedesmedias.ina.fr/ 挺小众的法语网站,对于媒体,对于新闻热点的解读,还挺好 Dashy   https://github.com/Lissy93/dashy A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more! 全定制化的看板,非常酷 OpenSnitch   https://github.com/evilsocket/opensnitch OpenSnitch is a GNU/Linux port of the Little Snitch application firewall 好用的Linux网络状态监控软件,帮助盯住不老实的App 这个工具的创作者,Simone Margaritelli,evilsocket,非常高产 emoji-supply   https://github.com/alcor/emoji-supply 把 Emoji 组合成漂亮的壁纸、封面图 Vue Color Avatar   https://github.com/Codennnn/vue-color-avatar 一个纯前端实现的头像生成网站 itty.bitty   https://github.com/alcor/itty-bitty Itty.bitty is a tool to create links that contain small sites Administrative-divisions-of-China   https://github.com/modood/Administrativ...

内网域名访问内网服务器

部门ftp服务器和远程服务器内网域名无法访问问题困扰我好久,钻研了几天,终于明白了一些,和大家做一个分享, 原帖子在这里 ,表示感谢

路由器与交换机区别

交换机和路由器的区别: 1.路由器可以给局域网自动分配IP,虚拟拨号,交换机只是用来分配网络数据的。 2.路由器在网络层,根据IP地址寻址,可以处理TCP/IP协议,交换机不可以。

分布式系统领域的经典论文【转载】

作者:严林  编辑于 2015-05-08 链接:https://www.zhihu.com/question/30026369/answer/46476717 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 分布式系统在互联网时代,尤其是大数据时代到来之后,成为了每个程序员的必备技能之一。分布式系统从上个世纪80年代就开始有了不少出色的研究和论文,我在这里只列举最近15年范围以内我觉得有重大影响意义的15篇论文(15 within 15)。 1. The Google File System: 这是分布式文件系统领域划时代意义的论文,文中的多副本机制、控制流与数据流隔离和追加写模式等概念几乎成为了分布式文件系统领域的标准,其影响之深远通过其5000+的引用就可见一斑了,Apache Hadoop鼎鼎大名的HDFS就是GFS的模仿之作; 2. MapReduce: Simplified Data Processing on Large Clusters: 这篇也是Google的大作,通过Map和Reduce两个操作,大大简化了分布式计算的复杂度,使得任何需要的程序员都可以编写分布式计算程序,其中使用到的技术值得我们好好学习:简约而不简单!Hadoop也根据这篇论文做了一个开源的MapReduce; 3. Bigtable: A Distributed Storage System for Structured Data: Google在NoSQL领域的分布式表格系统,LSM树的最好使用范例,广泛使用到了网页索引存储、YouTube数据管理等业务,Hadoop对应的开源系统叫HBase(我在前公司任职时也开发过一个相应的系统叫BladeCube,性能较HBase有数倍提升); 4. The Chubby lock service for loosely-coupled distributed systems: Google的分布式锁服务,基于Paxos协议,这篇文章相比于前三篇可能知道的人就少了,但是其对应的开源系统zookeeper几乎是每个后端同学都接触过,其影响力其实不亚于前三篇; 5. Finding a Needle in Haystack: Facebook's Photo Storage: ...

李录推荐阅读书单

李录推荐阅读书单 李录在《文明、现代化、价值投资和中国》的最后,列出了他推荐阅读的一些书目。这个书目的含金量非常之高,是培养一个多层次有深度思维很好的参考,特整理如下。 一. 科学、哲学、进化、人类文明史、人类历史 1. 《枪炮、病菌与钢铁:人类社会的命运》,贾雷德·戴蒙德 2. 《西方将主宰多久》,伊恩·莫里斯 3. 《文明的度量:社会发展如何决定国家命运》,伊恩·莫里斯 4. 《群的征服》,爱德华·奥斯本·威尔森 5. 《无穷的开始:世界进步的本源》,戴维·多伊奇 6. 《真实世界的脉络:平行宇宙及其寓意》,戴维·多伊奇 7. 《理性乐观派:一部人类经济进步史》,马特·里德利 8. 《科学发现的逻辑》,卡尔·波普尔 9. 《开放社会及其敌人》,卡尔·波普尔 10. 《自私的基因》,理查德·道金斯 11. 《人类简史:从动物到上帝》,尤瓦尔·赫拉利 12. 《文明》,尼尔·弗格森 13. 《当下的启蒙》,史蒂芬·平克 14. 《心智探奇:人类心智的起源与进化》,史蒂芬·平克 15. A history of knowledge, Charles Van Doren 16. 《神的历史》,凯伦·阿姆斯特朗 17. 《为什么佛学是真实的》,罗伯特·赖特 18. 《思考,快与慢》,丹尼尔·卡尼曼 19. Creating the Twentieth Century, Vaclav Smil 20. Transforming the Twentieth Century, Vaclav Smil 二. 中国文明、历史、文化 1. 《先秦诸子系年》,钱穆 2. 《中华文化十二讲》,钱穆 3. 《史记(白话本)》,司马迁 4. 《白话二十五史精选》,李解民等 5. 《四书章句集注》,朱熹 6. Waiting for the Dawn, William Theodore de Bary 7. 《中国的自由传统》,狄百瑞 8. 《万古江河——中国历史文化的转折和开展》,许倬云 9. 《黄宗羲全集》 10. 《余英时文集》 11. 《思想和人物》,林毓生 12. 《曾国藩全集》 13. 《万历十五年》,黄仁宇 14. 《天安门:知识分子与中国革命》,史景迁 15. The Search for Modern China, 史景迁 16. 《中国官僚政治研究》,王亚南 17. 《中...

产品随想 | 周刊 第130期:集结信徒,而非官僚

On Dyson, techno-centric design and social consumption   https://2earth.github.io/website/20250707.html 如何創造偉大的事物   https://ryolu.notion.site/1610a94b9c108079a95be4362afd4a26 集結信徒,而非官僚 Reflections on OpenAI   https://calv.info/openai-reflections 创业架构 Shui   https://github.com/rock-zhang/Shui 好好喝水 https://www.ghibli.jp/works/ 吉卜力作品的高清图 From Skeuomorphic to Liquid Glass: Apple's Strategic Bet on the Post-Touch Future   https://omc345.substack.com/p/from-skeuomorphic-to-liquid-glass 迄今为止关于苹果Liquid Glass变革的解读,最好的一篇 The Nueva School   https://en.wikipedia.org/wiki/The_Nueva_School?useskin=vector 看起来是很酷的一个学校 The Barbican   https://arslan.io/2025/05/12/barbican-estate/ 史蒂夫·乔布斯希望你阅读的 9 本书   https://www.douban.com/doulist/147158849/ 《禅者的初心》里有句话:“做任何事,其实都是在展示内心的天性,这是我们存在的唯一理由。” Chuck Feeney was one of the greatest philanthropists ever   https://www.gatesnotes.com/Remembering-Chuck-Feeney 慈善家 My new deadline: 20 years to give away virtually all my wealt...

《Becoming Steve Jobs》Chapter 13 Stanford

Steve was a natural performer who elevated business presentations to something close to high art. But what made him fidgety this day was the prospect of addressing the Stanford University graduating class of 2005. University president John Hennessy had broached the idea several months earlier, and after taking just a little time to think it over, Steve had said yes. He was offered speaking engagements constantly, and he always said no. In fact, he was asked to do so many commencement addresses that it became a running joke with Laurene and other friends who had college or graduate degrees: Steve said he’d accept one just to make an end run around them and get his PhD in a day, versus the years and years it had taken them. But in the end, saying no was simply a question of return on investment—conferences and public speaking seemed to offer a meager payoff compared to other things, like a dazzling MacWorld presentation, working on a great product, or being around his family. “If you loo...

写给大家看的中文排版指南

作者:Hindy 原文地址: http:// zhuanlan.zhihu.com/uici rcle/20506092 前言:很遗憾,我们的周围充斥着大量排版丑陋的文章。我国的字体排印与日本、美国等设计强国差距实在太大。我希望能够做些力所能及的小事,让更多人意识到“设计”的价值和其必要性,创造更美好的视觉环境。本文旨在帮助普及、提升大家对文字排版的认识,让大家在平时的学习工作中能有更专业的文字排版素养。 必看人群: 设计师、编辑、作家、撰稿人、教师、学生 目录: 1. 中文排版 1.1 引号 1.2 省略号与破折号 1.3 行首行尾禁则 2. 西文排版基础 2.1 西文撰写基础 2.2 西文标点相关 2.3 斜体的用法 2.4 大小写的区别 3. 中西文混排 3.1 基础原则 3.2 标点相关 1. 中文排版 1.1 引号 我国国家标准要求弯引号,个人建议使用直角引号。 示例:你竟然喜欢“苹果表”? 引号中再用引号使用双直角引号。 示例:我问他,“你竟然喜欢‘苹果表’?” 当引号表示讽刺、反语暗示时,使用弯引号(用法参考“西文排版”部分)。 示例:说真的,我也很 “喜欢”“苹果表”哦。 1.2 省略号(删节号)与破折号 省略号占两个汉字空间,包含六个点。 正确示例:中国设计还有太长路要走…… 错误示例:中国设计还有太长路要走… 破折号占两个汉字空间。 示例:中国设计还有太长路要走──加油罢。 1.3 行首行尾禁则 点号(顿号、逗号、句号等)、结束引号、结束括号等,不能出现在一行的开头。 错误示例: 排版时注意某些 符号不能在行首 ,别弄错了。 正确示例: 排版时注意某些 符号不能在行首, 别弄错了。 开始引号、开始括号、开始双书名号等,不能出现在一行的结尾。 错误示例: 她对我们说:“ 这书太赞了。” 正确示例: 她对我们说: “这书太赞了。” 2. 西文排版基础 2.1 西文撰写基础 句首字母大写。 单词间留空格。 示例:Have a question? 2.2 西文标点相关 点号后加一个空格(如逗号、句号等)。 示例:Hello everyone! Welcome to my blog....