跳至主要内容

对网关的理解

网络模型被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 值得尊敬...

产品随想 | 周刊 第127期:晨光只开一刻钟,但比千年松,并无甚不同

Cherry Studio   https://github.com/CherryHQ/cherry-studio Cherry Studio is a desktop client that supports for multiple LLM providers. Support deepseek-r1 Aalto Repository beta   https://repo.aalto.fi/ Images, sounds and videos from Aalto University 这个系列,价值极高 Nokia Design Archive   https://nokiadesignarchive.aalto.fi/ 芬兰这个国家很了不起 对话影石刘靖康:两代未出现划时代的产品,就会沦为平庸的品牌   https://www.geekpark.net/news/308996 还挺喜欢这个创始人的,有一种海盗的内涵 从哈佛、明星创业者到酷家乐副总裁,苏奇的传奇   https://app.modaiyun.com/mdy/article/3FO4K4W0M259 WHO关于猫狗咬伤、抓伤的处理建议 动物咬伤: https://www.who.int/zh/news-room/fact-sheets/detail/animal-bites 狂犬病: https://www.who.int/zh/news-room/fact-sheets/detail/rabies 关于狂犬病的10个事实: https://www.who.int/zh/news-room/facts-in-pictures/detail/rabies INDIGO 新年直播(2025)   https://www.youtube.com/live/ZIgPvSDGAfY 对2024年AI发展的回顾部分特别好 Artab   https://github.com/get-artab/artab Get Inspired by the World's Greatest Artworks Every Time You Open a New Tab. Extension Available for Chrome, Edge, and...

MongoDB学习笔记

这是我阅读《MongoDB权威指南》的学习笔记,前七章侧重在开发者角度谈MongoDB,后面才是运维管理者角度 一. 理论部分 入门 文档:多个键及其关联的值有序地放置在一起便是文档 集合:一组文档 虽然子集合没有特别的地方,但还是很有用,很多MongoDB工具中都包含子集合 GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据,这样就与内容块分开了 MongoDB的Web控制台通过子集合的方式将数据组织在DBTOP部分 绝大多数驱动程序都提供语法糖,为访问指定集合的子集合提供方便。例如:在数据库shell里面,db.blog代表blog集合,db.blog.posts代表blog.posts集合 在MongoDB中使用子集合来组织数据是很好的方法,在此强烈推荐 数据类型 JSON表现力也有限制,因为只有null,布尔,数字,字符串,数组和对象几种类型, MongoDB保留JSON键值对基础上,增添了其他一些数据类型 使用GridFS存储文件有如下原因: 会直接利用业已建立的复制或分片机制,所以对于文件存储来说故障恢复和扩展都很容易 可以避免用户上传内容的文件系统出现的某些问题 不产生磁盘碎片,因为MongoDB分配数据文件空间以2GB为一块 开发者角度到此为止,下一篇是运维角度的学习

无处不在的监控: Hacking Team:WP8 监控代码分析

原文来自乌云,备份 地址 0x00 背景 最近Hacking Team被黑客入侵,近400GB的资料泄漏,在安全界炒的沸沸扬扬.其中泄漏的资料包括:源代码,0day,资料入侵项目相关信息,相关的账户密码,数据及音像资料,办公文档,邮件及图片。 Hacking Team在意大利米兰注册了一家软件公司,主要销售入侵及监视功能的软件。其远程控制系统可以监测互联网用户的通讯,解密用户的加密,文件及电子邮件,记录各种通信信息,也可以远程激活用户的麦克风及摄像头。其产品在几十个国家使用 在源代码中有各个操作系统平台的远程控制软件源码, RCS(Remote Control System) 。经过我们的分析,发现其监控内容不可谓不详尽。 Android,blackberry,ios,windows,window phone,symbian 均有与之对应的监控代码。 在源码中,rcs为前缀的源码文件是其远控功能,包括代理 控制 监控数据库 隐藏ip 等,而针对特定平台架构的是以core前缀命名。其中和相关window phone监控代码在 core-winphone-master.zip 文件中。其主要用于实时手机系统的系统状态信息如(电池状态,设备信息,GPS地址位置),联系人,短信记录,日历日程安排,照片;同时还能录音,截取手机屏幕,开启摄像头,话筒等功能,由此可见监控信息的详细程度令人害怕。 0x01 WP8监控源码分析 core-winphone-master\MornellaWp8\MornellaWp8 下是其主要核心代码,主要文件如下: 通过观察源码流程图可以看出,整个监控项目源码的逻辑还是比较复杂的,但是深入之后,发现其还是设计的比较巧妙 0x01-1 程序框架分析 1.项目主要分为3大块 Modules,Events,Actions ,主要的功能Modules核心监控代码在此处,Event等待监控事件的到来并调用对应的监控模块,Action主要负责一些行为的启动和停止 程序启动流程如下: main->mornellaStart->BTC_Init->CoreProc->Core->Task setLoadLibraryExW 分支主要负责加载一些API函数的地址,...

产品爱好者周刊 第26期:PRISM, XKeyscore, Trust No One

  Products Gitea - Git with a cup of tea   https://gitea.io/en-us/ A painless self-hosted Git service. 自建Git服务,避免GitHub隐私侵犯 https://github.com/objective-see/LuLu LuLu is the free macOS firewall 监视Mac的出站流量,且阻断 OverSight   https://github.com/objective-see/OverSight OverSight monitors a mac's mic and webcam, alerting the user when the internal mic is activated, or whenever a process accesses the webcam. 监视是否有应用调用Mac的麦克风、摄像头 Mozilla Hubs   https://github.com/mozilla/hubs The client-side code for Mozilla Hubs, an online 3D collaboration platform that works for desktop, mobile, and VR platforms. 开源的多人虚拟空间,Mozilla打造,企业级VR诉求 数字移民   https://shuziyimin.org 关于内容源、工具的推荐,适合刚接入国际的新人 SimpleLogin   https://simplelogin.io/ 匿名邮箱工具,转发用,Michael Bazzell推荐 Telegram 群组、频道、机器人 - 汇总分享   https://congcong0806.github.io/2018/04/24/Telegram/#机器人-bot https://archive.ph/iJMBj 献给那些将来到Telegram的朋友 Design Patrick Wardle   https://www.instagram.com/patrickwardle/?hl=en 他的IG,摄影也精彩,审美...

ifconfig参数备忘

       主要指标说明: eth0/lo:网络接口名 Link encap:网络类型

产品随想 | 读《中国是部金融史》:第三章至第五章

  第三章 犯我货币者,虽强必诛(汉高祖一汉武帝) 刘邦大概没有想到,他的土地政策奠定了此后两千年的社会结构:皇帝是社会最高层,具有至高无上的权力;皇帝之下是三公九即等封建官僚,拿皇帝的钱,逐级管理小农;最底层是万千小农,他们对帝国纳税,用自己的血汗钱养活帝王与封建官僚。此后,中国封建社会结构始终没有摆脱“皇权一封建官僚一小农”这个三位一体的窠臼。 既然消灭了异姓王,正常思维应该是仿效秦始皇强化郡县制,但是这位平民皇帝选择了…条谁也想不到的道路,他分封自己的兄弟子侄为王,并与诸王约定,此后非我子孙称王,天下人都可以杀了他(非刘氏而王者,天下共击之)。刘邦亲眼目睹了秦帝困的分崩离析,危急时刻无人愿意支撑起破败的帝国。华竟,官僚靠薪水吃饭, 就算贪污的本事很大,也没有理由维护别人的一姓天下。 如果没有血浓于水的同姓诸侯王,汉帝国将来同样无法应对真正的危机。事实证明,分封刘氏诸王是对的,如果没有刘邦留下来的同姓诸侯,恐怕汉朝早就得跟着皇后吕雉姓“吕”了。 人们习惯于将刘邦的皇后吕雉称呼为“吕后〞,这是中国古代历史上第一位临朝称制的太后,另外两位要等到盛唐和晚清才能在本书中出镜,三位女强人都是中国货币史上浓墨重彩的人物。 然而,从吕雉开始,仅仅不到一个世纪, 破败的汉帝国就一跃变为当时世界上最强盛的国家,直接把打遍天下无敌手的匈奴骑兵赶到了西欧,让罗马帝国受尽了欺凌。吕后末年,西汉单个农业劳动力的原粮产量已经突破了三干四百斤,这不但是西欧一干五百年后的劳动生产率,也远高于1973年中四的劳动生产率(二千二百四十斤)。应该说,中西文明争霸就是从汉帝国驱赶匈奴开始的,在第一轮交锋中,西欧完败。 ──原来西汉能超过1978年,厉害 吕雉坚决执行了一项前无古人(后有来者)的税收政策—“十五而税一”,换算一下,吕雉时代庶人个人收入所得税税率为 6.6%,而且,没有累进税率。 《二年律令》彻底改变了中国历史的发展轨迹,秦人以军功授田,刘邦以服兵役为代价授田,只有到了吕雉才真正实现了全困范用的“均田“。这是中国历史上第一次以法律形式明确了土地私有制度,每一个最普通的庶人都获得了土地,整个社会实现了孟子的“百亩之田、五亩之宅”理想。这是无数先贤追求的大同世界梦想一“耕者有其田”,请注意,我没有说这是“耕者有其田"的雏形,而是实实在在的“耕者有其田"。 ──对汉朝,充满敬...

常用建筑素材站点

高大上的建筑竞赛效果图中的素材是如何收集的回答,感谢知乎 Vincent Ku 以下是之前搜寻过的素材网站,应该这些够用了 http:// skalgubbar.se/ http:// skalgubbrasil.tumblr.com / http://www. immediateentourage.com/ http://www. gobotree.com/ http://www. mrcutout.com/ http://www. cutoutlife.com/ http://www. nonscandinavia.com/ http://www. escalalatina.com/ http://www. mayang.com/textures/ind ex.htm http://www. textures.com/ ===== 感谢知友 @SJTUboy 补充 http:// maps.stamen.com/# watercolor/12/37.7706/-122.3782 http:// maps.stamen.com/m2i/# toner-background/2000:2000/10/31.1674/121.6063 作者:Vincent Ku 链接:https://www.zhihu.com/question/31584353/answer/73642305 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

The Little MongoDB Book

The Little MongoDB Book 基础 在一个MongoDB实例中可以有若干数据库或一个都没有,不过这里的数据库都是高层次容器,用来储存其他的所有数据 一个数据库可以有若干集合或者一个都没有, 集合由若干文档组成,也可以为空 文档由一个或更多的域组成 索引的意义 游标和以上概念不同,很重要但是常常被忽略,有一点很重要,每当向MongoDB索要数据时,总是返回一个游标 小结一下,MongoDB由数据库组成,数据库由集合组成,集合由文档组成。域组成了文档,集合可以被索引,从而提高了查找和排序的性能。最后,从MongoDB读取数据的时候是通过游标进行的,除非需要,游标不会真正去作读的操作 读到后面觉得实战意义不是很大,就跳过了

产品随想 | 周刊 第126期:Think of your life as a rainbow arcing across the horizon of this world

FolderPaint   https://github.com/MichaelTr7/FolderPaint Folder colour changing application for macOS. 乔布斯说:“对于我和苹果公司的许多人来说,索尼的盛田昭夫是最大的灵感来源之一。我希望我们今天的所想所为能让他会心一笑。” 乔布斯甚至从索尼挖走了一位顶级设计师。哈特穆特·艾斯林格被苹果挖走前,已在 100 多种索尼产品的创造中发挥了重要作用。 供职于索尼时,艾斯林格所在的设计工作室与管理办公室和工厂车间享有同等地位。他说,这样有助于促进公司生产和设计团队之间在一定程度上达成团结,这正是乔布斯试图重建的团结。 艾斯林格指出:“乔布斯有能力洞察事物的好坏,却不知道如何实现以及如何通过组织去构建。因此,我们向苹果提出的第一个建议是,赋予设计师一定的话语权。” 斯卡利表示,乔布斯和盛田之间的深厚友谊和相互敬重可以归结为对于设计的共同热忱。 “他们以非常积极的方式产生了共鸣”,斯卡利说,“两位来自不同文化背景的创始人共聚一堂,这是非常难能可贵的。他们讨论设计原则,却从不谈及商业模式。” “Think of your life as a rainbow arcing across the horizon of this world. You appear, have a chance to blaze in the sky, then you disappear.” City Lights Bookstore   https://en.wikipedia.org/wiki/City_Lights_Bookstore?useskin=vector 旧金山的城市之光独立书店 Vesuvio Cafe   https://en.wikipedia.org/wiki/Vesuvio_Cafe?useskin=vector 好奇怪,这家Cafe居然没有太多的介绍 “One of the things that I was fortunate of was to see and understand the context of San Francisco through the eyes of Steve Jobs,” Mr. Ive said. “He kn...