文档介绍:计算机网络作业
教材P128所述的分组转发算法如下:
从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行(3)。
若路由表中有目的地址为D的如下图所示:
目的主机所在的网络
子网掩码
下一跳地址
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;//DEST为目的主机地址,类型为A
ASUBNET_MASK;〃子网掩码,类型为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()
{
Cc[3];
c[O].setDEST(O,O,O,O);〃为相应的路由表项赋值
c[0].setSUBN