锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 基于UDP的数据传输协议UDT / UDT连接和关闭
服务方向
软件开发
办公财务MIS
股票
设备监控
网页信息采集及控制
多媒体
软件开发培训
Java 安卓移动开发
Java Web开发
HTML5培训
iOS培训
网站前端开发
VC++
C++游戏开发培训
C#软件
C语言(Linux)
ASP.NET网站开发(C#)
C#软件+ASP.NET网站
SOCKET网络通信开发
COMOLE和ActiveX开发
C++(Linux)
汇编和破解
驱动开发
SkinMagicVC++换肤
流媒体开发
MicroStation二次开发
计算机英语翻译
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

七、UDT连接和关闭


UDT支持两种不同的建立连接的方法:传统的C/S模式和会合模式。

在会合模式下,两个UDT的socket,几乎在同一时刻向对方发出连接请求。

UDT客户端(在会合模式下,对等实体双方都是客户端),向服务器或者对等实体发送 一个握手请求(Type = 0x0的控制包)。

握手的控制包包含一下信息域(假设UDT Socket A发送握手包给B):

1) UDT版本:该值用来支持协议的兼容。当前版本号是4。

2) Socket类型:流(0)或者数据包(1)。

3) 初始的数据包序列号:该值是用于Socket A发出的第一个数据包的包序列号。该值 应当是随机数。

4) 最大包大小:一个数据包的最大大小(包括协议栈的所有头),该值通常是MTU。

5) 最大流量窗口大小:该值可以是非必要的。但是,目前该值用在协议的参考实现里。

6) 连接类型:该信息用来区分不同的连接模式和保持连接的请求/应答。

7) Socket ID:客户端A的UDT Socket ID。

8) Cookie:该Cookie值用来避免SYN flooding attack [RFC4987]。

9) 对等实体的IP地址:B的IP地址。

7.1 C/S连接(Traditional Connection)

一个UDT实体首先作为服务器启动监听。服务器接受并处理输入的连接请求,然后为 每一个新连接创建一个新的UDT Socket。

一个客户端连接服务器时,首先发送握手控制包。在每一个常量时间间隔,当客户端从 服务器端接收到握手响应或者EXP超时,客户端将继续发送握手控制包。

当服务器接收到客户端的连接请求时,服务器根据密钥和客户端的地址产生一个 Cookie值,然后将Cookie值发回给客户端。客户端必须接着将接收到的Cookie值再发 回给服务器。

当接收到握手控制包(携带正确的Cookie值)时,服务器比较握手包的最大包大小和 自身的最大流量窗口大小,并且用二者的较小值作为服务器的流量窗口大小。比较结果的较 小值,和服务器的初始数据包序列号一起,作为握手应答控制包发回给客户端。

当完成握手响应后,服务器准备接收/发送数据。然而,只要从同一个客户端收到保持 连接的握手请求时,服务器就必须发回应答控制包。

一旦接收到服务器的握手应答控制包,客户端可以开始发送/接收数据。

如果接收到服务器的保持连接的握手响应时,客户端忽略该握手响应。

客户端发送连接请求时,将控制包信息域的连接类型设置为1;服务器响应连接请求 时,将控制包信息域的连接类型设置为-1。

客户端将检查发送响应的服务器是否和期望接受请求的服务器一致。

7.2 会合连接(Rendezvous connection)

在该连接模式下,两个客户端在同一时刻向对方发送连接请求。控制包的初始连接类型 设置为0。

一旦一个对等实体接收到一个连接请求,它发回一个响应。如果连接类型是0,发出的 应答控制包设置为-1;如果连接类型是-1,发出的应答控制包设置为-2。如果对等实体收到 的控制包的连接类型是-2,不生成响应。

会合连接的对等实体对握手消息进行相同的检查(版本、最大包大小和最大流量窗口大 小等等),如同7.1节的描述。另外,对等实体只处理它发出连接请求的地址发出的连接请 求。最后,会合连接的请求将被C/S服务器的监听拒绝。

当收到-1的应答控制包时,对等实体初始化会合连接。

当对等实体处在防火墙后面时,建立会合连接是很有帮助的。当监听服务器不令人满意 时,会合连接也可以提供较好的安全性和易用性。

7.3 关闭(Shutdown)

当已经建立UDT连接的一个实体关闭连接时,它将向目标对等实体发送一个关闭消 息。目标实体在接收到关闭消息后,也关闭连接。

这个关闭消息,以UDP的报文模式,被对等实体只发送一次,并且不保证一定会被 接收到。

如果未接收到关闭消息,目标实体将在连续16个EXP超时之后关闭连接。然而,总 超时值应该在最小阈值和最大阈值之间。在协议的参考实现里,分别使用3秒和30秒。

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市文化路47号院1号楼4层(47-1楼位于文化路和红专路十字路口东北角,郑州大学工学院招待所南边,工学院科技报告厅西边。)