• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

故事会:网关路由——读《图解TCPIP》

武飞扬头像
豆包君
帮助1

create by db on 2020-10-17 12:55:25
Recently revised in 2020-10-19 14:35:50

闲时要有吃紧的心思,忙时要有悠闲的趣味

目录

前言

返回目录

 最近在看《图解 TCP/IP》,里面有些关于网络协议的概念不是特别了解,正巧看到的一篇很不错的文章,形象地阐释了网络里的抽象概念。特地分享给大家。

网关路由那些事儿

小不点的故事

  假设你叫小不点(本地主机),住在一个大院子(本地局域网)里,有很多邻居(网络邻居),门口传达室有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个伙伴玩,只要你在院子里大喊一声他的名字(ping他一下),他听到了就会回应你,并且跑出来跟你玩。

  但是你不被允许走出大门,你与外界的一切联系,都必须李大爷(网关)用电话帮助你联系。假如你想找你 的同学小明聊天,小明家住在很远的另外一个院子里(小明和你不在一个局域网),他家的院子里也有一个看门的王大爷(小明的网关)。你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS 服务器。于是你在家里拨通了门口李大爷的电话,有了下面的对话:

  小不点:李大爷,我想找班主任查一下小明的电话号码行吗?(DNS 查询

  李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问清楚了小明的电话)问到了,他家的号码是 211.99.99.99(小明家的 IP 地址

  小不点:太好了!李大爷,我想找小明,你再帮我联系一下小明吧。

  李大爷:没问题。(接着李大爷向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家那个院子的王大爷那里,然后王大爷把电话给转到小明家)(路由

  就这样你和小明取得了联系。(建立连接

至于DHCP服务器嘛,可以这样比喻:

  你家院子里的居民越来越多了,传达室李大爷那里的电话交换机已经不能满足这么多居民的需求了(原来伙伴很少,用固定IP),太多了,管不过来,就用DHCP,居民们开机的时候随机得到一个电话号码,每一次得到的号码都可能会不同。每隔一段时间,你租用的这个号码会被收回,下次需要重新得到一个新的。 (这就是DHCP的租约

  • 你家门口的李大爷:就是你的网关
  • 你的班主任:就是你的DNS 服务器
  • 传达室的电话交换机:就是你的DHCP 服务器

同上,李大爷和王大爷之间的对话就叫做路由(routing)

  另:如果还有个小朋友叫做小暗,他住的院子看门的是孙大爷,因为小暗的院子刚盖好,孙大爷刚来不久(新加路由),他没有李大爷和王大爷办公室的电话(李大爷和王大爷当然也没有他的电话),这时会有两种情况:

  1. 居委会的赵大妈告诉了孙大爷关于李、王两位大爷的电话(同时赵大妈也告诉了李、王关于孙的电话),这就叫静态设定路由
  2. 赵大妈病了,孙大爷自己到处打电话,见人就说:"我是小暗他们院子管电话的",结果被李、王二位听到了,就记在了他们的通讯录上,然后李、王大爷就给孙大爷回了个电话说:"我是小明(小不点)他们院子管电话的",这就叫动态设定路由

  然后有一天小不点要找小暗,结果自然是小不点给李大爷打电话说:"大爷,我找小暗"(这里省略了李大爷去查小暗电话的过程,假设他知道小暗的电话),李大爷一找通讯录:"哦,小暗的院子的电话是孙大爷管着的,要找小暗自然先要通知孙大爷,我可以通知王大爷让他去找孙大爷(路由跳转),也可以自己直接找孙,那当然是自己直接找孙方便了",于是李大爷给孙大爷打了电话,然后孙大爷又把电话转到了小暗家。 这里李大爷的通讯录叫做路由表

  李大爷选择是自己直接找孙大爷还是让王大爷帮忙转接叫做路由选择

  李大爷之所以选择直接找孙大爷是有依据的,因为他直接找孙大爷就能一步到位,如果要王大爷转接就需要两步才能完成,这里的"步"叫做"跳数",李大爷的选择遵循的是最少步骤(跳数)原则如果他不遵守这个原则,小不点可能就会多等些时间才能找到小暗,最终结果可能导致李大爷因工作不力被炒鱿鱼,这叫做"延时太长,选路原则不合理,换了一个路由器"

  互联网上的路由表总用这种方式在不停传递,如果哪天中心路由器坏了,那完了,与此关联的很多点会找不到目标,你就上不了网啦。

  当然,事情总是变化的,小不点和小明吵架了,这些天小不点老是给小暗打电话,小明心里想:"操,他是不是在说我坏话啊?"于是小明决定偷听小不点和小暗的通话,但是他又不能出院子,怎么办呢?小明做了这样一个决定:

  首先他告诉自己院里管电话的王大爷说:"你给李大爷打个电话说小暗搬到咱们院子了,以后凡是打给他的电话我来接", 王大爷没反映过来(毕竟年纪大了啊!)就给李大爷打了电话,说:"现在我来管理小暗的电话了,孙已经不管了",结果李大爷就把他的通讯录改了,这叫做路由欺骗

  以后小不点再找小暗,李大爷就转给王大爷了(其实应该转给孙大爷的),王大爷收到了这个电话就转给了小明(因为他之前已经和小明说好了),小明收到这个电话就假装小暗和小不点通信。因为小明作贼心虚,害怕明天小不点和小暗见面后当面问他,于是通信断了之后,又自己以小不点的名义给小暗通了个电话复述了一遍刚才的话,有这就叫数据窃听

  再后来,小不点还是不断的和小暗联系,而冷落了小明,小明心里嘀咕啊:"我不能总是这样以小暗的身份和小不点通话啊,外一有一天露馅了怎么办!"于是他想了一个更阴险的招数:"干脆我也不偷听你们的电话了,你小不点不是不给我打电话吗!那我让你也给小暗打不了,哼哼!",他怎么做的呢?我们来看:

  他联系了一批狐朋狗友,和他们串通好,每天固定一个时间大家一起给小暗院子传达室打电话,内容什么都有,只要传达室的孙大爷接电话,就会听到"打雷啦,下雨收衣服啊!"、"人是人他妈生的,妖是妖他妈生的"、"你妈贵姓"等等,听的脑袋都大了,不听又不行,电话不停的响啊!终于有一天,孙大爷忍不住了,大喊一声:"我受不了拉!!!!",于是上吊昏倒了!

  这就是最简单的DDoS 攻击,孙大爷心理承受能力弱的现象叫做"数据报处理模块有 BUG",孙大爷的昏倒叫做"路由器瘫痪"。如果是我,就会微笑着和他们拉家常,例如告诉他们"我早就听了天气预报,衣服 10 分钟前已经收好了"或者"那你妈是人还是妖"或者"和你奶奶一 个姓"等等,我这种健全的心理叫做"健壮的数据报处理,能够抵御任何攻击",即使如此,小明找一堆狐朋狗友(肉鸡),一样能让孙大爷挂掉。

  孙大爷瘫了之后,小不点终于不再给小暗打电话了,因为无论他怎么打对方都是忙音,这种现象叫做"拒绝服务",所以小明的做法还有一个名字叫做"拒绝服务攻击"(DoS攻击),狐朋狗友多了,就叫分布式拒绝服务攻击DDoS)。 小明终于安静了几天,...

  几天后,小明的院子来了一个美丽的女孩,名字叫做小丽,小明很喜欢她(小小年纪玩什么早恋!)可是小丽有个很帅的男朋友,小明干瞪眼没办法。当然这里还是要遵循上面的原则:小丽是不能出院子的。那个男的想泡小丽自然只能打电话,于是小明又蠢蠢欲动了:

  还记得王大爷是小明院子的电话总管吗?他之所以能管理电话是因为他有一个通讯录,因为同一个院子可能有 2 个孩子都叫小明,靠名字无法区分,所以通讯录上每一行只有两项:

电话 (IP) 门牌(MAC)
1234567 一号门(这个是小明的)
7654321 二号门 (这个是小丽的)

......IP和MAC对应

  王大爷记性不好,但这总不会错了吧(同一个院子不会有2个"二号门"吧)?每次打电话人家都要说出要找的电话号码,然后通过通讯录去院子里面敲门,比如人家说我找"1234567",于是王大爷一比较,哦,是一号门的,他就去敲一号门"听电话",如果是找"7654321",那他就找二号门"听电话"。

  这里的电话号码就是传说中的"IP 地址"

  这里的门牌号就是传说中的网卡的'MAC'地址每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的

  小明心里想"奶奶的,老子泡不到你也别想泡",于是他打起了王大爷通讯录的主意,经过细心的观察,周密的准备,他终于发现王大爷有尿频的毛病(毕竟是老人啊...),终于在一个月黑风高的白天,王大爷去上厕所了,小明偷偷的摸进传达室,小心翼翼的改了王大爷的通讯录......

  过了几天,小丽的男朋友又给小丽打来了电话,对方报的电话是"7654321",王大爷一看通讯录,靠:

电话 (IP) 门牌(MAC)
1234567 一号门 (这个是小明的)
7654321 一号门 (注意:这个原来是小丽的,但是被小明改了)

...

  王大爷不知道改了啊,于是就去找一号门的小明了,小明心里这个美啊,他以小丽父亲的口吻严厉的教训了那个男的和小丽之间不正当的男女关系,结果那个男的恭恭敬敬的挂了电话。当然小丽并不知道整个事情的发生...

  这里小明的行为叫做"ARP 欺骗"(因为在实际的网络上是通过发送ARP数据包来实现的,所以叫做"ARP欺骗"),王大爷的通讯录叫做"ARP 表"

这里要注意:王大爷现在有两个通讯录了,一个是记录每个院子传达室电话的本本,叫做"路由表",一个是现在说的记录院子里面详细信息的本本,叫做"ARP 表"。

  王大爷的制度中有一条是这么写的"每个月要重新检查一下门牌号和电话的对应本(也就是ARP表)",这个动作叫做 "刷新 ARP 表",每个月的时间限制叫做"刷新 ARP 表的周期"。这样小明为了让那个男的永远不能找到小丽,之后每个月都要偷偷改一次那个通讯录,不过这也是不得不做的事!

补充一点,小明是很聪明的,如果通讯录(ARP表)被改成了这样:

电话 (IP) 门牌(MAC)
1234567 一号门 (这个是小明的)
1234567 二号门 (注意:这个被小明改了,但是他一时头晕改错了)

  两个 MAC 对应了一个相同的 IP 地址,计算机就会弹出一个对话框提示"出现重复的 IP 地址",最终会导致王大爷不知所措,于是通知一号门和二号门,你们的电话重复了。这样小丽就知道有人在破坏她的好事,这个现象叫做"骗局被揭穿了"

  小不点知道了小明偷听他和小暗的电话,于是就和小暗约定好了密码。小不点在家里把要说的加密了之后告诉小暗。

密文:

土豆-〉星期三,
地瓜-〉请客,
笨蛋-〉小不点家。

  于是小不点告诉小暗:土豆笨蛋地瓜。小明听了:???不懂。。。。郁闷了。。。这是 加密

  除此之外,小丽也知道了小明改他家的电话号码。于是王大爷就登门一个一个把电话和门牌号记下来。并且藏起来不允许 外人修改,只能自己有钥匙(密码)。这是 ip 地址和 MAC 地址绑定。当有人改了电话号码的时候,就得找王大爷改。麻烦是麻烦了,但是安全了。不过小明偷偷 的把王大爷的钥匙偷配了一把(盗窃密码成功),于是他还可以修改。

ARP 欺骗(补充):

小王、小张都住在一个楼里(A、B 计算机在一个网段),要想找到他们,必须通过门口看门的张大爷(网关),而张大爷记性不好,只是根据小张小王告诉他的:我是小王,我在 A 房来这个纪录,告诉来访者,你去 A 房找小王去吧。正常的情况下,你要找小王,先找到张大爷,然后,张大爷告诉你小王在 A 房间(计算机 A 的地址

假如小张总是跟张大爷说:其实我才是小王…我在 B 房呢

于是你来找小王的时候,张大爷就告诉你了小王在 B 房……结果你把小张当成了小王,你上当了。

这就是 ARP 欺骗的一种情况

还有一种情况就是,小王中了病毒,病毒不停发 ARP 包,告诉小张,我是看门的张大爷,还告诉别人,我就是张大爷,你们要出门,得找我。因为小王不是真正的张大爷,很多看门的活(网关)小王干不了,结果,很多人上不了网或者会去访问不应该去的网站下载病毒,这就是会话劫持

这次有关瑞星 ARP 防火墙的风波,简单理解下,是这样的:

小王为防止 ARP 欺骗,每过一段时间就跟网关张大爷说一次:我是小王,我在 A 房,您别记错了阿…

一会儿,又来说一遍,张大爷说,哦,我知道了。(有事没事来问,烦不烦啊。)

问题出现了:

小王不停的喊:“我是小王,我是小王”,喊啊喊,张大爷快被烦死了;如果楼里所有人都不听的找张大爷说这句话.......张大爷不停回应:“知道了知道了”。恐怕这位张大爷,一直不停说“知道了呢”。这人来人往的,个个都这么折腾这张大爷,传达室(网关)被堵得不行。

1、楼道里人来人往的,正常走路受影响(网速变慢,很多 ARP 数据包传来传去的)

2、这小张,小王,小 XX…等等几十上百的人一起喊啊喊啊的,张大爷就得不停的回答:好,知道咧,还要记录下来,也就没时间做别的事情了阿。(使上联的路由器等网络设备的 cpu 负载满载)

解决办法是什么?

  1. 别让一堆人都对着张大爷喊,在小范围内广播一下。

  2. 别喊的太频繁,时间间隔放长些。

用上面那个方法防范 ARP 病毒和欺骗,某种情况下,是得不偿失的。

对付 ARP 病毒,最彻底的方法,是在交换机端口和本地端口之间进行双向的 IP、MAC 绑定,这实在是体力活。能把网管累个死,防毒很关键哦

读《图解TCP/IP》

返回目录

网络协议分层

网络协议分层 对应OSI分层 相关协议 职责
应用层 医用层/表示层/会话层 TELNET,SSH,HTTTP,SMTP,POP,SSL/TLS,FTP,MIME,HTML,SNMP,MIB,SIP,RTP…… 定义数据格式,并按照对应的格式解读数据。
传输层 传输层 TCP,UDP,UDP-Lite,SCTP,DCCP 定义端口,确认主机上应用程序的身份,并将数据包交给对应的应用程序;
网络层 网络层 ARP,IPv4,IPv6,ICMP,IPsec 定义IP地址,确认主机所在的网络位置,并通过IP进行MAC寻址,对外网数据包进行路由转发;
链路层 数据链路层/物理层 以太网、无线LAN、PPP^(双绞线,无线,光纤…… ) 对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据;

网络模型通信流程

把每层模型的职责串联起来,用一句通俗易懂的话讲就是:

  • 当你输入一个网址并按下回车键的时候,首先,应用层协议对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;然后网络协议加上了双方的IP地址,确认了双方的网络位置;最后链路层协议加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,采用广播方式,通过传输介质发送给对方主机。而对于不同网段,该数据包首先会转发给网关路由器,经过多次转发后,最终被发送到目标主机。目标机接收到数据包后,采用对应的协议,对帧数据进行组装,然后再通过一层一层的协议进行解析,最终被应用层的协议解析并交给服务器处理。

读《图解TCP/IP》

 今天终于蜻蜓点水的将《图解 TCP/IP》看完了,说一下自己的感受吧。

 首先说下定位,这是一本通俗的网络协议入门书籍,适合网络小白阅读。

 书上根据七层网络模型逐层阐述了 TCP/IP 协议族,比较全面。其中详细讲解了 IP、TCP、UDP 等常见协议。用来了解计算机网络相关知识算是个不错的选择。

 本书类似字典,内容略微枯燥,不过插图挺多,辅助理解,还算不错。其中介绍的知识点众多,大都未太深入,部分名词解释不太清楚,需要一边百度一边看……另外,本书出版于 2013 年 7 月(2020 年印刷),部分内容过时(不影响全书质量)。其中关于 HTTP、网络机密略有提及,如要了解的话建议看《图解 HTTP》。总的来说,建议阅读。

 注:网络协议是人设计出来的,用于网络设备之间的交流通信。其设计符合人类的交流习惯,建议以人类的思维去理解网络协议。

 路漫漫其修远兮,与诸君共勉。

参考文档

文档协议

学新通
db 的文档库db 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于github.com/danygitgit上的作品创作。
本许可协议授权之外的使用权限可以从 creativecommons.org/licenses/by… 处获得。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhbfggaj
系列文章
更多 icon
同类精品
更多 icon
继续加载