P2P检测系统设计Word格式.docx
- 文档编号:19244007
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:17
- 大小:25.27KB
P2P检测系统设计Word格式.docx
《P2P检测系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《P2P检测系统设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
6.2控制表21
6.1.76.2.1p2p用户属性表21
6.1.86.2.2p2p系统参数表21
6.1.96.2.3p2p黑名单表21
6.1.106.2.4p2p白名单表21
1.引言
1.1.背景
当今时代,因特网的迅猛发展,已遍布世界的每个角落。
人们的生活已很难离开互联网络。
一方面,互联网、宽带用户的大量接入,另一方面服务提供商提供的服务和网络自然在急速增加和急剧膨胀,电信运营商的可接入带宽很难满足市场和用户的需要,尤其近年来发展的P2P技术的普遍应用,大量占用支干网的带宽,影响网络服务的正常提供和其他用户的使用。
为保证用户的正常使用和网络服务的提供,电信运营商有必要对P2P技术的适当引导和限流,减少运营商的投资和运行费用,节省下来的宽带带来的效益非同小可。
根据客户需求,我们有必要开发一套P2P检测系统,对P2P协议进行分析检测,并对超过带宽要求,速率过高的用户进行限流
1.2.编写目的
明确本系统的各模块功能和结构,为下一步的系统编码和维护提供依据。
1.3.参考标准或资料
●RFC1521BASE64算法
●RFC18513DES算法
●RFC1852SHA算法
●ETFSSLV1.1(1996.1)安全套接层SecureSocketLayer
1.4.名称术语
P2P
Peertopeer(对等网络)
IPX
InternetworkPacketExchange(网间数据包交换),IPX协议是NovellNetWare自带的最底层网络协议。
AppleTalk
AppleTalk是由Apple公司推出的一种多层协议,支持网络路由选择、事务服务、数据流服务以及域名服务,并且通过Apple硬件中的LocalTalk接口全面实现Apple系统间的文件和打印共享服务。
Decnet
DECnet是由数字设备公司(DigitalEquipmentCorporation)推出并支持的一组协议集合。
802。
3
IEEE802.3协议称作以太网协议,它是IEEE局域网协议的一支。
EEE802.3用户只需要在华亚和讯的某一业务系统注册后,则该用户在华亚和讯的综合业务运营支撑系统中就拥有一个合法的、唯一的身份,用户通过该身份可以登录华亚和讯的任一其它业务系统。
ICMP
ICMP是“InternetControlMessageProtocol”(Internet控制消息协议)的缩写。
它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
SSL(SecuritySocketLayer)
安全套接层,是面向连接的一种互联网应用层协议,用于通讯过程中保证客户端和服务端的数据完整性和保密性。
SOAP(SimpleObjectAccessProtocol)
简单对象访问协议,是Web服务技术的核心技术之一,用于Web服务调用的XML消息表示。
NTP(NetWorkTimeProtocol)
网络时钟协议
2系统设计目标和原则
最大限度地满足用户的需要和为客户着想,有实时,高效的处理能力
(1)程序代码力求规范化,易读易懂
(2)程序结构清晰,结构化,易理解,易维护,易扩展,
(3)可靠性:
系统设计中要充分考虑各种可能出现的异常情况,采取容错手段,保证系统稳定运行。
(4)实用性:
3数据结构部分
本系统与先前已开发的产品和将来要开发的产品位于同一平台,系统之间有很多联系和相关性,很多结构和内存共用,但由于P2P系统的自有特性,要单独开辟一大片内存由于存储用户流量等方面的数据。
3.1协议用户流量分析的HASH数据结构
/*在线用户数据信息的HASH数据结构*/
typedefstructonlineinfo_list
{
ONLINE_INFOinfo;
structonlineinfo_list*next;
}ONLINEINFO_LIST;
3.2线用户信息结构
/*用户在线信息表的数据结构*/
typedefstructonline_info
{
unsignedintlIpAddress_SMG_PACKED;
/*IP地址*/
charcUserName[USERNAMELENGTH+1]_SMG_PACKED;
/*注册名称*/
charcName[USERNAMELENGTH+1]_SMG_PACKED;
/*用户真实名*/
charcCurrentName[USERNAMELENGTH+1]_SMG_PACKED;
/*当前上线名称*/
unsignedcharcUserType_SMG_PACKED;
/*用户类型*/
unsignedcharcUrlLog_SMG_PACKED;
/*记录URL标志*/
/*第0位:
是否记录用户所有的访问页面详细日志只针对http协议(0.NO1.YES)
第1位:
是否记录防鲨网业务中阻断日志
第2位:
是否记录干扰,封堵的日志0:
不记录1:
记录
*/
unsignedintlIcsId_SMG_PACKED;
/*ICS对应的ID(0:
表无开通ICS)*/
unsignedintlForbidId_SMG_PACKED;
/*拒绝页面ID(该值为0,则用缺省)*/
unsignedintlForceId_SMG_PACKED;
/*强制门户ID(该值为0,则没有)*/
unsignedcharcAuthFlag_SMG_PACKED;
/*用户其它标志*/
/*第1位:
表示该用户是否要将数据实时送给UBAS(0.NO1.YES)
表示该用户是否要将数据记日志给UBAS(0.NO1.YES)
第3位:
表示有否开通配符匹配功能(0.NO1.YES)
unsignedcharcIpsFlag_SMG_PACKED;
/*IPS标志*/
开通IPS(0=NO1=YES)
第3位,表示是否开通定向推送(0没有开通;
1开)
第4位,表示是否开通广告过滤,替换业务(0=没有开通;
1=开通).
*/
unsignedcharcIcsFlag_SMG_PACKED;
/*用户ICS状态*/
是否开通ICS(0=NO1=YES)
URL的控制模式(0.黑1.白)
端口的控制模式(0.黑1.白)
是否开通地址关键字过滤(0=NO1=YES)
第4位:
超出时间控制范围后的控制方式(0.阻断1.放行)
第5位:
是否有时间控制功能(0=NO1=YES)
第6位:
是否开通服务控制功能(0=NO1=YES)
unsignedintlProtocolFlag_SMG_PACKED;
/*协议控制标示*/
全部封堵(1=封堵<
包括80端口>
0=不封堵)
部分封堵(全局白名单端口不进行封堵)<
1=封堵0=不封堵>
是否要阻断OICQ(0.NO1.YES)
是否要阻断H323(0.NO1.YES)<
30.31为0是有效>
是否要阻断SIP(0.NO1.YES)<
是否要阻断MGCP(0.NO1.YES)<
H248封堵(1=封堵0=不封堵)
第7位:
BT封堵(1=封堵0=不封堵)
第8位:
Gnutella封堵(1=封堵0=不封堵)
第9位:
EDonkey封堵(1=封堵0=不封堵)
第10位:
SKYPE(VOIP)
第11位:
盈动(VOIP)
第30,31位:
是否要对H323,SIP,MGCP进行噪音干扰(00.NO01.低10.中11高)
unsignedshortweek_time[7][3][2]_SMG_PACKED;
/*每周时间控制*/
unsignedintlMaxTime[7]_SMG_PACKED;
/*每天上网最长时间(0:
表不限)*/
unsignedintlCurrentTime_SMG_PACKED;
/*当天已经累计上网时间*/
unsignedintpush_id[MAX_PUSH_NUM]_SMG_PACKED;
/*PUSH_ID*/
unsignedintlPushNum[MAX_PUSH_NUM]_SMG_PACKED;
/*PUSH总数*/
unsignedintlDayPushNum[MAX_PUSH_NUM]_SMG_PACKED;
/*当天PUSH总数*/
time_tlasttime[MAX_PUSH_NUM]_SMG_PACKED;
/*最后PUSH时间*/
unsignedcharcCaller[13]_SMG_PACKED;
/*主叫号码*/
unsignedcharcCalled[13]_SMG_PACKED;
/*被叫号码*/
unsignedshortdisturb_time[7][3][2]_SMG_PACKED;
/*干扰周时间控制*/
unsignedshortpercent[2]_SMG_PACKED;
/*干扰百分比(全0表封堵)*/
ONLINE_ATTR_INFOattr_info_SMG_PACKED;
/*ICS的最后访问信息*/
ONLINE_ICS_INFOics_info_SMG_PACKED;
ONLINE_PROFESSIONALprof_info_SMG_PACKED;
/*专业版内存存储*/
}ONLINE_INFO;
#defineMAXPROFESSIONALNUM10
typedefstructonline_professional
unsignedcharcType[MAXPROFESSIONALNUM]_SMG_PACKED;
/*类型*/
unsignedcharcFlag[MAXPROFESSIONALNUM]_SMG_PACKED;
/*标志*/
unsignedshortiValue1[MAXPROFESSIONALNUM]_SMG_PACKED;
/*值1*/
unsignedshortiValue2[MAXPROFESSIONALNUM]_SMG_PACKED;
/*值2*/
unsignedintlValue3[MAXPROFESSIONALNUM]_SMG_PACKED;
/*值3*/
P2P_STAT*p2p_stat_SMG_PACKED;
/*p2p检测系统流量分析有结构*/
}ONLINE_PROFESSIONAL;
3.3用户p2p检测系统流量统计信息结构
象一些可变的影响系统性能的参数,我们一般定义在配置文件中,在设计中我们暂时先定义成宏:
#defineMAXTIMEVAL120/*流量统计时间最大间隔*/
#defineMMXPRONUM10/*协议最大种类*/
#defineOPENET_BITTORRENT_TYPE1
#defineOPENET_GNUTELLA_TYPE2
#defineOPENET_EDONKEY_TYPE3
#defineOPENET_100BAO_TYPE4
#defineOPENET_POCO_TYPE5
#defineOPENET_KUGOO_TYPE6
#defineOPENET_KAMUN_TYPE7
#defineOPENET_REALLINK_TYPE8
#defineOPENET_KDT_TYPE9
#defineOPENET_ILINK_TYPE10
/*p2p检测系统流量分析有结构*/
typedefstructp2p_stat
unsignedintiStartTime_SMG_PACKED;
/*流量统计开始时间,当数组下表为
0表示BT;
1表示GNUTELLA;
2表示Edonkey;
……*/
3、百宝
4、POCO
5、酷狗KUGOO
6、卡盟(KAMUN)
7、reallink
8、快递通(KDT)
9、ILink(互联网资源交换系统)
unsignedintiFlowNum[MAXPRONUM][2]_SMG_PACKED;
/*几种p2p协议总共流量,第一个下表分别表示BT,Gnutella,Edonkey,第二个下表分别表示字节数,包数*/}P2P_STAT
3.4链路信息存储结构
#defineMAXLINKNUM20/*最大链路数*/
typedefstructlinklist{
charlinkname[12];
_SMG_PACKED;
/,
第一个下标表示协议种类,第二个下标分别表示字节数,包数*/
}LINKLIST
typedefstructp2plinklist{
/*流量统计开始时间,所有协议共用的公告时间*/
LINKLISTlinklist[MAXLINKNUM]_SMG_PACKED;
}P2PLINKLIST
我们定义一个全局变量来专门统计链路的流量
P2PLINKLISTP2Plinklist;
3.5连接状态HASH表结构
typedefstructuserconect{
unsignedlongtime;
/*最高位为连接状态1:
有效0:
无效,其他31位为上次连接时间后31位*/
unsignedlongnhash;
/*校验Hash值*/A
unsignedcharprotocol_type/*1-BT,2-Gnutella,3-Edonkey*/
}USERCONNECT;
3.6通用数据包结构
typedefstructlistsmg
longtype_SMG_PACKED;
/*packettype*/
unsignedcharcPacketBuffer[1600]_SMG_PACKED;
intconnfd_SMG_PACKED;
/*socketdescription*/
intmlen_SMG_PACKED;
unsignedintseq_SMG_PACKED;
unsignedshortdev_num_SMG_PACKED;
unsignedcharrecv_type_SMG_PACKED;
/*1=GRE2=L2*/
unsignedcharsend_type_SMG_PACKED;
/*1=change*/
shortstatus_SMG_PACKED;
/*0.free1.deal2.send3.account4.hash*/
time_trecvtime_SMG_PACKED;
/*receivepackettime*/
structtimevalrecv_time_SMG_PACKED;
structsockaddr_infrom_SMG_PACKED;
structlistsmg*next_SMG_PACKED;
/*nextnode*/
structlistsmg*previous_SMG_PACKED;
/*previousnode*/
}LISTSMG;
3.7IP包头和TCP包头结构
/**********************************************************************/
/*IP包头数据结构*/
typedefstructip_head
unsignedshortiVersion;
unsignedshortiLength;
unsignedshortiFlag;
unsignedshortiSegment;
unsignedshortiProto;
unsignedshortiCheckSum;
unsignedintlSrcIp;
unsignedintlDestIp;
}IP_HEAD;
/*TCP包头数据结构*/
typedefstructtcp_head
unsignedshortiSrcPort;
unsignedshortiDestPort;
unsignedintlSeq;
unsignedintlAckSeq;
unsignedcharcLength;
unsignedcharcFlag;
unsignedshortiWindows;
unsignedshortiPointer;
}TCP_HEAD;
3.8存放本地设备所对应的数据结构
typedefstructdev_info
chardev_name[12]_SMG_PACKED;
charlink_name[12]_SMG_PACKED;
UINT4dev_ip_SMG_PACKED;
u_shortdev_mode_SMG_PACKED;
ushortdev_wccp_flag_SMG_PACKED;
ushortdev_vlan_flag_SMG_PACKED;
/*0:
正常 1:
收VLAN包*/
ushortdev_type_SMG_PACKED;
E10001:
BCM*/
ushortnet_type_SMG_PACKED;
/*0=出口流量1=入口流量*/
}DEV_INFO;
2.9系统参数
系统的一些外部变量和系统参数通过该结构来存储.
typedefstructsystem_para
charsystem_code[7]_SMG_PACKED;
/*机构编码*/
charsystem_name[13]_SMG_PACKED;
/*机构名称*/
charctrol_flag_SMG_PACKED;
/*是否限流*/
intMaxP2Pflow_SMG_PACKED;
/*最高流量*/
unsignedshortdisturb_time[7][3][2];
_SMG_PACKED;
/*限流时间段控制*/
unsignedshortFlowInterval_SMG_PACKED;
/*流量统计的间隔*/
}SYSTEM_PARA;
4前置机部分各个模块的设计
4.1检测的范围
对p2p协议的检测,要能满足基于用户,基于全局等方面的流量分析.
对前置机的流量分析是从流出和流入两个方面分析。
我们以基于用户的检测为基础,存储各方面的信息于日志中,策略服务器对日志文件的字段信息进行统计,得出基于全局,基于链路等多方面的统计信息。
4.2模块设计
4.2.1检测
原则上各个协议分别用一个模块尽心设计处理。
模块间相互独立,没有任何关联。
各个协议要完成各自负责的协议的分析,用户的流量统计,限流的实现,日志的输出。
P2p协议下载或上传一个文件:
一种是通过TCP包,一种是通过UDP包,还有一种是两者的综合.
各种协议分析的特征值:
emule(或edonkey):
第一个字节值0xe3(edonkey类型),第六个字节为0x46(SendPart小类),有此包后,建立起的tcp连接开始传送数据.
BT(bitComent):
发送完Handshake包或BitTorPiece包后,开始在建立起的TCP连接上传送数据.
P2P的几个协议的模块在结构和流程上基本相似:
1.对传入的IP数据包的类型进行解析,不符合要求的返回。
2.对该类型的包进行分析,如该包能分析出服务器地址,则进行分析并写日志,返回。
3.如是自己需要的P2P协议连接包(最好是能有效连接包并能马上传送上传下载的数据),接着判断该连接是否已经在用户列表中,不在用户列表中则插入用户列表中,如果已在用户列表中,不做处理,也返回该模快。
4.对不是自己需要的P2P协议连接包,就判断该IP包是否是上传或下载的数据包。
判断是否是该协议的上传下载数据包,是根据用户列表中是否有此连接。
(1)不在连接表中,返回。
(2)该连接在用户列表中,累加流量,并根据在线用户结构中写日志的时间间隔判断是否需要写日志,接着根据用户的流量最高限制和限流的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- P2P 检测 系统 设计