`

SCTP 套接字编程基础概念

阅读更多
    SCTP 套接字分为一到一套接字和一到多套接字。提供一到一形式的目的是为了方便将现有 TCP 应用程序移植到 SCTP 上,其交互方式类似于 TCP 套接字,只是其建立连接时需要经过四路握手。一到一式 SCTP 套接字是一个类型为 SOCK_STREAM,协议为 IPPROTO_SCTP 的网际网套接字(即协议族为 AF_INET 或 AF_INET6),而一到多式 SCTP 套接字是一个类型为 SOCK_SEQPACKET,协议为 IPPROTO_SCTP 的网际网套接字。
    一到多式 SCTP 套接字可使服务器程序无需管理大量的套接字描述符,单个套接字描述符将代表多个关联,就像一个 UDP 套接字能够从多个客户接收消息那样。在一到多式套接字上,用于标识单个关联的是一个类型为 sctp_assoc_t 的关联标识,它通常是一个不透明的整数值,应用进程不应该使用不是由内核先前给予的任何关联标识。一到多式套接字的用户应该注意以下几点。
    (1)当一个客户关闭其关联时,其服务器也将自动关闭同一个关联,服务器主机内核中不再有该关联的状态。
    (2)可用于在四路握手的第三个或第四个分组中捎带用户数据的唯一办法就是使用一到多形式。
    (3)对于一个与它还没有关联存在的 IP 地址,任何以它为目的地的 sendto、sendmsg 或 sctp_sendmsg 都将尝试主动打开,以建立一个与该地址的新关联。这种行为的发生与执行分组发送的这个应用进程是否曾调用过 listen 函数以请求被动打开无关。
    (4)用户必须使用 sendto、sendmsg 或 sctp_sendmsg 这三个分组发送函数,而不能使用 send 或 write,除非已经使用 sctp_peeloff 函数从一个一到多式套接字剥离出一个一到一式套接字。
    (5)任何时候调用其中任何一个分组发送函数时,所用的目的地址是由系统在关联建立阶段选定的主目的地址,除非调用者在所提供的 sctp_sndrcvinfo 结构中设置了 MSG_ADDR_OVER 标志。为了提供这个结构,调用者必须使用伴随辅助数据的 sendmsg 或 sctp_sendmsg 函数。
    (6)关联事件(即众多 SCTP 通知之一)可能被启用,因此要是不希望收到这些事件,就得使用 SCTP_EVENTS 套接字选项显示禁止它们。默认情况下启用的唯一事件是 sctp_data_io_event,它给 recvmsg 和 sctp_recvmsg 调用提供辅助数据。该默认设置同时适用于一到一形式和一到多形式。
    下图是一到多套接字典型用法的时间线图:服务器启动后打开一个套接字,bind 一个地址,调用 listen 监听关联,然后就调用 sctp_recvmsg 阻塞等待第一个消息的到达。客户启动后也打开一个套接字,并调用 sctp_sendto,它导致隐式建立关联,而数据请求由四路握手的第三个分组捎带给服务器。服务器收到该请求后进行处理并向客户发回一个应答,客户收到应答后关闭其套接字,从而终止其上的关联,服务器循环回去接收下一个消息。

    本例子展示的是一个迭代服务器。在 SCTP 中,一个一到多套接字也能够结合使用 sctp_peeloff 函数以允许组合迭代服务器模型和并发服务器模型,它们的关系如下。
    (1)sctp_peeloff 函数用于从一个一到多套接字剥离出某个特定的关联(例如一个长期持续的会话),独自构成一个一到一式套接字。
    (2)剥离出的关联所在的一到一套接字随后就可以派送给它自己的线程或进程。
    (3)主线程继续在原来的套接字上以迭代方式处理来自任何剩余关联的消息。
  • 大小: 31.2 KB
分享到:
评论

相关推荐

    UNIX网络编程 卷1:套接字联网API

    第9章 基本SCTP套接字编程 第10章 SCTP客户/服务器程序例子 第11章 名字与地址转换 第三部分 高级套接字编程 第12章 IPv4与IPv6的互操作性 第13章 守护进程和inetd超级服务器 第14章 高级I/O函数 第15...

    UNIX网络编程卷1:套接字联网API(第3版)part1 共2部分

    第9章 基本SCTP套接字编程 第10章 SCTP客户/服务器程序例子 第11章 名字与地址转换 第三部分 第12章 IPv4与IPv6的互操作性 第13章 守护进程和inetd超级服务器 第14章 高级I/O函数 第15章 Unix域协议 第16章 ...

    UNIX网络编程.卷1:套接字联网API

    书中吸纳了近几年网络技术的发展,增添了ipv6、sctp协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。  书中的所有示例都是在unix系统上测试通过的真实的、可运行的代码,继承了stevens一直强调...

    UNIX网络编程卷1套接字联网API.part1.rar

    讨论了当今最关键的标准、实现和技术 讨论的新主题包括: POSIX Single UNIX Specification Version 3 IPv6 APIs(包括更新了的对IPv6/IPv4互操作性的指南) 新的SCTP传输协议 基于IPsec的密钥管理套接字 ...

    UNIX网络编程卷1套接字联网API.part2.rar

    讨论了当今最关键的标准、实现和技术 讨论的新主题包括: POSIX Single UNIX Specification Version 3 IPv6 APIs(包括更新了的对IPv6/IPv4互操作性的指南) 新的SCTP传输协议 基于IPsec的密钥管理套接字 ...

    UNIX网络编程.卷1:套接字联网API(第3版)

    书中吸纳了近几年网络技术的发展,增添了ipv6、sctp协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。  书中的所有示例都是在unix系统上测试通过的真实的、可运行的代码,继承了stevens一直强调...

    (第3版)UNIX网络编程_卷1_套接字联网API_卷一

    书中吸纳了近几年网络技术的发展,增添了IPv6、SCTP协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。 书中的所有示例都是在UNIX系统上测试通过的真实的、可运行的代码,继承了Stevens一直强调...

    UNIX网络编程_卷1_套接字联网API.part2

    书中吸纳了近几年网络技术的发展,增添了ipv6、sctp协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。  书中的所有示例都是在unix系统上测试通过的真实的、可运行的代码,继承了stevens一直强调...

    UNIX网络编程卷1:套接字联网API(第3版)part2

    UNIX网络编程卷1:套接字联网API(第3版),含TCP,UDP,SCTP,IPv6,Unix域协议,广播,多播,密钥管理

    UNIX网络编程卷1:套接字联网API(第3版)part1

    UNIX网络编程卷1:套接字联网API(第3版),含TCP,UDP,SCTP,IPv6,Unix域协议,广播,多播,密钥管理

    (第3版)UNIX网络编程_卷1_套接字联网API_卷二

    书中吸纳了近几年网络技术的发展,增添了IPv6、SCTP协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。 书中的所有示例都是在UNIX系统上测试通过的真实的、可运行的代码,继承了Stevens一直强调...

    sctp:用于Go编程语言的SCTP库

    流控制传输协议(SCTP) 例子 参见example/sctp.go $ cd example $ go build $ # run example SCTP server $ . / example - server - port 1000 - ip 10.10 . 0.1 , 10.20 . 0.1 $ # run example SCTP client $ . /...

    UNIX网络编程_卷1_套接字联网API[3th][中文版].part1.rar

    Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X/Open传输接口的内容。 本书全面深入地介绍了如何使用套接口API进行网络编程。...

    SCTP和SCTP池的发展

    SCTP和SCTP池的介绍和发展,PPT的介绍文档,中文介绍

    SCTP_tutorial.ppt

    SCTP_tutorial.ppt SCTP_tutorial.ppt SCTP_tutorial.ppt

    SCTP协议介绍与应用

    sctp介绍,并附有代码  SCTP(STREAM CONTROL TRANSMISSION PROTOCOL 流控制传输协议)是IETF新定义的一个传输层transport layer协议(2000年)。是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP...

    cpp-plibsys高可移植的C系统库线程和同步原语套接字

    高可移植的C系统库:线程和同步原语,套接字(TCP,UDP,SCTP),IPv4和IPv6,IPC,散列函数(MD5,SHA-1,SHA-2,SHA-3,GOST),二进制树 ,AVL)等等。 本地代码性能。

    SCTP 优化网络

    SCTP 优化网络SCTP 优化网络SCTP 优化网络SCTP 优化网络SCTP 优化网络

    SCTP协议实现.pdf

    SCTP协议实现.pdf

    UNIX网络编程 第2卷 进程间通信.pdf(带书签)

    第9章 基本SCTP套接口编程 第10章 SCTP客户/服务器程序例子 第11章 名字与地址转换 第3部分 高级套接口编程? 第12章 IPv4与IPv6的互操作性 第13章 守护进程和inetd超级服务器? 第14章 高级I/O函数 第15章 Unix域协议...

Global site tag (gtag.js) - Google Analytics