欢迎来到天天文库
浏览记录
ID:10495313
大小:102.00 KB
页数:17页
时间:2018-07-07
《linux系统下sniffer的实现(二)的论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Linux系统下Sniffer的实现(二)的论文boolreadtable()//读取table.dat{file*tab=fopen(table_file,"r");//打开文件intcount=fread(tab,sizeof(int),tab_size,tab);fflush(tab);//刷新文件流for(inti=0;i<=tab_size-2;i++)if(tab[i]!=-1tab[i+1]!=-1)tab[i+1]=tab[i+1]+tab[i];elsebreak;returntrue;}intloadpack()//加载数据包{inti;i
2、ntload_packs=0;file*pack=fopen(pack_file,"r");for(i=0;i<buf_count;i++){if(tab[to_be_load+i]!=-1tab[to_be_load+i+1]!=-1){intsize=tab[to_be_load+i+1]-tab[to_be_load+i];intoffset=tab[to_be_load+i];if(fread(buf+i,size,1,pack)!=1){printf("readerror...");exit(1);}load_packs++;//更新变量}e
3、lse{/*donothing*/}}fflush(pack);//刷新数据流to_be_load+=load_packs;//更新变量returnload_packs;//返回读取的数目} 3.4.2系统中的buffer 在现实中的很多系统中,buffer是很重要的一种思想,为的就是减少读取外部存储的次数,延长设备的使用寿命。.cOmbuffer在计算机系统中,应用是很广泛的,例如,在硬盘和内存之间存在一层缓冲区,在cpu和内存之间同样也存在一层缓冲区,这层缓冲区通常被称作cache。 在本系统中,也同样利用了buffer思想,有着传统意义上的原因,当然还考
4、虑到用户操作时的特殊性,系统的buffer思想描述如下: l在任意时刻,buffer内最多存储100个package数据 l刚开始,加载pack0~pack99共计100个package,当要查看pack100时,则采取的方法是:保留旧的50个package,加载新的50个package,则package编号变为:pack50~pack149,这样操作的原因是为了用户的方便,因为用户经常会查看某个报文附近的几个报文。 初始状态下,假设系统已经加载了编号为0到99的数据包,如图2.7所示: 图2.7加载前缓冲区内容 在某一时刻,假设用户想
5、查看编号为100的数据包,则需要重新加载,重新加载后的数据包如图2.8所示: 图2.8加载后缓冲区内容 使用此种buffer思想,用户操作的方便性即体现在这个方面,在对某条报文进行研究时,会经常查看它的临近报文,使用此种机制,那么便不会不断的对要查看的临近报文进行加载,减少了读取硬盘的次数。 3.4.3系统的显示问题 在控制台上,要想建造一个好的用户操作界面,是一件比较难的事情,根据我的体验,linux下著名的sniffer工具tcpdump的操作界面也不够友好,普通用户很难操作。在ple”模式,“detail”模式意为“详细显示模式”,“
6、simple”模式意为“简单显示模式”。 在“detail”模式下,每个包得到尽可能详细的解析,解析包的每一层信息,示意如图2.9: 图2.9详细显示模式 根据上图显示的信息,可以得知此包是一个icmppackage,具体内容属于pingreply,更详细得知是本主机ping本主机的一个数据包。 “simple”模式意为简单模式,所谓简单模式就是对每个package尽可能的用一句话来描述,虽然尽可能的简短,但是一定要包含以下信息: lpackage的类型 lpackage的作用 这种模式的重要作用是在用户对包进行检测和测量时,通常会查看相
7、邻的几个package,这样的模式方便用户进行“查看上一个package”和“查看下一个package”,只要用户在这种模式下按“n”或者“n”就可以查看下一个package,只要按“l”或“l”键就可以查看上一个package。 “simple”模式的示意如图2.10所示: 图2.10简单显示模式 从图中可以看出,当前正在查看的包用“蓝色”的线条标出,方面用户的操作,当用户向上或者向下进行选择时,此蓝色线条也同样会向上或向下运动,这样做的原因是是的系统显示具有动态效果。 “detail”模式的显示比较简单,只要逐层进行解析就可以了,下面
此文档下载收益归作者所有