网络专题训练Ipv4转发实验报告Word格式.docx
- 文档编号:20184797
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:7
- 大小:16.18KB
网络专题训练Ipv4转发实验报告Word格式.docx
《网络专题训练Ipv4转发实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《网络专题训练Ipv4转发实验报告Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
/掩码长度,用于实现最长匹配unsignedintnexthop;
/下一跳地址;
vectorm_table/存储路由表然后,在路由表项添加函数中,处理路由表项的添加voidstud_route_add(stud_route_msg*proute)routeTableltemnewTableltem;
newTableltem.masklen=ntohl(proute-masklen);
记录掩码长度newTableltem.mask=(1v(ntohl(proute-masklen)-1);
获得掩码newTableltem.destIP=ntohl(proute-dest)&
newTableltem.mask;
/获取网路地址段newTableltem.nexthop=ntohl(proute-nexthop);
获取下一条m_table.push_back(newTableltem);
加入路由表return;
每当收到一个新的包时首先读取包头信息/获取包头信息intIHL=pBufferO&
Oxf;
/获取包头长度(bits/32)/coutIHL:
IHLendl;
intTTL=(int)pBuffer8;
/timetolive,存活时间intheaderchecksum=ntohl(*(unsignedshort*)(pBuffer+10);
头部校验和intdestIP=ntohl(*(unsignedint*)(pBuffer+16);
目的地址然后判断此包是否是发给本机的if(destlP=getlpv4Address()fwd_LocalRcv(pBuffer,length);
return0;
判断是否应该丢弃此包if(TTL=0)fwd_DiscardPkt(pBuffer,STUD_FORWARD_TEST_TTLERROR);
return1;
查找最长匹配for(inti=0;
ilongestMatchLen&
m_tablei.destlP=(destIP&
m_tablei.mask)bestMatch=i;
isMatch=true;
longestMatchLen=m_tablei.masklen;
查找成功,重新计算校验和并发送if(isMatch)char*buffer=newcharlength;
memcpy(buffer,pBuffer,length);
buffer8卜-;
TTL-1intsum=0;
/重新计算校验和unsignedshortintlocalCheckSum=0;
for(intj=0;
j2*IHL;
j+)if(j=5)continue;
sum=sum+(bufferj*216)!
=0)sum=unsigned(sum)16+sum&
Oxffff;
localCheckSum=htons(0xffff-(unsignedshortint)sum);
memcpy(buffer+10,&
localCheckSum,sizeof(unsignedshort);
/发送fwd_SendtoLower(buffer,length,m_tablebestMatch.nexthop);
查找不成功,丢弃该包elsefwd_DiscardPkt(pBuffer,STUD_FORWARD_TEST_NOROUTE);
五、收获1.对Ipv4的转发机制有了实际的认识和体会2.实践了最长匹配算法六、源代码/*THISFILEISFORIPFORWARDTEST*/#includesyslnclude.h#includeusingstd:
vector;
#includeusingstd:
cout;
/systemsupportexternvoidfwd_LocalRcv(char*pBuffer,intlength);
externvoidfwd_SendtoLower(char*pBuffer,intlength,unsignedintnexthop);
externvoidfwd_DiscardPkt(char*pBuffer,inttype);
externunsignedintgetlpv4Address();
/implementedbystudentsstructrouteTableltemunsignedintdestIP;
unsignedintmask;
unsignedintmasklen;
unsignedintnexthop;
;
vectorm_table;
voidstud_Routenit()m_table.clear();
return;
voidstud_route_add(stud_route_msg*proute)routeTableItemnewTableItem;
newTableltem.mask=(1(ntohl(proute-masklen)-1);
newTableltem.destIP=ntohl(proute-dest)&
newTableltem.mask;
newTableltem.nexthop=ntohl(proute-nexthop);
m_table.push_back(newTableltem);
intstud_fwd_deal(char*pBuffer,intlength)intIHL=pBufferO&
0xf;
intheaderChecksum=ntohl(*(unsignedshort*)(pBuffer+10);
intdestIP=ntohl(*(unsignedint*)(pBuffer+16);
if(destIP=getlpv4Address()fwd_LocalRcv(pBuffer,length);
if(TTL=0)fwd_DiscardPkt(pBuffer,STUD_FORWARD_TEST_TTLERROR);
boolisMatch=false;
unsignedintlongestMatchLen=0;
intbestMatch=0;
for(inti=0;
/coutfindoneendl;
if(isMatch)char*buffer=newcharlength;
/TTL-1intsum=0;
unsignedshortintlocalCheckSum=0;
sum=sum+(buffer2v16)!
fwd_SendtoLower(buffer,length,m_tablebestMatch.nexthop);
elsefwd_DiscardPkt(pBuffer,STUD_FORWARD_TEST_NOROUTE);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 专题 训练 Ipv4 转发 实验 报告