网站地图
范文同学网


自动化 模具 机械 电子 通信 动画 英语范文 工程管理 金融范文 旅游管理 工业工程 生物工程 给排水范文 西门子PLC 历史学 三菱PLC
单片机 财务 会计 法律 行政 物理 物流范文 电子商务 制药工程 包装工程 土木工程 材料科学 汉语言范文 欧姆龙PLC 电压表 松下PLC
计算机 化工 数电 工商 食品 德语 国贸范文 人力资源 教育管理 交通工程 市场营销 印刷工程 机电一体化 数控范文 变电站 文化产业

  • 网站首页|
  • 文档范文|
  • 人工降重|
  • 职称文章发表|
  • 合作期刊|
  • 范文下载|
  • 计算机范文|
  • 外文翻译|
  • 免费范文|
  • 原创范文|
  • 开题报告

联系方式

当前位置:范文同学网 -> 免费范文 -> 电子通信 -> IP协议设计实现—重装模块(二)
自动化文档范文| 电子机电范文| 测控技术范文| 通信专业范文| 电气工程范文| 通信工程范文| 电子信息工程范文| 免费自动化范文| 免费电子范文| 免费电气范文| 通信范文
·电气自动化原创文章范文 ·学前教育专业原创文章范文 ·国际经济贸易原创文章范文 ·药学专业原创文章范文 ·英语专业原创文章范文 ·公共事业管理原创文章范文
·金融专业原创文章范文 ·广播电视编导原创文章范文 ·电子商务专业原创文章范文 ·法律专业原创文章范文 ·工商管理原创文章范文 ·汉语言文学原创文章范文
·人力资源管理原创文章范文 ·摄影专业原创文章范文 ·心理学专业原创文章范文 ·教育管理原创文章范文 ·市场营销原创文章范文 ·计算机专业原创文章范文
·物流管理专业原创文章范文 ·小学教育专业原创文章范文 ·行政管理专业原创文章范文 ·土木工程管理原创文章范文 ·财务会计专业原创文章范文 ·信息管理信息系统原创范文
·新闻学专业原创文章范文 ·眼视光技术原创文章范文 ·播音与主持原创文章范文 ·广告学专业原创文章范文 ·表演专业原创文章范文 ·动画专业原创文章范文
·视觉传达设计原创文章范文 ·数控技术专业原创文章范文 ·录音艺术原创文章范文 ·光机电应用技术原创范文 ·机电一体化原创文章范文 ·印刷技术专业原创文章范文
·动漫设计与制作原创范文 ·软件技术专业原创文章范文 ·书法学专业原创文章范文 ·应用电子技术原创文章范文 ·电子信息工程技术原创范文 ·机械专业原创文章范文
·酒店管理专业原创文章范文 ·旅游管理专业原创文章范文 ·文化产业管理专业原创范文 ·体育教育专业原创文章范文 ·通信工程专业原创文章范文 ·护理专业原创文章范文

本专业推荐:带proteus仿真程序的文档设计范文  原创文档范文点击进入 → 自动化单片机相关的原创文档范文

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

本文ID:LW6372 ¥
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结构中的服务字段,*/ /*防止报头损坏,从标志字段复制*/ ..
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

IP协议设计实现—重装模块(二)相关范文
上一篇:DDS的杂散对比与级联方案的研究 下一篇:MATLAB正交振幅调制解调仿真分析
点击查看关于 协议 设计 实现 模块 的相关范文题目 【返回顶部】
精彩推荐
电气工程自动化原创范文  电子商务原创文章范文
人力资源专业原创文章范文 土木工程原创文章范文
工商管理专业原创范文    药学专业原创范文
汉语言文学专业原创范文  会计专业原创文章范文
计算机技术原创文章范文  金融学原创文章范文
法学专业原创文章范文   市场营销专业原创范文
信息管理专业原创文章范文 学前教育专业原创范文
公共事业管理专业原创范文 英语专业原创范文
教育管理专业原创范文   行政管理专业原创范文
热门范文

关于我们 | 联系方式 | 范文说明 | 网站地图 | 免费获取 | 钻石会员 | 硕士文章范文


范文同学网提供文档范文,原创文章范文,网站永久域名www.lunwentongxue.com ,lunwentongxue-范文同学网拼音首字母组合

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

Copyright@ 2009-2024 范文同学网 版权所有