单项选择题4. R1、R2是一个自治系统中采用RIP路由协议的两个相邻路由器,R1路由表如表1所示。当R1收到R2发送的如表2所示的(V,D)报文后,R1更新的5个路由表项中距离值从上到下依次为_____。
表1 R1起始路由表 目的网络 | 距离 | 路由 | 10.0.0.0 | 0 | 直接 | 20.0.0.0 | 5 | R2 | 30.0.0.0 | 4 | R3 | 40.0.0.0 | 3 | R4 | 50.0.0.0 | 2 | R5 | |
表2 R2发送的(V,D)报文 目的网络 | 距离 | 10.0.0.0 | 2 | 20.0.0.0 | 3 | 30.0.0.0 | 4 | 40.0.0.0 | 4 | 50.0.0.0 | 1 | |
- A.0、3、4、3、1
- B.0、4、4、3、2
- C.0、5、4、3、1
- D.O、5、4、3、2
A B C D
B
[解析] 路由信息协议(RIP)是内部网关协议(IGP)中使用得最广泛的一种协议,它是一种分布式、基于距离向量的路由选择协议,其特点是协议简单。它要求路由器周期性地向外发送路由刷新报文。路由刷新报文主要内容是由若干个(V,D)组成的表。其中,V代表矢量(Vector),标识该路由器可以到达的目标网络(或目的主机);D代表距离(Distance),指出该路由器到达目标网络(或目的主机)的距离。距离(D)对应该路由上的跳数(Hop Count)。其他路由器在接收到某个路由器的(V,D)报文后,按照最短路径原则对各自的路由表进行刷新。
在某个自治系统中,路由器R1与R2是两个均运行RIP路由协议的相邻路由器。R1起始路由表如表1所示。当R1收到R2发送的如表2所示的(V,D)报文后,按照以下规律更新路由表的信息。
·如果R1的路由表没有某项路由记录,则R1在路由表中增加该项,由于要经过R2转发,因此距离值要在R2所提供的数值基础上加1。
·如果R1的路由表中的某项路由记录比R2发送的对应项的距离值加1还要大,则R1在路由表中修改该项,距离值为R2提供的数值加1。可见,对于路由器距离值为0的直连网络,则无须进行更新操作,其路由距离保持为0。
对比表1和表2发现,R1到达目的网络20.0.0.0的距离为5,而表2中:R2到达目的网络20.0.0.0的距离为3。由于5>3+1=4,此时R1经过R2到达目的网络20.0.O.0的路由距离变短了,因此R1要根据 R2提供的数据,修改相应路由项的距离值为4(即3+1)。
R1到达目的网络30.0.0.0的距离为4,而表2中R2到达目的网络30.0.0.0的距离也为4。由于4<4+1=5,如果R1经过R2到达目的网络30.0.0.0反而增加了路由距离,因此R1无须进行更新操作,将保持该路由条目原来的参数。
同理,R1到达目的网络40.0.0.0的距离为3,而表2中R2到达目的网络40.0.0.0的距离为4。由于3<4+1=5,如果R1经过R2到达目的网络40.0.0.0反而增加了路由距离,因此R1无须进行更新操作,将保持该路由条目原来的参数。
同理,R1到达目的网络50.0.0.0的距离为2,而表2中R2到达目的网络50.0.0.0的距离为1。由于2=1+1,显然R1经过R2到达目的网络20.0.0.0,并不能得到更短的路由距离,因此R1无须进行更新操作,将保持该路由条目原来的参数。
经RIP路由重新计算后的R1路由表如表3所示。
表3 修改后R1路由表
目的网络 |
距离 |
路由 |
目的网络 |
距离 |
路由 |
10.0.0.0 |
0 |
直接 |
40.0.0.0 |
3 |
R4 |
20.0.0.0 |
4 |
R2 |
40.0.0.0 |
2 |
R5 |
30.0.0.0 |
4 |
R3 |
|
|
|
|
19. 有如下C语言程序
void * th_f(void * arg)
{
printf("Hello World");
pthread_exit(0);
}
int main(void)
{
pthread_t tid;
int st;
st=pthread_create(&tid, NULL, th_f, NULL);
if(st==0)
printf("Oops, I can not create thread\n");
exit(NULL):
}
针对上述程序,下列叙述中哪一个是正确的?
- A.程序运行中最多存在1个线程
- B.程序运行中最多存在2个线程
- C.程序运行中最多存在3个线程
- D.程序运行中最多存在4个线程
A B C D
25. 为正确使用临界资源,可把对临界资源的访问分成进入区、临界区、退出区和剩余区四部分。请指出下列飞机订票代码中带有下划线部分的语句属于哪一个区域?
int booking(id)//订票例程
{
int c;
while TS(&look);//Test-and-Set指令
c=fetch(ticket);//从服务器取剩余票额
show(c);//显示
if(read(input=1)//是否订票?
{
c=c-1;//票额减1
send(c);//送回新数据
}
lock=FALSE;//置标志为F
output(list);//打印机票
}
- A.临界资源访问过程中的进入区
- B.临界资源访问过程中的临界区
- C.临界资源访问过程中的退出区
- D.临界资源访问过程中的剩余区
A B C D