首页 > 其他分享 >《图解TCP/IP》阅读笔记(第四章 4.4、4.5)

《图解TCP/IP》阅读笔记(第四章 4.4、4.5)

时间:2022-12-04 23:01:59浏览次数:44  
标签:4.5 4.4 IP MTU 分片 路由表 路由 路由器

《图解TCP/IP》

4.4 路由控制

昨儿谈完了IP地址的一部分情况,今天就该聊聊路由控制了。

知道了各小区,每家每户的门牌号是怎么定义的,那接下来就要知道如何走到各家各户门前,再把邮件放入邮箱里了。

联系到现实,就有搬家和不搬家两种。

不搬家的情况,叫做静态路由控制,需要管理员手动设置。

而搬家的情况,则叫做动态路由控制,需要路由器具有与其他路由器相互交换信息、自动刷新的能力。

IP协议始终认为路由表是正确的,即我只负责寄邮件出去,路由表本身是由“路由协议”制作而成。

一个数据包转发的过程如下图所示。根据主机与路由器之间的IP地址,和路由器中路由表记录的下一个路由器的IP地址,最终将数据包发送到目标地址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A4nXHiHz-1669043098565)(2022年11月20日.assets/image-20221120211104790.png)]

简而言之,路由表记录了网络标识(网络地址),和下一步应该发送到路由器的地址。发送数据包时,根据在IP首部中解析到的目标地址,与路由表中的网络地址进行匹配,匹配上了就发送给下一个路由器IP地址。如果存在多条相同网络地址,那么就选择匹配度最高的(指相同位数最多)。

路由表并不适合记录所有的网络和其子网的信息,这样一个是不利于匹配,二是将占据大量的路由器内存,造成无端的浪费(因为实际中根本不会用到那么多)。所以有个默认路由,使得所有的地址都可以与之匹配,就是一个不错的选择。默认了路由一般被记为0.0.0.0/0或者是default

还有一个概念叫做主机路由,通常格式为IP地址/32,意思是32位全部参与路由,就意味着要基于主机网卡上配置的IP地址本身,而不是给予改地址的网络地址部分进行路由。主机路由多用于不希望通过网络地址路由的情况(如果主机路由用的多了,那么会导致路由表膨胀)。

接下来要说的一个概念,在搭建服务器的时候用的很多,那就是环回地址,我更觉得叫本地地址会更加合适一些。127.0.0.1这个地址,将伴随进行流媒体学习道路的我终生。在本地开启服务器状态时,这个具体的数值也可以用localhost来代替。使用这个IP时,数据包并不会流向网络,而是在本地进行环回。

刚刚谈了一些路由类型,那么接下来就要谈谈路由控制表,对于这些路由类型,是如何通过聚合,缩减路由表大小的。

这里有一个例子,红色的部分,原本一共有六条,聚合后就只有两条蓝色的网络地址。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zlhh8RNv-1669043098566)(2022年11月20日.assets/image-20221120213118649.png)]

此处再次谈及到为什么要控制路由表的大小。事实上,可以缩小,是路由表最大的优势(和谁比较?)。路由表越大,管理所需的内存和CPU也就越多,查找路由标的时间也会越长,导致转发数据包的性能下降。构筑大规模,高性能的网络,需要尽可能的减小路由表的大小。

不仅如此,路由聚合可以将一致的路由信息传送给周围其他的路由器,已达到控制路由信息的目的。

4.5 IP分割处理和再构成处理

之前讲过,网络层要应付数据链路层不同时,可传递的MTU大小不同的情况。

所以IP抽象化了底层的数据链路。

例如下图所示,4352字节的数据报无法一次性发送,所以路由器将该数据报划分成了3个分片进行发送。这种分片的处理,全权由路由器决定,如果有必要,就会周而复始的进行(以8字节的倍数为单位进行)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GsiwVOvE-1669043098566)(2022年11月20日.assets/image-20221120223708567.png)]

而分片在重组时,只能有目标主机进行。路由器不会干这事儿。再者说了,啥都让路由器来干,有些欺负器的意思。

那么就必然要考虑一个问题,原本发送一个数据报,现在要发送三个,相当于路由器要给三段数据寻址。刚刚说了,最好别欺负器,因为随着时代的发展,计算机网络的传输速度不断提升,对路由器和网络的传输和数据处理能力要求更高。在安全方面上的处理,也越来越多。所以,如果允许,不希望路由器进行IP数据包的分片处理。

其次,如果一个片丢了,那么整个IP数据报就作废了。这是很不希望发生的。

为了应对以上问题,产生了一种新的技术,叫做“路径MTU发现”,指从发送端到接收端主机之间,不需要分片时,最大的MTU大小,也就是求路径中,所有数据链路中最小的MTU。主机就会按照这个最小值,进行数据发送。使用路径MTU发现,避免了在中途的路由器上进行分片处理,也可以在TCP中发送更大的包。

这个技术工作的原理是:

先将IP数据报分片禁止标志位设置为1.

这样即使遇到需要分片才能处理的大数据包,也不会分片,而是将包丢弃。随后,通过一个ICMP的不可达消息(应该说的是ICMP中消息的某一类吧),将数据链路上的MTU值发给主机。

下一回,由于上一次已经得到了MTU值,所以发送主机会根据这个数值进行分片处理,如此反复,直到数据包被发送到目标主机为止再也没有收到任何ICMP,就可以认为ICMP通知的MTU是一个合适的MTU。

由于网络传输路径不止一条,所以主机会缓存MTU的值,大概10分钟左右。过了缓存期之后,就要根据链路上的MTU再做一次路径MTU发现。

下图是UDP时的情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XuLUof7s-1669043592306)(2022年11月20日.assets/image-20221120225021910.png)]

而当传输协议为TCP的时候,会根据收集到的路径MTU计算出来最大段长度(MSS),然后再根据这些信息进行数据报的发送,就不用再进行IP分片了。

下图为TCP时的情况。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LERz46Mx-1669043592306)(2022年11月20日.assets/image-20221121231231710.png)]

标签:4.5,4.4,IP,MTU,分片,路由表,路由,路由器
From: https://www.cnblogs.com/farewellyi/p/16951113.html

相关文章