飞秋详解一 飞秋详解

原文链接:http://wenku.baidu.com/view/3722277ba26925c52cc5bfa1.html
飞秋详解(一) 飞秋详解
1、设计要求与任务通过Ethereal抓包,认真分析飞秋的工作原理、实现方法和工作协议等,并仿照飞秋、设计实现一个简单的局域网聊天软件,尽量能够做到与飞秋兼容。先使用飞秋,熟悉飞秋的功能;深入分析每一部分的功能实现;通过防火墙观察飞秋使用的套接字情况,并抓包分析飞秋在使用过程中的网络数据传输,分析飞秋的应用协议,分析设计实现简单的聊天软件,实现好友列表维护和文本消息传送等功能。主要任务:深入理解TCP和UDP的工作原理和服务的特性,掌握套接字编程机制和方法;理解C/S架构和P2P两种应用模式;深入分析飞秋的功能、工作原理、应用协议等; 完成局域网聊天软件的分析、开发与调试;在设计报告中对飞秋进行全面和深入的剖析。2、设计正文2.1、飞秋分析飞秋是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和QQ,完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能,是飞鸽的完善代替者,另外,飞秋支持语音,远程协助群聊天(不需要服务器),它参考了飞鸽传书(FreeEIM)和QQ,完全兼容飞鸽传书协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能。2.1.1、飞秋的工作原理上线通知:对于飞秋而言,最关键的是局域网用户列表的建立;飞秋启动时使用UDP协议向255.255.255.255这个广播地址发送广播包,默认端口是2425。广播包内容包含用户名、工作组、主机名、IP等信息;已启动飞秋的用户通过2425端口收到此广播包后,就会在自己的用户列表中添加这个用户的用户名、工作组等信息,同时向对方IP发送本机用户的个人信息;从而双方都能建立起用户列表。聊天过程:飞秋在刷新用户列表时发送的广播包和启动时差不多,只不过返回的标识信息略有不同;可以做一个小工具,监控2425端口内存流,就能截获刷新和聊天时的消息。飞秋在传送聊天信息时同样使用UDP协议;由于UDP协议是无连接协议,传输速度快,但是没有确认机制,是不可靠的协议,需要自己定义返回信息的标志来判断对方是否收到信息。离线通知:用户离线时发送一个离线广播包到255.255.255.255,收到此广播包的用户,根据包中的IP地址(也可能是多种判断标志或者包含硬件标识,比如网卡地址等)删除对方的用户列表信息;广域网工作原理:飞秋在广域网中工作时,无法直接使用广播方式,靠手工添加“局域网外广播列表”来建立相互的关系。文件传输:飞秋传送文件是使用TCP协议,端口2425。2.1.2、飞秋协议分析和实现方法前文中提到了飞秋完全兼容飞鸽传书(IPMSG)协议,下面介绍一下飞鸽传书的协议。飞鸽传书的IP信使使用TCP/UDP协议提供收发消息及文件。其特性为IP信使能够安装在任何一个安装了TCP/IP协议栈的操作系统上,使用在线用户的动态识别机制,可以和在线所有用户进行信息交换。其运行机制使用TCP/UDP端口(默认端口为2425),消息的收发使用UDP协议,文件(文件夹)的收发使用TCP协议。飞鸽传书的命令字如下:基本命令字(32位命令字的低8位)IPMSG_NOOPERATION 不进行任何操作IPMSG_BR_ENTRY 用户上线IPMSG_BR_EXIT 用户退出IPMSG_ANSENTRY 通报在线IPMSG_SENDMSG 发送消息IPMSG_RECVMSG 通报收到消息IPMSG_GETFILEDATA 请求通过TCP传输文件IPMSG_RELEASEFILES 停止接收文件IPMSG_GETDIRFILES 请求传输文件夹选项位(32位命令字的高24位)IPMSG_SENDCHECKOPT 传送检查(需要对方返回确认信息)IPMSG_FILEATTACHOPT 传送文件选项附件类型命令(文件类型命令字的低8位)IPMSG_FILE_REGULAR 普通文件IPMSG_FILE_DIR 目录文件IPMSG_FILE_RETPARENT 返回上一级目录数据包格式为:包编号:发送者姓名:发送者主机名:命令字:附加信息在飞鸽传书的协议中用户识别的具体方法为:当IPMSG启动时,命令IPMSG_BR_ENTRY被广播到网络中,向所有在线的用户提示一个新用户的到达(即表示“我来了”);所有在线用户将把该新上线用户添加到自己的用户列表中,并向该新上线用户发送IPMSG_ANSENTRY命令(即表示“我在线”);该新上线用户接收到IPMSG_ANSENTRY命令后即将在线用户添加到自己的用户列表中。在飞鸽传书协议中收发消息的具体方法为:使用IPMSG_SENDMSG命令发送消息,消息内容添加在附加信息中;在接收消息时,如果对方要求回信确认(IPMSG_SENDCHECKOPT位打开),则需发送IPMSG_RECVMSG命令并将对方发送的数据包的编号放在附加信息中一同发送至发送消息方接收端开始接收文件时,请求传输文件命令IPMSG_GETFILEDATA将发送到发送端的TCP端口(和UDP的发送端口相同),并将发送端发送的包编号:文件序号:偏移量(全为十六进制格式)写到附加信息区一同发送,文件发送端接收到该请求信息并进行校验正确后即开始发送文件(不使用任何格式,亦不进行加密)。当接收端接收到目录文件时,将发送附加信息区为发送端发送的包编号:文件序号:偏移量(全为十六进制格式)的IPMSG_GETDIRFILES命令,以用来请求传输目录文件;发送端则将头信息长度:文件名:文件大小:文件属性:文件内容添加到附加信息区(除了文件名和文件内容外,其余皆为十六进制),头信息长度是从头信息长度开始到文件内容前的‘:’分割符为止的字符个数。当文件属性为IPMSG_FILE_DIR时,IPMsg能够自动识别其为目录,下一个文件的数据在该目录之后。当文件属性为IPMSG_FILE_RETPARENT时,IPMsg识别其动作为返回上一级目录,在这种情况下,文件名为‘.’其属性为当前目录的值。2.1.3、C/S构架与P2P模式P2P是Peer-to-Peer的缩写,也叫做对等互联或点对点技术。它是当前非常流行的实现网络数据和资源信息共享的技术。比如BT和eMule等都采用了该技术。使用P2P技术可以让一台计算机和另一台计算机直接交换数据和信息,而不必像传统的C/S模式那样必须通过服务器处理。P2P最大的特点在于“分散”。网络中所有的计算、存储和网络连接能力都能够分布在非集中式网络的“对等伙伴”上。P2P系统中的使用者能同时扮演客户端和服务器端的双重角色,使两个使用者能不通过服务器而直接进行数据共享。2.1.4、套接字编程机制和方法(1)套接字编程机制:套接字是支持TCP/UDP的网络通信的基本操作单元。可以将套接字看做不同主机间的进程进行双线通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过而引进的一种抽象概念,套接字通常和同一个域中的套接字交换数据。各种进程在这个相同的域内,通过Internet,用指定的协议进行通信。(2)套接字处理数据的方法:1、同步套接字:同步套接字在被调用时(如连接、接收、发送),要挂起应用程序的执行,直到返回调用结果(成功或失败)。2、异步套接字:异步套接字使用 .NET Framework异步编程模型处理各种网络服务请求。因此不会引起调用方线程的阻塞。2.1.5、程序流程图

2.2、局域网聊天通信软件局域网聊天通信软件设计结果截图如下:

软件模仿飞秋,用UDP的方式实现了局域网聊天的功能,在登陆时,会在局域网中广播,来通知好友上线信息,当其他用户收到广播的信息时自动添加此用户为好友,同时此用户也添加其他用户。这样就形成了一个好友列表,可以实现点对点之间的通信。3、设计总结或结论这次的CDIO项目设计让我得到了许多收获,在自己的努力,小组的合作,和老师的指导下,经过一周的时间,我们的CDIO设计终于结束了,我们也从中得到了锻炼。在这次课程设计之初,我们首先通过通过Ethereal抓包分析飞秋的工作原理、实现方法,也使我们更熟练的应用Ethereal抓包,以及复习了用C#软件来设置窗体和运行程序,深入理解了TCP和UDP的工作原理和服务的特性,掌握了套接字编程机制和方法,深入理解了C/S架构和P2P两种应用模式;与小组一起完成了局域网聊天软件的分析、开发与调试。虽然在进行的过程中,我们也遇到了很多的问题,但是在老师的帮助和同学们的努力下,都得到了解决。这也让我认识到了团队合作的重要性。4、参考文献[1] 马骏,郑逢斌,沈夏炯.C#网络应用高级编程.人民邮电出版社,2006,12.[2] 唐政,房大伟,c#项目开发全程实录,清华大学出版社,2008,6.

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/148112.html

更多阅读

神仙道各种命格详解 神仙道2命格

神仙道游戏之中命格都占了一个不可缺少的部份其实如果你问每一个玩得久的玩家他们都会回答你:「这游戏玩的就是命格」一个好的命格什至会比一件好的装备来得更加牛所以接下来小妹就来讨论一下各命格吧!先来一张神仙道所有命格的列表

●●“一阳穿五线”组详解一 一阳穿五线选股公式

●●“一阳穿五线”组详解(一) (滨海能源龙头 上攻态势坚决)●●2006年1月11日,我们在““赢在股市实战培训俱乐部”各组都存在巨大的获利机会!”文章中,对“一阳穿五线”组寄予厚望,认为该组是发现大黑马的好组,并且举例说明:“1月4日【风吹

《小仓百人一首》详解九 小野小町 小野小町 诗 原文

《小仓百人一首》详解(九)小野小町花の色は、移りにけりな、いたづらに、わが身世にふる、ながめせし間にいろのはなは、うつりにけりな、いたづらに、わがみよにふる、ながめせしまに〔汉译尝试〕樱花散尽红颜去 身世沉浮徒自伤

声明:《飞秋详解一 飞秋详解》为网友我亦好歌亦好酒分享!如侵犯到您的合法权益请联系我们删除