SCTP编程

本文介绍了SCTP协议的基础知识,包括多宿性、多流性和安全机制等核心特性,并对比了TCP协议的区别。此外还提供了Linux环境下SCTP编程的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习SCTP,由于我现在Linux版本不支持sctp套接字,所以还没编译成功,还没有找到有效的解决办法,查了是Debian的内核支持。

先熟悉一些基础的知识:

SCTP的基本概念
  • 多宿性(multi-homing)

多宿是指一个SCTP 端点可以通过多个IP地址到达,这样两个SCTP端点在建立了关联后,数据可以通过不 同的物理通路进行传送。也就是说,当一条通路坏掉后,可以通过另一条通路到达对端。

  • 多流性(multi-streaming)

由于采用多个流进行传输而且各个流相互独立,这样当一个流中的数据包需要重传,其他流中的数据可以 继续传输, 解决了在TCP单流中容易出现的队头阻塞现象(head-of-line).

  • 安全机制

SCTP采用“四次握手”的连接建立方式和COOKIE机制消除了SYN攻击的威胁, Cookie机制设立的主要用意 是将状态信息存储在客户端或者网络上,而非服务器内存中,它的使用将服务器资源预留的时间推迟到了
Cookie带回完整的鉴别信息后。这是一种简单有效的防御DoS攻击的方法。

3. SCTP编程

Linux内核从2.6已经支持SCTP协议栈了,而且也提供了套接口(socket), SCTP的套接口两类:一对一(类似TCP)和一对多(类似UDP)。

  • 一对一

然后客户端可以用connect()连接服务器, write(), read()读写,close()关闭套接口
服务器端用bind()绑定端口,listen()监听,accept()接受连接,write()/read()读写,
close() 关闭,这和普通TCP程序是相同的。

  • 一对多

一对多方式的SCTP编程和UDP类似,打开的是SCTP的有序分组接口:
socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP)
用的socket(), bin(), listen(), close()等函数和原来一样,但发送接收数据是用
sctp_sendto(),sctp_sendmsg()和sctp_recvmsg()这些SCTP专用函数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值