文档介绍:计算机网络作业
教材P128所述的分组转发算法如下:
(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为No
(2)若网络N与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付, 执行(3)。
(3)若路,默认路由的下一跳也是 R&而对 于发送到网络直接传送到路由器 R1。
即路由器R2的路由表如下图所示:
目的主机所在的网络
子网掩的
下一跳地址
R3
R3
R1
具体程序代码如下:
#include<iostream>
usingnamespacestd;
classA//定义一个基类A
{
public:
intpart1;
intpart2;
intpart3;
intpart4;
};
Asubnet_ID;//用于存储子网号
classB:publicA//定义B类用于存储输入的点分十进制IP地址 {
public:
voiddisplay();
voidinput();
}D;//D用于存储输入的目的主机IP地址
voidB::input()//定义input函数,用于输入参数,分四部分输入,每部分以回国结束 {
cin>>part1;
cin>>part2;
cin>>part3;
cin>>part4;
)
voidB::display()//以点分十进制形式显示IP地址,子网掩码 (
cout<<part1<<".";
cout<<part2<<”.";
cout<<part3<<”.";
cout<<part4<<endl;
)
classC/旋义C类用于设定路由表中和项
(
public:
voidsetDEST(intp1,intp2,intp3,intp4);
voidsetSUBNET_MASK(inta1,inta2,inta3,inta4);
ADEST;〃DES必目的主机地址,类型为 A
ASUBNET_MASK;/F网掩码,类型为 A
);
voidC::setDEST(intp1,intp2,intp3,intp4)
(
=p1;
=p2;
=p3;
=p4;
)
voidC::setSUBNET_MASK(inta1,inta2,inta3,inta4)
(
=a1;
=a2;
=a3;
=a4;
)
voidAND(BIP,Csubnet_mask)//AND函数用于将IP地址和子网掩码遂位相“与”等到相应的 子网号
(
ASUB=;
=&;
=&;
=&;
=&;
) intmain()
(