ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:16.18KB ,
资源ID:7091796      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7091796.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络专题训练Ipv4转发实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

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

2、 包含路由表项目的地址,掩码长度和下一跳的信息 4.转发处理函数 int stud_fwd_deal(char*pBuffer,int length)5.本地处理函数 void fwd_LocalRcv(char*pBuffer,int length)6.下层发送函数 void fwd_SendtoLower(char*pBuffer,int length,unsigned int nexthop)7.丢弃分组函数 void fwd_DiscardPkt(char*pBuffer,int type)8.获取本机地址函数 UINT32 getlpv4Address()四、设计思路 首先设计路由表

3、项结构 struct routeTableltem unsigned int destIP;/目的地址 IP unsigned int mask;/掩码,用于取出对应的网络 地址 unsigned int masklen;/掩码长度,用于实现最长 匹配 unsigned int nexthop;/下一跳地址;vector m_table/存储路由表 然后,在路由表项添加函数中,处理路由表项的添加 void stud_route_add(stud_route_msg*proute)routeTableltem newTableltem;newTableltem.masklen=ntohl(pro

4、ute-masklen);记录掩码长度 newTableltem.mask=(1v(ntohl(proute-masklen)-1);获得掩码 newTableltem.destIP=ntohl(proute-dest)&n ewTableltem.mask;/获取网路 地址段 newTableltem.nexthop=ntohl(proute-nexthop);获取下一条 m_table.push_back(newTableltem);加入路由表 return;每当收到一个新的包时 首先读取包头信息/获取包头信息 int IHL=pBufferO&Oxf;/获取包头长度(bits/32)/c

5、out IHL:IHL endl;int TTL=(int)pBuffer8;/timetolive,存活时间 int headerchecksum=ntohl(*(unsigned short*)(pBuffer+10);头部校验和 int destIP=ntohl(*(unsigned int*)(pBuffer+16);目的 地址 然后判断此包是否是发给本机的 if(destlP=getlpv4Address()fwd_LocalRcv(pBuffer,length);return 0;判断是否应该丢弃此包 if(TTL=0)fwd_DiscardPkt(pBuffer,STUD_FOR

6、WARD_TEST_TTLERROR);return 1;查找最长匹配 for(int i=0;i longestMatchLen&m_tablei.destlP=(destIP&m_tablei.mask)bestMatch=i;isMatch=true;longestMatchLen=m_tablei.masklen;查找成功,重新计算校验和并发送 if(isMatch)char*buffer=new charlength;memcpy(buffer,pBuffer,length);buffer8 卜-;TTL-1 int sum=0;/重新计算校验和 unsigned short int

7、 localCheckSum=0;for(int j=0;j 2*IHL;j+)if(j=5)continue;sum=sum+(bufferj*2 16)!=0)sum=unsigned(sum)16+sum&Oxffff;localCheckSum=htons(0 xffff-(unsigned short int)sum);memcpy(buffer+10,&localCheckSum,sizeof(unsigned short);/发送 fwd_SendtoLower(buffer,length,m_tablebestMatch.nexthop);return 0;查找不成功,丢弃该包

8、 else fwd_DiscardPkt(pBuffer,STUD_FORWARD_TEST_NOROUTE);return 1;五、收获 1.对 Ipv4的转发机制有了实际的认识和体会 2.实践了最长匹配算法 六、源代码/*THIS FILE IS FOR IP FORWARD TEST*/#include syslnclude.h#include using std:vector;#include using std:cout;/system support extern void fwd_LocalRcv(char*pBuffer,int length);extern void fwd_

9、SendtoLower(char*pBuffer,int length,unsigned int nexthop);extern void fwd_DiscardPkt(char*pBuffer,int type);extern unsigned int getlpv4Address();/implemented by students struct routeTableltem unsigned int destIP;unsigned int mask;unsigned int masklen;unsigned int nexthop;;vector m_table;void stud_Ro

10、utenit()m_table.clear();return;void stud_route_add(stud_route_msg*proute)routeTableItem newTableItem;newTableltem.masklen=ntohl(proute-masklen);newTableltem.mask=(1(ntohl(proute-masklen)-1);newTableltem.destIP=ntohl(proute-dest)&newTableltem.mask;newTableltem.nexthop=ntohl(proute-nexthop);m_table.pu

11、sh_back(newTableltem);return;int stud_fwd_deal(char*pBuffer,int length)int IHL=pBufferO&0 xf;int TTL=(int)pBuffer8;int headerChecksum=ntohl(*(unsigned short*)(pBuffer+10);int destIP=ntohl(*(unsigned int*)(pBuffer+16);if(destIP=getlpv4Address()fwd_LocalRcv(pBuffer,length);return 0;if(TTL=0)fwd_Discar

12、dPkt(pBuffer,STUD_FORWARD_TEST_TTLERROR);return 1;bool isMatch=false;unsigned int longestMatchLen=0;int bestMatch=0;for(int i=0;i longestMatchLen&m_tablei.destlP=(destIP&m_tablei.mask)bestMatch=i;isMatch=true;longestMatchLen=m_tablei.masklen;/cout find one endl;if(isMatch)char*buffer=new charlength;

13、memcpy(buffer,pBuffer,length);buffer8 卜-;/TTL-1 int sum=0;unsigned short int localCheckSum=0;for(int j=0;j 2*IHL;j+)if(j=5)continue;sum=sum+(buffer2v 16)!=0)sum=unsigned(sum)16+sum&Oxffff;localCheckSum=htons(0 xffff-(unsigned short int)sum);memcpy(buffer+10,&localCheckSum,sizeof(unsigned short);fwd_SendtoLower(buffer,length,m_tablebestMatch.nexthop);return 0;else fwd_DiscardPkt(pBuffer,STUD_FORWARD_TEST_NOROUTE);return 1;return 1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1