资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
1 实验四:实现 SCTP client/server 之间数据传输 一. 实验要求与目的 实现 client和 server 建立关联。通过 client和 server 建立关联便于 更好的了解 sctp 协议。 实现 client和 server 之间数据传输。实现数据传输也就是实现client 和 server 之间的通信,通过编写程序实现通信可以更好地了解sctp server和 client通信四次握手的过程。 二. 实验原理 SCTP(STREAM CONTROL TRANSMISSION PROTOCOL 流控制传输协 议)是 IETF 新定义的一个传输层transport layer 协议(2000 年)。是提供基于 不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP的设计用于通过IP 网传输 SCN 窄带信令消息。流控制传输协(Stream Control Transmission Protocol , SCTP)是一种可靠的传输协议,它在两个端点之间提供稳定、有序的数据传递 服务,并且可以保护数据消息边界。然而,与TCP 和UDP 不同,SCTP 是通 过多宿主( Multi-homing )和多流( Multi-streaming)功能提供这些收益的,这 两种功能均可提高可用性SCTP 实际上是一个面向连接的协议, 但 SCTP 偶联的 概念要比 TCP 的连接具有更广的概念, SCTP对 TCP 的缺陷进行了一些完善 ,使 得信令传输具有更高的可靠性,SCTP的设计包括适当的拥塞控制、防止泛滥和 伪装攻击、更优的实时性能和多归属性支持。 SCTP 提供如下服务: * 确认用户数据的无错误和无复制传输; * 数据分段以符合发现路径最大传输单元的大小; * 在多数据流中用户信息的有序发送,带有一个选项,用户信息可以按到达 顺序发送; * 选择性的将多个用户信息绑定到单个SCTP 包; * 通过关联的一个终端或两个终端多重宿主支持来为网络故障规定容度。 SCTP 是在 IP 网络上使用的一种可靠的通用传输层协议。Internet 协议套 件被划分成几层;每层都提供特定功能,如图1 所示。 2 图 1 IP 堆栈的层次化结构 SCTP中对新连接的初始化是通过报文握手来完成的。SCTP 中,这种机制称 为四次握手。如图2 所示: 图 2 SCTP 握手使用的报文交换 SCTP 是基于连接的协议, 它需要在对等的两端建立和拆除连接。SCTP 连接结 束序列如图 3 所示: 3 图 3 SCTP连接结束序列 三. 程序实现 程序实现的流程图如图4 所示: Server Client scoket bind listen accept Sctp_sendmsg Sctp_sendmsg close scoket accept Sctp_sendmsg Sctp_sendmsg close 图 4 代码实现流程图 具体代码实现如下: server首先创建服务器的套接字。然后创建一个sockaddr 结构,指定这 个连接可以从任何本地接口上创建(使用通配符地址INADDR_ANY)。使用 bind 调用将这个 sockaddr 结构绑定到 socket 上,然后将服务器套接字设置 成监听状态。 现在就可以接收到达的连接了。在从accept 函数返回时, 会使 用connSock socket 标识新客户机的连接。 采用 message2和 message2数组 来存储字符串。使用sctp_sendmsg 函数,将这个字符串发送给client。 在 client中,首先创建了一个SCTP 套接字,然后创建了一个sockaddr 结构,其中包含了将要连接的端点。 connect 函数然后建立一个到服务器的连接。 要获取消息的流编号, SCTP 需要启用套接字选项sctp_data_io_event。通过启 4 用这个选项,就可以通过sctp_recvmsg 函数接收一条消息 . 四实验结果 本次实验所得结果如图5 所示: 在 linux终端下运行 c 代码,先运行 sctpsrvr.c程序,可以看到终端显示” waiting for a new client connection.”, 然后在在 ubuntu 下新开启一个终 端,运行 sctpclnt.c程序,则 server 端显示连接成功,并发送数据给 client,client端显示 server 所发送的数据。 图 5 sctp 协议下 server 和 client 通信程序结果显示
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号