电气工程论文网


  • 首页|
  • 自动化毕业论文|
  • 电子机电毕业论文|
  • 电子通信论文|
  • 电气工程论文|
  • 电子信息工程|
  • 电气工程原创论文|
  • 电气工程免费论文|
原创毕业论文 → 电气工程专业原创毕业论文   现成毕业论文范文 → 电气工程专业毕业论文范文

论文降重

当前位置:电气工程论文网 -> 电子通信免费论文 -> IP协议设计实现—重装模块(二)

IP协议设计实现—重装模块(二)

本文ID:LW6372
IP协议设计实现—重装模块(二)
ipq_dst; /*地址清单、目的与源地址*/
}
ipasfrag(过度结构)结构:
struct ipasfrag{
/* 预处理*/
#if BYTE_ORDER==LITTLE_ENDIAN
Char ip_hl=4,ip_v=4;
#endif
#if BYTE_ORDER==BIG_ENDIAN
char ip_v=4,ip_hl=4;
#endif
 char ipf_mff;   /* ipf_mff成员覆盖ip结构中的服务字段,*/
                 /*防止报头损坏,从标志字段复制*/
short ip_len/*下是报头定义,与ipq结构类似*/
unsigned short ip_id;
short ip_off;
unsigned char ip_p;
unsigned short ip_sum;
struct ipasfrag *ipf_next,*ipf_prev;
}
3详细流程:
ipintr先要对接收到的分片进行处理,如果它检查到MF或分片偏移为非0,则分组就是一个必须重装的分片,反之,就可以跳过重装。当一个缓存区无法容纳分组时,接口就将整个分组返回,在ipintr函数中在处理前应将IP首部移到缓冲区上。ipintr把一个要处理的分片传给和一个指针传给ip_reass,其中指针指向ipq中匹配的的重装首部,ip_reass可能把分片重装并返回一个完整的数据报(只有一个分片),也可能将该分片链接到数据报的重装链表上(不只一个分片),等其他分片到达后重装。ip_reass在一个由ipf_next和ipf_prev链接起来的双向循环链表上,并收集某个数据报分片。当在重装时产生错误,ip_reass就丢弃该分片,返回一个空。在设计中,最多实现重装576字节的数据报。ip_reass先创建重装表,然后切断分组,在重装表中找相应位置,插入分组,再重装数据报。
流程图:图(3)

 

以上就是重装的流程图。在超时检查时,如果没有超时,则继续接收,直到完成为止。
 

(三)基本代码实现
由于只有一个模快,故没有主函数main(),以下就是函数ipintr()与ip_reass的实现以及必要的说明,其中的数据结构定义包含在chong_z.h中。
IP数据报首部定义:
struct  ip{
/* 预处理*/
#if BYTE_ORDER==LITTLE_ENDIAN
unsigned char ip_hl=4,ip_v=4;
#endif
#if BYTE_ORDER==BIG_ENDIAN
usigned char ip_v=4,ip_hl=4;
#endif
unsigned char ip_tos;/*服务类型,下面的前面已给出*/
short ip_len;
short id;
short ip_off;
#define IP_DF 0x4000;/*不分片标志*/
#define IP_MF 0x2000;/*更多分片标志*/
#define IP_OFFMASK 0x1fff;/* 分段位*/
unsigned char ip_ttl;
unsigned char ip_p;
unsigned short ip_sum;/*检验和*/
struct in_addr,ip_src,ip_dst;
};
mbuf缓冲区定义:
struct m_hdr{
struct mbuf  *mh_next;/*链表的下一个缓冲区*/
struct mbuf  *mh_nextpkt;/*对列中的下个链表*/
int mh_len; /*缓冲区数据总数*/
short mh_type; /*数据类型*/
short mh_flags; /*标志位*/}
struct pkthdr{
int len; /*数据报总长*/
}
struct mbuf{
struct m_hdr;
union{
 struct{    struct pkthdr MH_pkthdr;
 union{
  char MH_databuf[MHLEN];
 }MH_dat;
 char M_databuf[MLEN];
 }M_dat;
 };
 本次设计用到的宏定义:
 #define m_next  m_hdr.mh_next
 #define m_len   m_hdr.mh_len
 #define m_pkthdr  M_dat.MH.MH_phthdr
 #define dtom(x) ((struct mbuf *)((int)(x)&~(MSIZE-1)
 /*取得一个放在mbuf中任意位置的数据指针,并返回一mbuf
 *  本身结构的指针   */
 分配mbuf函数m_get实现:
 struct mbuf *
 int nowait,type;
 m_get(nowait,type)
 {
 struct mbuf *m;
 MGET(m,nowait,type);
 return(m);}
ipintr代码:
void ipintr()/*对收到分片的处理*/
{
struct ip  *ip;
struct mbuf *m;
struct ipq *fp;
struct mbuf  *m;/*缓冲区指针*/
int  hlen;
next:
s=splimp();/*调用中断*/
IF_DEQUEUE(&ipintrq,m);
splx(s);/*打开网络中断*/
if(m==0) return;
  if(ip->ip_off&&ip->IP_DF){ /*如果分片位或更多分片为*0,则必须重装,反之则跳过重装*/
if(m->m_flags&M_EXT){
if(m=m_pullup(m,sizeof(struct ip))==0)
ipstat.ips_toosmall++;
goto next;}
ip=mtod(m,struct *ip);}/*搜索此数据报分片对列*/
for(fp=ipq.next;fp!=&ipq;fp=fp->next)
if(ip->ip_id==fp->ipq_id&&ip->src.s_addr==fp->ipq_src.s_addr&&ip->ip_dst.s_addr==fp->ipq

首页 上一页 1 2 3 4 下一页 尾页 2/4/4

下载地址 WORD格式全文下载链接(充值:元)


IP协议设计实现—重装模块(二)......
论文人工降重
本论文《IP协议设计实现—重装模块(二)》在电子通信免费论文栏目,由电气工程论文网整理,转载请注明来源 www.dqlunwen.top 更多论文,请点电气工程论文查看
上一篇:DDS的杂散对比与级联方案的研究 下一篇:MATLAB正交振幅调制解调仿真分析

点击查看关于 协议 设计 实现 模块 的相关论文题目 2010-04-11 22:02:33【返回顶部】
联系方式

相关栏目

光机电应用技术
机电一体化
应用电子技术
电子信息工程技术
自动化免费论文
自动化专业毕业论文
电子专业免费论文
电子机电毕业论文
电气工程免费论文
测控技术与仪器
电气工程原创论文
电子通信论文
电气自动化开题
电子机电开题报告
电子通信免费论文
PLC相关外文翻译
电子机电信息外文翻译
电子通信外文翻译
联系方式
电子信息工程论文下载
电气工程论文下载


联系方式


电气工程论文网提供电气工程论文范文,电气工程毕业论文,网站永久域名www.dqlunwen.top 

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 17304545@qq.com

Copyright@ 2009-2022 电气工程论文网 版权所有