网络层3——IP数据报转发的过程

目录

一、基于终点的转发

1、理解

2、IP数据报转发过程

二、最长前缀匹配

1、理解

2、主机路由

3、默认路由

三、二叉线索查找


一、基于终点的转发

1、理解

理解什么叫终点转发

IP数据报的传递,交给路由器后

可不可以做到直接发送给目的主机呢?

可以,直接将目的主机的IP地址存放在路由表即可

技术上是可行的

但是,成本太大

为什么?什么成本?

中国有20亿个主机,包括手机和PC端,不过分吧

我现在在北京,我要向任何一个人发送消息

而且要只经过一个路由器

那么,这个路由器就必须存放全中国所有的IP地址才可以,即存20亿个IP地址,

存的成本、查找的成本很大

所以,需要多个路由器分摊,对应的,网络需要划分

这就是为什么网络采用如今设计构架的本质原因

纯粹就是因为跨区域太大,需要进行多层级的资源整合和设计

用合理的构架适当降低成本,以技术成本换取经济成本

再高明的技术,如果经济成本过高,那么规模势必不会大

一个最简单的例子就是航天

所以,

IP层数据的转发,并不是直接发给目的主机,而是以终点网络为目的。

一个IP数据报:有源主机IP地址、目的主机IP地址

路由器根据目的主机的IP地址所在的网络地址,发送给对应网络

路由表只需存放各个网络号地址即可

这就大大缩小了转发表的负担

这就是基于终点的转发

2、IP数据报转发过程

首先看,目的主机是否在本网络

怎么看?

路由器的转发表的第一个网络号就是本网络

用目的主机IP地址和转发表第一个网络号的地址掩码进行计算

得到目的主机IP地址的网络号,如果匹配,相等

那很简单,直接交付

直接在本网络广播,找到主机,目的主机返回MAC地址,发送端封装MAC帧,发送

如果不在本网络

依次顺着路由器的转发表

逐个计算网络号,直到匹配,

而后路由器根据目的网络转发

查找转发表的过程,叫做寻找网络前缀匹配

二、最长前缀匹配

1、理解

最长前缀匹配:谁的网络号长,就匹配谁

什么意思?

举个例子,下面有一个场景:

有一个分组,128.1.24.1到达一个路由器

路由器连接2个网络,分别是A公司和B公司

A公司的网络号是:128.1.24.0/24

B公司的网络号是:128.1.25.0/24
128.1.26.0/24
128.1.26.0/24

B公司将25、26、27进行聚合,形成:

128.1.24.0/22

于是,路由器的路由表存放两个网络号:

128.1.24.0/22
128.1.24.0/24

但是,经过计算,你会发现:

128.1.24.1两个网络号都匹配!

但是,很明显,该IP地址是不属于B公司的

所以,给谁?

给A

虽然网络前缀都一样,但是A的网络前缀有24位,B只有22位

这就是最长前缀匹配

为什么?

因为网络前缀越长,说明越具体

于是,在安排网络号前缀在路由表的顺序时

可以将最长的放前面,依次往后

2、主机路由

对特定主机,专门给出一个单独的路由

就是把主机的IP地址直接写在转发表中

该网络号前缀为32位

此时,只要目的地址是该特定主机,

目的IP地址和网络前缀32个1做与

结果一定匹配,直接转发

特定主机路由放在路由器的第一行

用处?

检查网络连接 / 转发表

例如,我要检查A->B主机的某个特定路线

我就可以主机路由,进行特定路线转发

然后逐个排查

3、默认路由

0.0.0.0/0

网络号全0,网络前缀为0,所以地址掩码为32位全0

此时,任何IP目的地址和32位全0做与运算

结果必定是0,于是匹配

综上,一个转发表的内容,有如下:

第一行:特定主机路由(可有可无)

第二行之后:前缀最长的网络号

最后一行:默认路由

一个IP数据报在路由器的查找表过程:

1、拿到目的主机IP地址

2、从上到下,逐个匹配网络号

注意:最长前缀匹配问题,只会发生在CIRD网络分配

而不会在分类地址中发生

同时,在转发表中,不会出现两行或两行以上都匹配的情况

上述的查找转发表的过程,是顺序查找

从上往下逐个进行

最坏结果是从上到下一个都没有查找

效率很低

于是,为了提高转发表的查询效率,

需要借助新的数据结构

支撑新的查找算法

下面介绍基于二叉树结构的前缀二分查找

三、二叉线索查找

二叉树,左边为0,右边为1

一个IP地址32位,从上到下,即使网络前缀有32位,最多也就是查询32次

效率很高,首位为1 ,往右边;为0,往左边

直接砍一半减少了 2^31次比较

每一个节点代表一个唯一的前缀

相关推荐
码完就睡7 分钟前
Linux——以太网协议
运维·服务器·网络·1024程序员节
CV爱数码25 分钟前
论文精读|RED-CNN:残差编解码网络,低剂量 CT 去噪的经典基线
网络·人工智能·算法·cnn·ct·重建·x-ray
星恒讯工业路由器31 分钟前
Modbus透传和Modbus网关有什么区别?从字节转发到协议翻译的选型思路
网络·物联网·modbus·工业物联网·工业网关·rs485·协议转换
李&@杰1 小时前
交换机PoE供电不足导致AP反复重启故障处理
网络·华为
香蕉大香蕉(06敬畏市场)1 小时前
高频八股 · Java 并发编程(10):异步、ThreadLocal 与虚拟线程(收官)
java·开发语言·网络·jvm·python·ai·实习
钱工的门窗技术笔记2 小时前
铝木复合门窗中木材的角色分类与界面可分解性:结构判定、失效路径与维护设计
网络·物联网·数据分析
xianyuCcCcCCCcc2 小时前
Kubernetes Service 与网络代理
网络·云原生·kubernetes
未来之窗软件服务2 小时前
诡异的网络IP/域名/ICMP通应用层失败骨干网分层拦截分析-东方仙盟
网络·tcp/ip·智能路由器·dns劫持·仙盟创梦ide·东方仙盟
星恒随风3 小时前
Linux Socket UDP编程(一):手写UDP回显服务器与客户端,从socket、bind、recvfrom到网络字典服务器完整实战
linux·服务器·网络·笔记
HY小宝F3 小时前
智能摄像头系统 30 天学习计划 Day 09:用 RTSP 把视频送到网络
网络·学习·音视频