武汉理一1:人学硕十学位论文<activate/>兀素。”sidI’指明了字节流会话的唯一标识符,该属性必须出现在报文中,属性值可以是任何字符。”mode”属性指明了使用的传输模式,可以是’tcp’或者’udp’。如果没有属性,那么必须假设默认值是”tcp”。<streamhost/>元素是负责传送网络连接的信息。在初始方发送给目标方的初始IQ—Set中,至少有一个元素的实例出现。如果有多个实例}f{现,每个必须是独立的主机/端口组成。<streamhost.used/>元素指明正在使用的带外传输的流主机。它必须在从目标方发送给初始方的IQ.Set中出现,并且必须只有一个唯一的实例。<activate/>元素是用来请求激活双向的或者单向的字节流。它必须在从初始方发送给流主机的IQ—Set中出现,而且是在从目标方接收到IQ—result之后,并且必须只有一个唯一实例。<streamhost/>元素<streamhost/>元素包含了字节流连接的信息,有表示流t机的JID属性,网络主机/地址,网路端口。该元素不能包含任何文本节点。’'jid”属性指明了流主机的JID。该属性必须出现,并且必须在<iq/>中是合法的JID。”host”属性指明了要连接的主机。该属性必须出现。该属性的值必须是可分解的域名或者是“带点的十进制”IP地址(LL女H11.24.56.21)。”port”属性指定了要连接的端口。该属性可以出现。该属rt的值必须是十进制的合法的数字。”zeroconf'’属性指定了对于字节流可用的zero.configuratio服务。属性应该出现。该属性值应该是’jabber.bytestreams?。当『F在连接可用的主机时,初始方必须要么包含主机和端口要么包含zeroconf信息。<streamhost.used/>元素<streamhost-used/>元素指定了连接的流主机。该元素有个目的方连接的流主机的JID。该元素不能包含任何文本节点。’'jid”属性指定了流主机的全JID。该属性必须出现,并且必须在<iq/>中是合法的JID。<activate/>元素<activate/>元素是一个用来触发:代理完成连接的标志。在传输文件的字节流之6i『必须边ir流协商,流协商的过程就足发送端和接收端通过代理服务器协商连接端lJ、连接地址和建立会话的过程,其流程如下:1.初始方发送IQ.Set节点给指定了包含全JID的同标力‘,以及流主机/初始方的网络和字节流的流ID(SID)。2.目标方打开一个TCP套接’声连接到指定的网络地址,3.目标方通过SOCKS5请求连接,请求参数设置为下砷j之义的DST.ADDR和DST.PORT。4.流主机/初始方发送成功通过SOCKS5连接的应答。5.目标方发送IQ—result节点给初始方,该’id’与初始方发送的IQ—Set相同。6.流主机/初始方激活字节流。初始方请求激活流<iqtype=’set’from=’initiator@XMPPExample.com/foo’to—streamhostproxy.corn’id=’activate’><queryxmlns='http://jabber.org/protocol/bytestreams’sid=’mySID’><activate>target@example.org/bar</activate></query></iq>使用了数据包中的SID以及from地址这些信息后,代删彳‘能根据SID+InitiatorJID+TargetJID的哈希值激活流。并提供一个合理的信任等级激活来自初始方的请求。如果代理能完成请求,它必须使用IQ.result响应初始方<iqtype=’result’from=’streamhostproxy.corn’to—initiator@XMPPExample.com/foo’id=tactivate?/>37武汉理.1:人学硕二卜学位论文3.4.2文件传输功能设计建立会话过程:1.会话发起者找到SOCKS5代理服务器地址。2.会话发起者在发送IQ节至F1的端时,在IQ节中指定了代理服务器的完整JID和网络地址,代理服务器是支持字节流的SID。3.目的端为选定的代理服务器打开一个TCPsocket连接。4.代理服务器通过SOCKS5建立连接,设定目的端地址和目标端口参数的值。5.代理服务器通过SOCKS5发送连接成功确认至目的端。6.目的端发送IQ应答信息至发起者,并保留最初IQ中的id值。7.发起者在代理服务器打丌一个TCPsocket连接。8.发起者通过SOCKS5建立连接,设定目标地址和目标端f]参数的值。9.代理服务器通过SOCKS5发送连接成功确认至发起者。10.发起者发送IQ节至代理服务器,请求代理服务器激活关联StreamlD的字节流。11.代理服务器激活字节流,数据现在由代理在两个SOCKS5连接问转发。12.代理服务器发送IQ节至发起者,如果连接成功则答复字节流已经激活,否则指明一个错误。13.发起者和目的端可以开始使用字节流。当SOCKS5代理服务器接收到发送方发过来的数据报时,接收方会将这些数据报按照接收的时序存放在一个缓冲区中,在接收的过程中会对每一个数据报进行鉴定,将那些不符合要求的数据报丢弃,并按照认证中规定的封装方式武汉理’I:人学硕十学位论文进iJ:上’f装,向.同时该缓冲区必须从SOCKS代理服务器获得目的客户机的p地址干【l端Il。此时该缓冲区在接受数据报时必须丢掉那些与目的客户机IP和端口不彳:j‘的数训报,从而实现对数据报的过滤和纠错。住接受的报文中FRAG域指出了数据报是否为某一数据片中的一片。如果标f纠了FRAG域,则根据数据报所处的位序来确定其重组的顺序。值介于1—127之MJ的数抛报片断位于数据片序列中间,每一个文件接收端都有一个和这些数据片州天的苇组队列表和一个重组时1'8J表。重组队列必须被再次初始化并且相关联的数据片必须被丢掉,而无论该重组时间表是否过期,或者一个新的携带FRAG域的数据报到达,并且FRAG域的值要小于正在进行的数据片序列中的FRAG域的最大值。图3—13文件传输流程图该系统实现了文件传输功能,允许一个客户端向另一个客户端传送文本文件,其流程图如图3一13所示,服务器在接收到一个客户端的请求后,将其XML节解析出来,并获取到目的客户端的JID,并判断该JID是否属于本地服务器,如果属于本地服务器则直接查看该客户端的在线状态,如果在线,则转发该请求,否则存储该请求,知道目的客户端的在线状态为上线。39武汉理J:人学硕十学位论文3.5数据库设计系统中的数据信息都是在数据库中存储的,主要包括:企、lk部fJ的信息,主要汜录企业各个部门的人员组成,以及部门的功能等描述性信息;川,、信息,主要记录各个用户的个人信息;服务器信息,主要记录服务器的十H火眦置信息。数据包信息,主要记录数据包的梢关信息。3.5.1企业部门信息部门基本信息表:用束存储企业部门的基本描述性息表3—1部门基本信息表departmentNamedepartmentDescription部门名字(主键)部门描述部门用户表:用来汜录每个部门的用户成员表3—2部门用户表departmentNameUsernameisAdministrator部门名字(外键)用户名(外键)是否为该部门管理员部门属性表川来记录部门的属性,其属性可以由管理员添加。表3-3部门属性表departmentNamepropertyNamepropertyValue部门名字(Pl-键)部门属性名部门属性值3.5.2用户信息用户基本信息表:用来记录用户的基本信息。
好文档 - 专业文书写作范文服务资料分享网站