网络专题训练Ipv4转发实验报告

网络专题训练Ipv4转发实验报告

ID:48318462

大小:23.37 KB

页数:10页

时间:2020-01-10

网络专题训练Ipv4转发实验报告_第1页
网络专题训练Ipv4转发实验报告_第2页
网络专题训练Ipv4转发实验报告_第3页
网络专题训练Ipv4转发实验报告_第4页
网络专题训练Ipv4转发实验报告_第5页
资源描述:

《网络专题训练Ipv4转发实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、网络专题训练Ipv4转发实验报告一、实验目的1.了解路由器是如何为分组选择路由,并逐跳地将分组发送到目的主机。2.初步接触路由表这一数据结构,认识路由器是如何根据路由表确定分组转发的下一跳。二、实验要求1.设计路由表的数据结构。2.完成对Ipv4分组的接受和发送。3.完成对Ipv4分租的转发。三、实验基本框架1.路由初始化函数voidstud_Route_Init()2.路由添加函数voidstud_route_add(stud_route_msg*proute)3.路由信息结构体头部包含路由表项目的地址,掩码长度和下一跳的信息4.转发处理函数intstud_fwd_d

2、eal(char*pBuffer,intlength)5.本地处理函数voidfwd_LocalRcv(char*pBuffer,intlength)1.下层发送函数voidfwd_SendtoLower(char*pBuffer,intlength,unsignedintnexthop)2.丢弃分组函数voidfwd_DiscardPkt(char*pBuffer,inttype)3.获取本机地址函数UINT32getIpv4Address()一、设计思路首先设计路由表项结构structrouteTableItem{unsignedintdestIP;//目的地址IP

3、unsignedintmask;//掩码,用于取出对应的网络地址unsignedintmasklen;//掩码长度,用于实现最长匹配unsignedintnexthop;//下一跳地址};vectorm_table//存储路由表然后,在路由表项添加函数中,处理路由表项的添加voidstud_route_add(stud_route_msg*proute){routeTableItemnewTableItem;newTableItem.masklen=ntohl(proute->masklen);//记录掩码长度newTableItem.m

4、ask=(1<<31)>>(ntohl(proute->masklen)-1);//获得掩码newTableItem.destIP=ntohl(proute->dest)&newTableItem.mask;//获取网路地址段newTableItem.nexthop=ntohl(proute->nexthop);//获取下一条m_table.push_back(newTableItem);//加入路由表return;}每当收到一个新的包时首先读取包头信息//获取包头信息intIHL=pBuffer[0]&0xf;//获取包头长度(bits/32)//cout<<"IHL

5、:"<

6、fer,STUD_FORWARD_TEST_TTLERROR);return1;}查找最长匹配for(inti=0;ilongestMatchLen&&m_table[i].destIP==(destIP&m_table[i].mask)){bestMatch=i;isMatch=true;longestMatchLen=m_table[i].masklen;}}查找成功,重新计算校验和并发送if(isMatch){char*buffer=newchar[length];memcpy(

7、buffer,pBuffer,length);buffer[8]--;//TTL-1intsum=0;//重新计算校验和unsignedshortintlocalCheckSum=0;for(intj=0;j<2*IHL;j++){if(j==5)continue;sum=sum+(buffer[j*2]<<8)+(buffer[j*2+1]);}while((unsigned(sum)>>16)!=0)sum=unsigned(sum)>>16+sum&0xffff;localCheckSum=htons(0xffff-(unsigne

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。