S_lion's Studio

ip选路

字数统计: 1.6k阅读时长: 5 min
2022/03/20 Share

选路是IP最重要的功能之一。需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生。在后一种情况下,主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就要被丢弃(例如,悄无声息地被丢弃)。

选路原理

ip搜索路由表的步骤:

  1. 搜索匹配的主机地址;
  2. 搜索匹配的网络地址;
  3. 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。匹配主机地址步骤始终发生在匹配网络地址步骤之前。

IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。I P执行选路机制,而路由守护程序则一般提供选路策略。

简单路由表

首先来看一看一些典型的主机路由表。在主机s v r 4上,先执行带-r选项的netstat命令列出路由表,然后以-n选项再次执行该命令,以数字格式打印出I P地址(我们这样做是因为路由表中的一些表项是网络地址,而不是主机地址。如果没有- n选项,netstat命令将搜索文件/etc/networks并列出其中的网络名。这样会与另一种形式的名字—网络名加主机名相混淆)。

对于一个给定的路由器,可以打印出五种不同的标志(flag):

  • U 该路由可以使用。
  • G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。
  • H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
  • D 该路由是由重定向报文创建的。
  • M 该路由已被重定向报文修改。

标志G是非常重要的,因为由它区分了间接路由和直接路由(对于直接路由来说是不设置标志G的)IP地址指明的是最终的目的地,但是链路层地址指明的是网关(即下一站路由器)。简单的说,直接路由时MAC地址和IP地址都是目的地址的MAC和IP地址;而间接路由时MAC地址为网关的MAC地址,而IP地址则还是目的IP地址。

Refcnt: 正在使用路由的活动进程个数。
Use: 通过该路由发送的分组数。
Interface: 网络接口。

基本概念

一般,我们在配置好一个网络接口的时候,一个路由就被直接创建好了。当然我们也可以手动添加路由。用route add命令就可以了。

而当一个IP包在某一个路由器的时候发现没有路由可走,那么该路由器就会给源主机发送“主机不可达”或者“网络不可达”的ICMP包来报错。如果是被转发的数据报,那么就给原始发送端发送一份I C M P主机不可达的差错报文。

注意,一般的操作系统默认是没有路由功能的(不能转发数据包),这需要自己配置。

ICMP重定向差错

当I P数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送I C M P重定向差

错报文给I P数据报的发送端。这在概念上是很简单的。只有当主机可以选择路由器发送分组的情况下,我们才可能看到I C M P重定向报文。

  1. 我们假定主机发送一份I P数据报给R 1。这种选路决策经常发生,因为R 1是该主机的默认路由。
  2. R1收到数据报并且检查它的路由表,发现R 2是发送该数据报的下一站。当它把数据报发送给R2时,R 1检测到它正在发送的接口与数据报到达接口是相同的(即主机和两个路由器所在的L A N)。这样就给路由器发送重定向报文给原始发送端提供了线索。
  3. R1 发送一份I C M P重定向报文给主机,告诉它以后把数据报发送给R 2而不是R 1。

ICMP的IP重定向报文和路由发现报文

当IP包在某一个地方转向的时候,都回给发送IP报的源主机一个ICMP重定向报文,而源主机就可以利用这个信息来更新自己的路由表,这样,随着网络通信的逐渐增多,路由表也就越来越完备,数据转发的速度也会越来越快。我们需要注意的是:

  • 重定向报文只能由路由器发出。
  • 重定向报文为主机所用,而不是为路由器所用。

在主机引导的时候,一般会发送在网内广播一个路由请求的ICMP报文,而多个路由器则会回应一个路由通告报文。而且,路由其本身不定期的在网络内发布路由通告报文,这样,根据这些报文,每一个主机都会有机会建立自己的路由表而实现网络通信。路由器在一份通告报文中可以通告多个地址,并且给出每一个地址的优先等级,这个优先等级是该IP作为默认路由的等级,至于怎么算的就不深究了。

路由器一般会在450-600秒的时间间隔内发布一次通告,而一个给定的通告报文的寿命是30分钟。而主机在引导的时候会每三秒发送一次请求报文,一旦接受到一个有效的通告报文,就停止发送请求报文。

CATALOG
  1. 1. 选路原理
  2. 2. 简单路由表
  3. 3. ICMP重定向差错
  4. 4. ICMP的IP重定向报文和路由发现报文