Linux系统IP路由的工作原理是什么

70次阅读
没有评论

共计 2441 个字符,预计需要花费 7 分钟才能阅读完成。

Linux 系统 IP 路由的工作原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

也许你知道如何在 Linux 系统上用命令 netstat 或 route 来查找(甚至是增加 / 删除)已经存在的路由。但是在你做这些操作的时候你可能并不知道 IP 路由是如何工作的。本文将帮助你理解 IP 路由的原理,以及它是如何工作的。IP 路由涉及到 IP 数据报文的转发。如果主机与目的主机直接相连,那么主机可以直接发送 IP 报文到目的主机,这个过程比较简单。例如,通过点对点的链接或通过网络共享。如果主机与目的主机没有直接相连,那么主机会将 IP 报文发送给默认的路由器,然后由路由器来决定往哪发送 IP 报文。

IP 路由涉及到 IP 数据报文的转发。如果主机与目的主机直接相连,那么主机可以直接发送 IP 报文到目的主机,这个过程比较简单。例如,通过点对点的链接或通过网络共享。如果主机与目的主机没有直接相连,那么主机会将 IP 报文发送给默认的路由器,然后由路由器来决定往哪发送 IP 报文。

路由原理

一个普通的主机与路由器之间的根本区别在于,主机不会将一个报文从一个接口转发到另一个接口,而路由器可以转发报文。

如今,大多数的多用户系统都可以被配置,从而被当作路由器来用。因此,一个普通路由算法可以被用在路由器上,同样也可以用在一台普通主机上。当一台主机可以用作路由器时,我们通常说这台主机嵌入了路由器的功能。这种具备嵌入路由器功能的主机平常不会转发报文,除非我们对它进行了配置,使它开启这种功能。

IP 层维护着一张路由表,当收到数据报文时,它用此表来决策接下来应该做什么操作。当从网络侧接收到数据报文时,IP 层首先会检查报文的 IP 地址是否是主机自身的地址相同。

如果数据报文中的 IP 地址是主机自身的地址,那么报文将被发送到传输层相应的协议中去。如果报文中的 IP 地址不是主机自身的地址,并且主机配置了具备路由的功能,那么报文将被转发;否则,报文就被丢弃。

路由表中的数据一般是以条目形式存在。一个典型的路由表条目包含以下主要的条目项:

● 目的 IP 地址:此字段表示目标的 IP 地址。这个 IP 地址可以是某一台主机的地址,也可以是一个网络地址。如果这个条目包含的是一个主机地址,那么它的主机 ID 标记为非零;如果这个条目包含的是一个网络地址,那么它的主机 ID 被标记为零。

● 下一个路由器的 IP 地址:为什么我们使用“下一个”的说法,是因为下一个路由器并不总是 *** 的目的路由器,但它很可能是一个中间路由器。条目给出下一个路由器的地址是用来转发从相应接口收到的 IP 数据报文。

● 标志:这个字段提供了另一组重要信息,如目的 IP 地址(之前提到的)是一个主机地址还是一个网络地址。此外,从标志中可以得知下一个路由器(之前提到的)真的是一个路由器还是一个直接相连的接口。

● 网络接口规范:一些数据报文的网络接口规范,这个规范跟随报文一起传播。

基本的路由是如何工作的?

因此,如果我们现在想简单而形象地描述路由过程,我们将会看到:一旦主机(被配置成具备路由功能)的 IP 层接收到从网络侧来的数据报文,它将核实数据包中的目的 IP 地址,如果此 IP 不是主机的 IP 地址,那么包将通过路由表转发。

如果任何条目的 *** 个字段完全匹配目的 IP 地址(主机)或部分匹配目的 IP 地址(网络),那么它将指示下一个路由器的 IP 地址。这是一个重要的信息,因为这些信息直接告诉主机(具备路由功能的)数据包应该转发到哪一个“下一个路由器”去。而条目中所有其它的字段将提供更多辅助的信息来为路由转发做决定。

在上一段中我们对路由转发过程建立了基本的了解,但如果我们试图深入了解更多的东西,就必须看看以下关于路由表算法的一些详细信息。

● 首先,路由表会去搜索一个“目的 IP 地址”字段与数据报文中目的 IP 地址完全相同的条目。这就意味着 IP 地址的主机 ID 与网络 ID 完全的匹配。如果找到,则数据包被发送到相应接口或中间路由器。

● 如果没有找到一个完全的匹配 IP,那么就接着搜索相匹配的网络 ID。如果找到,那么该数据报文会被转发到指定的路由器。所以我们看到,这个网络上的所有主机都通过这个路由表中的单个(这个)条目来管理。

● 如果上述两个条件都不匹配,那么该数据报文将转发到一个“默认路由器”。

● 如果上述步骤失败,即没有默认路由器,那么该数据报文最终无法被转发。任何无法投递的数据报文都将产生一个 ICMP 主机不可达或 ICMP 网络不可达的错误,并将此错误返回给生成此数据报文的应用程序。

有时人们会问,为什么路由表中会有两种类型的条目?有了更精确的主机条目为什么还需要网络相关的条目?嗯 hellip; 在路由表中包含与网络相关的路由条目是一个很大的优点。其优点在于,拥有一个与完整网络相关的条目,能够避免包含此网络中所有单独的主机条目(这个数据量非常巨大)。这使得路由表的大小降到一个可收受的数量级,这样就非常好。

查看路由表信息的命令

你可以使用 netstat 命令查看路由表信息,如下所示:

\$ netstat -rn Kernel IP routing table Destination  Gateway  Genmask  Flags  MSS Window  irtt Iface 192.168.2.0  0.0.0.0  255.255.255.0  U  0 0  0  eth0 169.254.0.0  0.0.0.0  255.255.0.0  U  0 0  0  eth0 0.0.0.0  192.168.2.1  0.0.0.0  UG  0 0  0  eth0 其输出提供目的 IP 地址和网关相关的详细信息。标志“U”表明该路由器可达;“G”表明该路由器与一个网关(路由器)相连。如果这个标志没有被设置,那么我们可以认为主机与目标是直接相连的。

关于 Linux 系统 IP 路由的工作原理是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计2441字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)