跳至主要内容

对网关的理解

网络模型被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 产品随想的博客

Interview with Steve Jobs, WGBH, 1990

Interviewer: what is it about this machine? Why is this machine so interesting? Why has it been so influential? Jobs: Ah ahm, I'll give you my point of view on it. I remember reading a magazine article a long time ago ah when I was ah twelve years ago maybe, in I think it was Scientific American . I'm not sure. And the article ahm proposed to measure the efficiency of locomotion for ah lots of species on planet earth to see which species was the most efficient at getting from point A to point B. Ah and they measured the kilocalories that each one expended. So ah they ranked them all and I remember that ahm...ah the Condor, Condor was the most efficient at [CLEARS THROAT] getting from point A to point B. And humankind, the crown of creation came in with a rather unimpressive showing about a third of the way down...

《逢いたくていま》──仁医主题曲

原始链接: 听歌学日语 | 唱哭很多人的《逢いたくていま》 あ いたくていま - MISIA 现在好想见你- MISIA 初 はじ めて 出会 であ った 日 ひ のこと  覚 おぼ えてますか 第一次相遇的那天 你是不是还记得呢?   過 す ぎ 行 ゆ く 日 ひ の 思 おも い 出 で を  忘 わす れずにいて 那些过去日子的回忆 我一直没有有忘记   あなたが 見 み つめた  全 すべ てを  感 かん じていたくて 凝视着你 这一切的全部 我都想要感觉   空 そら を 見上 みあ げた 抬头仰望天空   今 いま はそこで  私 わたし を  見守 みまも っているの? 你到现在是否还在那里守护着我?   教 おし えて… 请你告诉我 今 いま   逢 あ いたいあなたに 现在好想见你 伝 つた えたい 事 こと がたくさんある 有好多想要告訴你的事情   ねえ  逢 あ いたい  逢 あ いたい 呐 好想见你 好想见你   気 き づけば  面影 おもかげ   探 さが して  悲 かな しくて 如果能注意到的话 你的面容 是在寻找着 还是悲伤着 どこにいるの?  抱 だ きしめてよ 到底在哪里呢? 好想抱紧你 私 わたし はここにいるよ ずっと 我 会一直在这里 一直等你 もう 二度 にど と 逢 あ えないことを  知 し っていたなら 如果能早点知道 已经再也无法相见   繋 つな いだ 手 て をいつまでも  離 はな さずにいた 我会牵在一起的手 永远都不会放开   『ここにいて』と そう 素直 すなお に  泣 な いていたなら 如果当初诚实哭泣地告诉你『留在我身边』的话   今 いま もあなたは  変 か わらぬまま 现在的你是否也依然不变地   私 わたし の 隣 とな りで ...

Bob Dylan – Facts. NobelPrize.org

  When I first received this Nobel Prize for Literature, I got to wondering exactly how my songs related to literature. I wanted to reflect on it and see where the connection was. I’m going to try to articulate that to you. And most likely it will go in a roundabout way, but I hope what I say will be worthwhile and purposeful. If I was to go back to the dawning of it all, I guess I’d have to start with Buddy Holly. Buddy died when I was about eighteen and he was twenty-two. From the moment I first heard him, I felt akin. I felt related, like he was an older brother. I even thought I resembled him. Buddy played the music that I loved – the music I grew up on: country western, rock ‘n’ roll, and rhythm and blues. Three separate strands of music that he intertwined and infused into one genre. One brand. And Buddy wrote songs – songs that had beautiful melodies and imaginative verses. And he sang great – sang in more than a few voices. He was the archetype. Everything I w...

产品随想 | 周刊 第101期:木叶飞舞之处,火亦生生不息

How to Install Fonts on Linux: A Comprehensive Guide   https://linuxiac.com/how-to-install-fonts-on-linux/ 在伊丽莎白一世的时代的英国,如果人们想要盗版剧本,就会派一个速写很快的人去看剧,那个人就会偷偷用速写把剧中所有的台词都记录下来。然后根据这些台词,几个看过这部戏剧会一起把这部戏剧中发生的一切都誊写下来。这种盗版剧本是很多戏剧现今存下来的唯一记录。 看到一个大爷总结普通人的一生:盛世之牛马,乱世之炮灰。 在现代晚期之前,总人口有九成以上都是农民,日出而作、胼手胝足。他们生产出来的多余食粮养活了一小撮的精英分子:国王、官员、战士、牧师、艺术家和思想家,但历史写的几乎全是这些人的故事。于是,历史只告诉了我们极少数的人在做些什么,而其他绝大多数人的生活就是不停挑水耕田。 模拟时代的黑胶与磁带   https://sspai.com/post/81162 黑胶与磁带来承载声音,手机照片来承载画面,视频来承载动态影像 一家店需要怎样的 BGM   https://mp.weixin.qq.com/s/F_CluKDRSswDeSMIxKWRFA 我们喜爱音乐,是因为音乐里,能体现出心意 ONE REVOLUTION PER MINUTE - a short film by Erik Wernquist   https://www.youtube.com/watch?v=iiPmgW21rwY 他有人生最可宝贵的一个德性:一种永久新鲜的好奇心,不会给时间冲淡而是与日俱增的。他没有相当的才具来利用这天赋,但多少有才具的人会羡慕他这种天赋!大半的人在二十岁或三十岁上就死了:一过这个年龄,他们只变了自己的影子;以后的生命不过是用来模仿自己,把以前真正有人味儿的时代所说的,所做的,所想的,所喜欢的,一天天的重复,而且重复的方式越来越机械,越来越脱腔走板。 ——《约翰.克里斯多朵夫》 【张一鸣】:《活法》、《少有人做的路》、《高效人士的七个习惯》、《基础生物学》对我影响比较大。 Consumer Electronics Hall of Fame   https://spectrum.ieee.org/special-reports/...

SU小技巧——秒出90°轴测图

 原文首发于角落工作室公众号,转载于 建筑学院 ,在此表示感谢 轴测图在分析图的使用中非常有用,尤其是90°的轴测图,可以和旋转过的平面图完美契合,非常适合用于分析图的制作。 那么如何设置才能导出90°的轴测图呢? 先来看看最终效果图 我们都知道SU中可以通过设置“相机”—“平行投影”来取消透视,但是无法设置轴测角度,通过下面教程的设置,可以交给大家如何设置90°轴测图。 模型原图, ↑画一个正方形 ↑把这个正方形做成群组 ↑旋转45°,在平面模式 ↑然后给这个正方形一个厚度,厚度多少随意。 ↑然后以侧面的下脚点为轴,向上旋转45°。听起来很复杂,看图很明白 然后在“相机”里选“平行投影” ↑进入我们制作的长方体里,右键单击最上面的面,选择对齐视图。 ↑我们就得到了这个45-90-45的轴测图,删掉之前做的辅助立方体,我们还有一步工作要做。 ↑拖进PS,选择“图像”—“图像大小” 解锁掉宽度和高度中间的小拉锁,然后把高度乘以1.41 比如我这张图是669,就改成964,为什么要乘以1.41,因为是1:根号2的关系。呃,具体关系大家自行脑补。 ↑这样就OK了。 利用轴测图,我们可以进行分析图及复古风格图的PS,这就是下次的教程内容了,先贴一个预告图片

子网掩码和网关

零碎知识点 网关地址是具有路由功能的设备的IP地址 CIDR=IP + mask  是CIDR另一种表现形式 mask在计算中表示按位与的操作数,用来表示从目标中取出特定的二进制位 ARP表 路由表 理解子网掩码 59.78.40.110 59.78.40.126 255.255.255.128 59.78.39.162 59.78.39.254 255.255.255.0 59.78.42.41 59.78.42.254 255.255.255.0 协议作用 TCP/IP检测作用在2,3,4,7层 作用在1,2层:以太网,无线LAN,PPP...... 作用在3层:ARP, IPv4, IPv6, ICMP, IPsec 作用在4层:TCP,UDP,UDP-Lite,SCTP,DCCP 作用在5,6,7层:TELNET,SSH,HTTP,SMTP,POP,SSL/TLS,FTP,MIME,HTML,SNMP,MIB,SIP,RTP......