Linux下网络故障定位与诊断的实现技术_易曼
- 格式:pdf
- 大小:181.53 KB
- 文档页数:4
Linux操作系统网络故障诊断1 前言Linux操作系统的使用给人们带来了极大的便利性,但是,在操作系统使用的过程中,却受到内部或外部因素的影响而产生网络故障的问题,严重影响Linux操作系统的使用效率,对此,必须做好Linux操作系统网络故障的诊断工作。
2 Linux操作系统网络故障诊断2.1 利用Ipconfig命令判断网卡基本配置在操作系统无法正常应用的情况下,Linux操作系统管理人员应利用Ipconfig命令来判断当前系统的网卡配置是否准确,主要根据Ipconfig 命令的结果进行判断。
如果操作系统采用IP动态分配的话,管理人员需要判断Linux主机有没有从DHCP服务器上获取相应的IP地址,如果不能够从DHCP服务器上获取IP地址或无法与DHCP服务器进行连接的话,IP 地址往往会体现出0.0.0.0.的现状,判断应是Linux主机的网卡与DHCP 服务器之间的连接出现了问题,对其应及时采取处理措施[1]。
如果是因为Linux主机与DHCP连接上的问题而影响到上网的话,同时还要根据IP 的分配方式进行诊断,如果是自动分配IP 的话,那么网络连接问题大多都是出现无法获取DHCP服务器IP分配的问题;而如果是手动分配IP 的话,不仅要检查与DHCP服务器之间是否有效连接,同时还要检查IP地址、默认网关、子网掩码、DNS配置等四项参数是否正确,尤其是IP地址要注意是否与其他主机IP地址出现冲突的现象,同时也应注意IP地址是否在规定的网段内,一旦超出网段将无法实现上网。
2.2 利用Traceroute实现对网络问题的追踪在Linux操作系统运行的过程中,很可能出现无法上网的现象,而且无法上网的问题对操作系统的正常运行带来极大的影响,因此,必须对其网络故障进行诊断和处理[2]。
一般情况下,在Linux操作系统出现网络故障的情况下,都会采取Ping的方式来查看IP地址是否有效,是否能与DHCP服务器进行有效的连接,与以上提到的Ipconfig命令判断的方式类似。
Linux网络疑难杂症解决断网问题的几个窍门在使用Linux操作系统时,有时会遇到网络连接断开的问题,这对于依赖网络工作的人来说是非常头疼的。
本文将分享几个解决Linux网络断网问题的窍门,希望能帮助读者尽快解决这一疑难杂症。
一、检查网络硬件连接网络连接出现问题的第一步是检查网络硬件连接,包括网线、网卡和路由器等设备。
确保网线插紧,网卡连接正常,路由器无故障,从而排除硬件连接问题对网络故障的影响。
二、使用ping命令检查网络连通性使用ping命令是一种简单有效的方法,可以检查Linux主机与其他设备的网络连通性。
在终端中执行ping命令,加上目标主机的IP地址或域名,如果能够连通,则表示无问题。
如果无法连通,请检查本地网络配置或目标主机是否正常。
三、检查网络配置文件Linux系统的网络配置文件位于/etc/network/interfaces文件中。
可以通过编辑此文件来检查和修改网络配置。
确保配置文件中指定的IP地址、子网掩码、网关等参数是正确的。
如果有任何更改,请使用sudo service networking restart命令重启网络服务以使更改生效。
四、重启网络管理服务有时,网络管理服务可能出现问题,导致网络连接断开。
可以尝试重启网络管理服务以解决这个问题。
通过执行sudo service network-manager restart命令,可以重新启动网络管理服务。
请注意,此命令可能因Linux发行版的不同而有所区别,请根据您所使用的发行版进行调整。
五、禁用IPv6IPv6是一种新的网络协议,用于替代IPv4。
虽然IPv6在未来是必要的,但当前仍有些网络环境对其支持存在问题。
尝试禁用IPv6可能会解决某些网络断开的问题。
可以通过编辑/etc/sysctl.conf文件,在末尾添加以下行来禁用IPv6:```net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1```保存文件后,通过执行sudo sysctl -p命令使更改生效。
Linux系统无法上网解决方案教程人们使用电脑时候最不想看到的事情之一就是上不了网了,无论是工作还是玩游戏时候都很不爽。
本篇文章主要介绍了详解Linux系统无法上网解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一起跟随小编过来看看吧方法步骤1.linux系统iso镜像文件最好不要使用lived版本的,之前安装这个版本linux系统,每次新建文件夹,下载的资源在重启之后都没法使用,后来下载就好了。
2.但是下载如此版本出现一个问题,使用ifconfig命令来查看系统的ip地址,一开始出现的是如下情况,没有ipv4地址,如下图3,如果没有ipv4地址则使用命令,首选选择linux的连接为桥连接右键centos64位点击设置如果不是桥连接,点击网络适配器进行选择。
标箭头的一定要设置成这样。
,dhclient eth0,在该命令之后,重新启动网络服务service network restart,否则虚拟机重启之后还是无法获取到ip地址。
然后再次使用ifconfig命令来查看ip地址。
如果需要使用xftp连接linux系统,则在本地的dos中使用ping linux服务器ip地址的方式,如果ping的ip地址返回结果,则说明可以连接,接着需要使用在linux中使用tenlet命令telnet linux的ip地址端口(22端口号),如果出现没有此命令,则需要使用yum -y install telnet来创建telnet命令。
再次使用telnet linux的ip地址端口,如果返回结果,则正常。
在本地的dos中使用telnet linux的ip地址端口,如果不能返回结果,则在linux中执行service sshd start来开放22端口。
此时就可以使用xsfp来连接linux系统。
补充:电脑突然无法上网如何解决右击网络图标,打开网络共享中心,查看我们的网络连接目前的情况。
在网络共享中心中第一条就是我们目前网络连接的示意图,查看在那个位置有问题。
Linux终端网络诊断使用命令行排查网络问题在日常使用计算机时,我们经常会遇到网络问题,例如无法连接互联网、网速慢或者无法访问特定网站等。
这些问题可能导致我们无法正常工作或者娱乐,因此我们需要及时解决这些网络问题。
而对于Linux系统用户来说,终端网络诊断命令是一种非常有效的工具。
本文将介绍一些常用的Linux终端网络诊断命令,以帮助大家排查和解决网络问题。
1. 检查网络连通性首先,我们需要确定网络是否正常连通。
我们可以使用ping命令发送网络请求来检查与目标主机的连接。
在终端中输入以下命令:```ping <目标主机地址>```通过这个命令,我们可以检查网络是否连通以及网络的延迟情况。
如果我们能够收到回应,说明网络正常;如果没有收到回应,说明可能存在问题。
2. 检查IP地址如果我们的计算机无法连接互联网,一个可能的原因是IP地址配置错误。
我们可以使用ifconfig命令来查看当前计算机的IP地址、子网掩码和网关等信息。
在终端中输入以下命令:```ifconfig```通过这个命令,我们可以确认计算机是否成功获取到IP地址,并且是否与网关建立有效连接。
3. 检查DNS设置DNS(Domain Name System)是将域名转换为IP地址的系统,如果我们无法访问特定网站,那么可能是DNS设置出现问题。
我们可以使用nslookup命令来检查DNS设置,以解析特定域名的IP地址。
在终端中输入以下命令:```nslookup <域名>```通过这个命令,我们可以检查域名是否能够成功解析为IP地址。
如果解析失败或者解析到错误的IP地址,那么说明可能存在DNS设置的问题。
4. 检查网络接口如果我们的计算机有多个网络接口,例如无线网卡和有线网卡,我们可能需要检查网络接口的状态。
我们可以使用ifconfig命令来查看网络接口的状态和配置信息。
在终端中输入以下命令:```ifconfig <网络接口名称>```通过这个命令,我们可以查看网络接口的状态、IP地址、子网掩码、网关和MAC地址等信息。
Linux操作系统中的故障检测与恢复Linux操作系统是一种自由开放源码的操作系统,广泛应用于各个领域。
在长期的使用中,难免会遇到一些故障和问题。
本文将探讨Linux操作系统中的故障检测与恢复方法,帮助读者更好地理解和解决这些问题。
一、故障检测1.1 系统日志的分析Linux操作系统记录了大量的系统日志,包含了操作系统运行过程中的各种信息,如启动、关闭、错误等。
我们可以通过查看系统日志来分析和定位故障。
在终端中使用命令`cat /var/log/syslog`可以查看系统日志文件内容。
如果需要筛选特定关键词,可以使用`grep`命令进行过滤,例如`grep "error" /var/log/syslog`。
1.2 使用命令行工具Linux操作系统提供了一系列的命令行工具,用于诊断和检测系统故障。
以下是一些常用的命令行工具:- `top`:用于查看系统进程的运行情况,包括占用CPU、内存等资源的情况。
- `iotop`:用于监控磁盘I/O的情况,可以查看哪些进程在进行磁盘读写操作。
- `netstat`:用于查看网络连接情况,包括监听的端口、连接状态等。
- `ps`:用于查看系统进程的详细信息,包括进程ID、父进程ID、内存使用情况等。
这些命令行工具可以帮助我们深入了解系统的当前状态,从而快速诊断故障。
1.3 进程状态监控通过监控系统中运行的进程状态,可以及时发现并解决潜在的问题。
常见的进程状态监控工具有`Monit`、`Munin`、`Nagios`等。
这些工具可以实时监控进程的运行状态、资源占用情况等,并在发现异常时发送警报。
二、故障恢复2.1 备份与还原在Linux操作系统中,没有备份就没有安全。
备份是故障恢复的重要手段之一。
可以使用`tar`命令创建文件和目录的备份,例如`tar -cvf backup.tar/path/to/directory`。
还原备份可以使用`tar -xvf backup.tar`命令。
在Linux终端中进行网络诊断ing和traceroute命令在Linux终端中进行网络诊断和traceroute命令网络连通性是当今数字时代的重要组成部分,而Linux操作系统提供了一系列强大的命令来进行网络诊断和故障排除。
本文将介绍在Linux终端中进行网络诊断的两个常用命令:ping和traceroute。
一、ping命令在Linux终端中,ping命令是一个用于测试主机与目标主机之间网络连通性的基本工具。
它通过发送ICMP回应请求消息来检查目标主机是否可以正常访问,并计算往返时间(RTT)以及丢包率。
使用ping命令的基本语法如下:```shellping [选项] 目标主机```其中,选项可以是:- `-c`: 指定发送的ICMP请求消息的数量。
- `-i`: 指定连续发送ICMP请求消息的时间间隔。
- `-s`: 指定ICMP请求消息的大小。
例如,执行以下命令可以测试与目标主机的连通性,并连续发送5个ICMP请求消息:```shellping -c 5 目标主机```ping命令会显示每个ICMP回应消息的往返时间以及丢包率。
通过观察丢包率和往返时间,我们可以初步判断网络是否可达和是否存在网络拥塞等问题。
二、traceroute命令traceroute命令能够追踪数据包从源主机到目标主机所经过的路径,并显示每个经过的路由器的IP地址以及往返时间。
它通过发送UDP数据包来实现。
使用traceroute命令的基本语法如下:```shelltraceroute [选项] 目标主机```其中,选项可以是:- `-m`: 指定最大跃点数,即traceroute命令最多跟踪经过的路由器数量。
- `-p`: 指定UDP数据包的目的端口号。
例如,执行以下命令可以追踪到目标主机之间经过的路由器信息:```shelltraceroute 目标主机```traceroute命令会显示每个经过的路由器的IP地址以及往返时间。
红帽Linux故障定位技术详解与实例红帽Linux故障定位技术详解与实例是本文要介绍的内容,主要是来了解并学习红帽Linux中故障定位技术的学习,故障定位技术分为在线故障定位和离线故障定位,一起来看详解。
1、故障定位(Debugging)场景分类为便于描述问题,将Linux上各种软件故障定位的情形分成两类:(1)在线故障故障定位在线故障定位(online-debugging)就是在故障发生时,故障所处的操作系统环境仍然可以访问,故障处理人员可通过console,ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因。
(2)离线故障定位离线故障定位(offline-debugging)就是在故障发生时,故障所处的操作系统环境已经无法正常访问,但故障发生时系统的全部或部分状态已经被系统本身所固有或事先设定的方式收集起来,故障处理人员可通过对收集到的故障定位状态信息进行分析,定位出故障发生的原因。
2、应用进程故障情形及处理应用进程的故障一般不会影响操作系统运行环境的正常使用(如果应用代码的bug导致了内核的crash或hang,则属于内核存在漏洞),所以可采用在线故障定位的方法,灵活的进行分析. 应用代码故障的情形有如下几种:(1)进程异常终止很多用户认为进程异常终止情况无从分析,但实际上进程异常终止情况都是有迹可寻的. 所有的进程异常终止行为,都是通过内核发信号给特定进程或进程组实现的. 可分成几个类型进行描述:- SIGKILL. SIGKILL最特殊,因为该信号不可被捕获,同时SIGKILL不会导致被终止的进程产生core文件,但如果真正的是由内核中发出的SIGKILL,则内核一定会在dmesg中记录下信息. 另外在内核中使用SIGKILL的地方屈指可数,如oom_kill_process()中,所以通过dmesg记录并且分析内核中使用SIGKILL的代码,并不难分析原因- SIGQUIT,SIGILL,SIGABRT,SIGBUS,SIGFPE,SIGSEGV。
linux故障排查思路在Linux系统中,故障排查的思路非常重要。
下面将分为三个部分,介绍Linux故障排查的思路和具体的操作。
一、告警信息分析和排查1、检查syslog日志信息在Linux系统中,syslog是一种系统日志,通过分析syslog日志信息来解决故障问题是常用的方法。
我们可以输入以下命令查看syslog日志信息。
tail -f /var/log/syslog这个命令可以帮我们实时查看最新的syslog日志信息,如果发现类似错误或警告信息,可以继续分析或跟进。
2、查看系统日志信息可以通过以下命令来查看系统的日志信息,也可以帮助我们定位和排查故障问题。
dmesg | moredmesg主要用于显示系统启动信息,如果发现类似错误或警告信息,可以继续分析或跟进。
3、查看进程信息在Linux系统中,可以通过以下命令来查看系统运行的进程信息。
ps -ef这个命令可以列出所有进程的详细信息,如果发现某个进程出现问题,可以进一步采取措施解决。
二、系统资源分析和排查1、内存首先,我们需要了解系统的内存使用情况,可以通过以下命令来查看。
free -m这个命令可以列出系统的内存使用量,如果发现内存不足,可以考虑升级内存或优化系统配置。
2、磁盘使用情况可以通过以下命令来查看系统的磁盘使用情况。
df -h这个命令可以列出系统磁盘的使用情况,如果发现磁盘空间不足,可以考虑清理无用文件或者增加磁盘存储空间。
3、CPU使用情况可以通过以下命令来查看系统的CPU使用情况。
top这个命令可以列出系统的CPU使用情况,如果发现CPU占用率过高,可以考虑优化系统配置或者采取措施解决。
三、网络状态分析和排查1、使用ping命令检查网络连接在Linux系统中,可以使用ping命令来检查网络连接是否正常,可以输入以下命令。
ping ***.*****.***如果ping不通,说明存在网络问题,需要进一步排查故障原因。
2、检查网络接口在Linux系统中,可以使用ifconfig命令来检查网卡是否正常,可以输入以下命令。
使用Linux终端进行网络诊断和故障排除在计算机网络的运维和管理过程中,经常会遇到网络故障和问题。
为了快速准确地定位和解决这些问题,使用Linux终端提供的网络诊断和故障排除工具是一种高效的方法。
本文将介绍如何使用Linux终端进行网络诊断和故障排除。
一、ping命令ping命令是网络诊断中最基础和常用的命令之一。
它用于测试网络连接和测量网络的响应延迟。
ping命令的基本语法如下:ping 目标IP或域名例如,要ping百度的IP地址,可以输入以下命令:ping 220.181.38.148ping命令将连续向目标发送ICMP回显请求,直到用户主动终止。
通过观察返回的结果,可以了解到目标主机是否能够正常连接,以及网络延迟的情况。
二、traceroute命令traceroute命令用于追踪数据包在网络上传输的路径。
它能够显示数据包经过的所有路由器,并显示每个路由器的IP地址和延迟时间。
traceroute命令的基本语法如下:traceroute 目标IP或域名例如,要追踪到百度的IP地址,可以输入以下命令:traceroute 220.181.38.148traceroute命令将发送一系列的UDP数据包,每个数据包有不同的TTL值。
当数据包经过路由器时,TTL值递减。
当TTL值为0时,路由器将返回ICMP"时间超过"错误报文给源主机。
通过观察返回的结果,可以确定数据包经过的路径和每个路由器的响应延迟。
三、nslookup命令nslookup命令用于查询域名的DNS解析记录。
它可以显示域名对应的IP地址、MX记录、NS记录等信息。
nslookup命令的基本语法如下:nslookup 域名例如,要查询百度的DNS解析记录,可以输入以下命令:nslookup nslookup命令将查询域名的解析结果并返回。
通过观察返回的结果,可以了解到域名对应的IP地址,以及域名解析是否正常。
四、ifconfig命令ifconfig命令用于查看和配置网络接口的信息。
收稿日期:2002-11-25;修返日期:2002-12-13基金项目:国家自然科学基金资助项目(90204008)Linux 下网络故障定位与诊断的实现技术*易 曼,郭成城,晏蒲柳(武汉大学电子信息学院,湖北武汉430079)摘 要:基于Linux 平台的网络故障定位与诊断技术,能自动发现故障点,有效地确定故障起因,提高网络管理的效率。
该技术的实现分为两大部分:在网络寻径的基础上定位故障,即在配置了RIP 协议的自治系统内,根据RIP 协议的实现算法Bellman -Ford 确定两个网络工作站之间的链路,若自治系统配置的是OSPF 协议,则根据Dijkstra 算法寻径,再编程实现Ping 命令功能来迅速定位故障;然后对出现故障的设备进行故障诊断,针对路由器和交换机分别编制不同的诊断程序。
关键词:网络寻径;Ping;网络故障诊断中图法分类号:TP316 文献标识码:A 文章编号:1001-3695(2003)11-0100-04Method of Network Fault Diagnosis Based on Linux Operating SystemYI Man,GUO Cheng -cheng,YAN Pu -liu(School o f Elect ronic In f o rmation ,Wuhan U niversity,W uhan Hubei 430079,China )Abstract:We provide a method for orientation and diagnosis of TCP/IP net work fault based on Linux operating system,which can auto -maticall y and efficiently find the malfunction device and the reason that it d oesn .t work.Fi rstl y we seek the path of network from the s tarti ng Net PC to the destination device,according to Bellman -Ford algori th m if RIP protocol is running in the autonomous system and Dij kstra algorith m if OSPF protocol is active.Then we use command Pin g to find the malfunction device.Thirdly we diagnose the device.Key w ords:Find Path i n Network;Pi ng;Network Fault Diagnosis1 概述近年来,随着Interne t 的蓬勃发展,网络应用日益普及。
一方面,为了满足更多用户使用网络的需求,企业网络系统的规模也越来越大、越来越复杂;另一方面,越来越多的网络用户要求网络运行稳定,并且提供高质量的网络服务。
这就对网络管理提出了新的要求,而传统的依赖网络管理员人为地判断和解决网络出现的问题已十分困难,如何有效地管理这些网络系统已经成为不容忽视的问题。
为此,我们研制开发了针对企业网络系统的网络故障诊断系统。
网络故障诊断程序运行在Linux 环境的管理服务器上,分为以下几个步骤:¹等待客户机的诊断请求。
当有用户发现网络出现故障时,如不能访问另一用户,用户就与服务器建立联系,发送需要进行故障诊断的请求,将自己的IP 地址和想要访问的目标I P 地址发送给服务器。
º网络寻径。
根据出现故障的自治系统配置路由协议相应的选路算法,确定从用户到目标经过的所有设备,即找到出现故障的网络路径。
»利用Ping 命令来定位网络故障。
Ping 命令是用于测试TCP/I P 网络逻辑连通性的一个短小精悍的工具,使用该命令可以粗略地了解服务器与设备及远程主机之间的网络连接状况,还可以定位网络的连通性故障。
¼对确认的故障设备调用故障诊断程序进行诊断。
这里,需要针对不同的设备编写不同的故障诊断程序。
½返回用户诊断结果,并将故障诊断的结果写入数据库,同时保存到网络管理日志中,便于管理员查看分析。
¾如果用户得到的返回结果是不存在网络故障,那么用户可以试着检查是否存在主机故障。
用户主机出现的常见故障有主机的配置不当,如主机配置的IP 地址与其它主机冲突,或是IP 地址根本就不在子网范围内导致主机无法连通等。
主机的另一常见故障就是安全故障,如因主机没有控制其上的Finger ,RPC,Rlogin 等多余服务而受到恶意攻击者的破坏。
2 MIB 变量的实时读取网络故障诊断需要使用SNMP [1,2](简单网络管理协议),特别是MIB [3](管理信息库)。
SNMP 协议在网络实体间提供并传输管理信息;MIB 变量几乎包含了网络设备所有重要的参数,如路由器的路由表、路由器的端口流量数据、路由器中的计费数据、路由器CP U 的温度、负载以及路由器的内存余量等,所有这些数据都可以从路由器的MIB 变量中采集到。
因此,MIB 变量浏览器是一种重要的网络管理工具。
在Linux平台下,有一个很好的MIB变量浏览器Ucd-snmp。
Ucd-snmp源自于卡耐基#梅隆大学的SNMP软件包CMU Snmp2.1.2.1,由加州大学Davis分校(University of Califonia at Davis)开发与维护,所以命名为Ucd-snmp。
Uc d-snmp4.2.1是最新的发布版本。
Ucd-snmp4.2.1软件包由如下内容组成:p可扩展的SNMP代理程序(Snmpd);p SNMP代理和管理程序开发库;p用于请求或设置SNMP代理变量的工具程序(Sn-mpget,Snmpset,Snmpwalk等);p用于生成或处理SN MP陷阱(Trap)的工具程序(Snmptrapd和Snmptrap);p标准U NI X命令Netstat的SN MP版本(Snmpnetstat);p基于Tk/pe rl的MIB浏览器(Tkmib)。
可以根据实际的需要来改写Uc d-snmp4.2.1源码包以获得基于SNMP协议的实时MIB读取程序。
例如在Snmpget.c中取回MIB变量值的程序段后加上存储语句,然后把该Main函数改为子函数就得到读取一个MIB变量的程序,再改写Snmpwalk.c即可以完成遍历一个MIB 变量组的功能。
3网络寻径网络寻径是建立在网络拓扑发现基础上的,即要了解一个网络的各个组成元素间实际的物理连接关系。
在这个基础上,可以从用户的IP和目标找到可能存在故障的链路上所经过的设备,然后再进一步确定出现问题的具体设备。
参照Interne t的层次结构,整个网络可划分为多个自治系统AS(Autono mous Syste m)。
自治系统之内运行内部网关协议IGP,并且通过边界网关协议BGP与其它自治系统实现互连。
目前,广泛应用的IGP有RIP 和OSPF。
根据实际操作的可能性,我们的网络寻径局限在同一个自治系统内,并且在同一个交换域中的寻径直接通过读取拓扑发现的结果得到。
服务器上的故障诊断程序在收到来自用户的请求后,记录用户I P和目标IP,然后通过子网掩码判断它们是否在同一交换域内。
如果用户与目标对象在同一交换域,根据用户与目标在交换域内的惟一路径来检查途经的每个交换机是否出现故障;如果用户与目标对象不在同一交换域,则说明它们之间的通信要经过各自交换域内的出口路由器(网关)以及若干中间路由器。
由于路由器之间的连接关系不具有惟一性,因此需要找出用户与目标对象间通信所经过的所有路由器。
在MI BÒ[3]中定义了ipRoute Table,表中有一项ipRouteProto。
若该项值为8,说明当前使用的路由协议是RIP;若该项值为13,则是OSPF协议。
针对不同的路由协议需要使用不同的路径发现算法。
RI P协议[5]是本地网络矢量距离选路算法的一种直接而简单的实现。
在默认情况下,RIP使用一种非常简单的距离度量制式。
距离就是通往目的站点所需经过的/跳数0(Hop),取值为1~15之间的整数,数值16用来指示无穷大。
路由器与它直接相连的网络的距离为1跳,到通过另一个路由器可达的网络的距离为2跳,以此类推,从给定源站到目的站的一条路径的跳数对应于数据报沿该路径传输时所经过的路由器数。
RIP协议将参加通信的机器分为主动和被动两种方式:主动路由器定期广播选路更新报文,被动路由器接收通告并在此基础上更新其路由表。
RIP协议包含了请求命令和响应命令,常规操作是通过对响应的广播来完成的。
每当收到一个响应报文,RIP处理程序就开始更新它的路由表,更新的方法是基于Bellman-Ford[7]算法的,寻径算法也可以基于此来设计。
网络寻径的步骤为:¹首先将网络上的各个路由器以及它们之间的物理连接抽象成图论模型。
即用一张无向图G来表示,其中,路由器构成图G中的顶点,各路由器之间的物理连接构成图G中的边,并将它们的互连关系存储在邻接矩阵中。
º构造邻接矩阵。
当网络中存在n个路由器时,构造n@n阶矩阵A n@n,元素a ij对应于第i个路由器到第j个路由器的费用。
若两个路由器之间没有连接,则aij取最大值,对应于RIP为16。
由于RI P协议是基于对称结构的(a ij=a ji),可以只用上三角矩阵存储邻接矩阵来节省内存空间。
»确定每条边的/权0。
它对应于使用该路径所需的费用,需要实时采集,可以从ipRouteTable中的MIB变量ipRoute Metric1得到费用,若该变量为-1,则依次读取ipRouteMe tric2, ipRoute Metric3等。
¼找出连接用户与目标对象所在交换域间的最短路径。
基于Bellman-Ford方法实现寻径的程序伪代码如下:initialize single source(Graph g,Node s)/*初始化邻接矩阵,G代表图的存储结构*/for each vertex v in Vertices(g)/*s是已经确定了最短距离的顶点*/g.d[v]:=infi nity/*两顶点间没有连接*/g.pi[v]:=ni l/*两顶点间链路的费用*/g.d[s]:=0;/*邻接矩阵对角线上的元素为0*/relax(Node u,Node v,double w[][])/*更新最短距离*/if d[v]>d[u]+w[u,v]thend[v]:=d[u]+w[u,v]pi[v]:=uBELLM AN FORD(G,w,s)/*算法的实现*/initialize single source(G,s)for i=1to|V[G]|-1for each edge(u,v)i n E[G]/*E代表图G中的边*/relax(u,v,w)for each edge(u,v)i n E[G]if d[v]>d[u]+w(u,v)thenreturn FALSEreturn TRUE若当前自治系统使用的是OSPF协议[5],同样是先构造邻接矩阵,再根据该协议的实现方法来寻径。