- 浏览: 314637 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
JQ_AK47:
...
Linux下直接发送以太包 -
winsen2009:
谢谢分享,如果能再来一个列子就更好了,刚接触看完还是不懂的用
UNPv1_r3读书笔记: SCTP编程
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
SCTP协议在UNP第2版中还未提及,是在第3版中新增加的,在第9、10、23章介绍SCTP。 SCTP就好象是TCP和UDP的综合体,既可以单播也能多播,而且连接建立过程使用4次握手而不是TCP的3次握手,在相当程度上防止了类似TCP中的syn flood的攻击方法。 SCTP是面向消息而不是面向连接的,而且是用关联(associate)代替连接的概念,关联即可以是一对一的,也可以是一对多的。 SCTP提供可靠性,排序和流量控制等功能,但不是象TCP那样严格防止数据丢失情况,而是允许丢失消息而不阻塞,这个特性使得SCTP更适合于多媒体数据的传输,本来SCTP最初就是为IP电话设计的。目前linux 2.6内核中已经增加了对SCTP协议的支持。 SCTP的套接口两类:一对一(类似TCP)和一对多(类似UDP)。 一对一方式的SCTP的编程基本和TCP类似,只是打开的socket是SCTP协议的流接口: socket(AF_INET, SOCK_SREAM, IPPROTO_SCTP) 然后客户端可以用connect()连接服务器, write(), read()读写,close()关闭套接口 服务器端用 bind()绑定端口,listen()监听,accept()接受连接,write()/read()读写,close()关闭,这和普通TCP程序是相同的。由于SCTP是面向消息的,因此这种情况下仍和UDP一样,一方发几个消息,对方就会收几个消息,而不是象TCP那样可能会进行数据合并。 注意SCTP不提供TCP那样的半关闭,每一方调用shutdown()后都会关闭SCTP关联而不是象TCP那样半连接。 一对多方式的SCTP编程和UDP类似,打开的是SCTP的有序分组接口: socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP) 用的socket(), bin(), listen(), close()等函数和原来一样,但发送接收数据是用sctp_sendto(),sctp_sendmsg()和sctp_recvmsg()这些SCTP专用函数。 SCTP可用sctp_bindx()绑定到一组地址而不是单个或全部地址;用sctp_connectx()连接多个地址。 SCTP使用通知(notification)来跟踪关联的状态,通知也是通过recvmsg()或sctp_recvmsg()函数得到的,和网络数据混杂,函数返回的标志msg_flags中有标志表示是数据还是通知,这是和TCP、UDP编程不同的。 SCTP支持自动关闭功能,相当于TCP中的超时断开,当关联在任何方向都没有数据超过一定时间后自动关闭,这通过setsockopt()函数设置SCTP_AUTOCLOSE属性来实现。 SCTP在传输大数据时可能因为资源不够而采取部分抵送方式发送数据,接收方相应要检查相应接收标志以保证能正确完整接收。 SCTP可以无序发送数据, 在sctp_sendmsg()函数中设置MSG_UNORDERED标志即可,这时SCTP数据中不带序列号。 SCTP和TCP一样支持心跳保活机制,也有很多定时器检测关联是否失效。 SCTP最大的特点就是同时处理多个地址的通信的能力,TCP就只能是一对一,UDP虽然可以实现多播和广播,但那也是对某些地址赋予了多播或广播的属性,本质还是处理一个地址。
发表评论
-
Linux内核中流量控制(24)
2011-01-10 16:33 2208本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(23)
2011-01-10 16:30 1491本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(22)
2011-01-10 16:29 1936本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(21)
2011-01-10 16:28 1349本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(20)
2011-01-10 16:27 1524本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(19)
2011-01-10 16:27 1978本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(18)
2011-01-10 16:26 1569Linux内核中流量控制(18) ... -
Linux内核中流量控制(17)
2011-01-10 16:25 1945本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(16)
2011-01-10 16:25 1801本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(15)
2011-01-10 16:24 1887本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(14)
2011-01-10 16:23 1958本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(13)
2011-01-10 16:22 2634本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(12)
2011-01-10 16:21 2108本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(11)
2011-01-10 16:21 3232本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(10)
2011-01-10 16:20 2004本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(9)
2011-01-10 16:19 1830本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(8)
2011-01-10 16:18 1496本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(7)
2011-01-10 16:18 2923本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(6)
2011-01-10 16:17 1492本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(5)
2011-01-10 16:16 1727本文档的Copyleft归yfydz所有,使用GPL发布,可以 ...
相关推荐
unpv12e_dev UNIX 网络编程,第 1 卷 2e 源
unpv 网络编程.pdf+源码 linux unix
unpv13e UNIX网络编程卷1:通用联网API(第3版)源代码
配套编译和测试参考:https://editor.csdn.net/md/?articleId=125043113
unix网络编程:卷1:套接字联网API,第三版,stevens的杰作,源码,学习网络编程的良师益友
unpv22e:UNIX网络编程卷(2)源码
unpv13e:UNIX网络编程第三版源码
Unix网络编程中unp.h的环境,unpv13e.tar.gz。有些人动不动就20几个积分,像这种开源的资源,也要这么多,真垃圾的很。
UNIX网络编程卷一第三版源码资源,在Ubuntu1004下可用。资源免编译,下载及用。方法:将两个头文件放入/usr/include文件夹下,将libunp.a放入/usr/lib和/lib文件夹下。编译的时候,加-lunp例如:gcc text.c -lunp。
经典linux网络编程源码
unpv13e 并附带了error.c文件,下载下来后,把error.c文件与unp.h和config.h文件一起放到/usr/include/目录下,就防止报err_sys()错误了。
unpv22e-代码
书中源代码作者发布在:www.unpbook.com,https://github.com/unpbook/unpv13e
Unix Network Programming Volume 2 目的: IPC Thinking! 14. System V共享内存 X. Hash table in multi process
unix network program .h
preface.unpv22e.pdf