- 浏览: 321771 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 2244本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(23)
2011-01-10 16:30 1530本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(22)
2011-01-10 16:29 1978本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(21)
2011-01-10 16:28 1399本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(20)
2011-01-10 16:27 1566本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(19)
2011-01-10 16:27 2020本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(18)
2011-01-10 16:26 1614Linux内核中流量控制(18) ... -
Linux内核中流量控制(17)
2011-01-10 16:25 1989本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(16)
2011-01-10 16:25 1847本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(15)
2011-01-10 16:24 1978本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(14)
2011-01-10 16:23 2000本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(13)
2011-01-10 16:22 2685本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(12)
2011-01-10 16:21 2164本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(11)
2011-01-10 16:21 3287本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(10)
2011-01-10 16:20 2040本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(9)
2011-01-10 16:19 1874本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(8)
2011-01-10 16:18 1542本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(7)
2011-01-10 16:18 2971本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(6)
2011-01-10 16:17 1537本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(5)
2011-01-10 16:16 1766本文档的Copyleft归yfydz所有,使用GPL发布,可以 ...
相关推荐
《UNIX网络编程,第1卷 2e源》是一本深度探讨UNIX系统下网络编程的经典著作,由W. Richard Stevens撰写。这本书的核心内容是讲解如何使用C语言进行网络通信,涵盖了套接字API、TCP/IP协议族以及相关系统调用等关键...
《UNIX网络编程源码unpv13e》是学习UNIX系统下网络编程的重要参考资料,它包含了一整套的源代码示例,旨在帮助开发者深入理解socket编程、C/S(客户端/服务器)架构以及B/S(浏览器/服务器)架构。这份源码集由著名...
《unpv网络编程.pdf》和配套源码是深入学习Linux/Unix系统下网络编程的宝贵资源。unpv,全称为“UNIX Network Programming Version”,是由著名软件工程师W. Richard Stevens编写的,旨在帮助开发者理解网络协议栈的...
《Unix网络编程:卷1——套接字联网API》是著名计算机科学家W. Richard Stevens的经典之作,这本书深入浅出地讲解了Unix环境下的网络编程,是广大程序员和系统管理员学习网络编程的重要参考资料。源代码unpv13e的...
《UNIX网络编程卷1:通用联网API(第3版)》是网络编程领域的经典之作,由著名计算机科学家W. Richard Stevens撰写。这本书深入浅出地介绍了UNIX系统下的网络编程技术,包括TCP/IP协议栈、套接字接口以及相关API的...
unpv13e:UNIX网络编程第三版源码
该压缩包中的"unpv13e"很可能代表《UNIX网络编程》第13版(Volume 1)的源代码和补充材料。这本书由W. Richard Stevens撰写,是UNIX系统编程的权威参考书之一,特别是关于网络编程的部分。书中涵盖了网络套接字API、...
《UNIX网络编程 第1卷(第3版):套接字联网API》是网络编程领域的一本经典之作,由W. Richard Stevens撰写。这本书详细介绍了如何在UNIX系统中使用套接字API进行网络通信,是学习和理解网络编程的基础。 本书主要...
源码包"unpv22e-master"包含了书中各个章节的示例程序,这些程序涵盖了广泛的网络编程技术。通过对这些源码的研究,我们可以深入了解以下几个核心知识点: 1. **套接字API**:UNIX系统中的网络通信主要通过套接字...
《UNIX网络编程详解——unpv13e.tar.gz2资源解析》 在计算机科学领域,尤其是在网络编程中,UNIX系统以其稳定性和强大的网络支持而备受赞誉。本文将深入探讨一个名为"unpv13e.tar.gz2"的压缩包文件,它包含了与UNIX...
这两个工具是UNIX Network Programming Volume 1 (UNPv1)的实验程序集,由著名的网络编程书籍作者W. Richard Stevens提供。它们主要用于帮助读者实践书中的网络编程概念,包括套接字编程、多线程、TCP/IP协议栈等。...
"unpv13e"通常代表一个软件版本号或项目标识符,可能是一个网络编程相关的库,因为后缀"unp"在IT领域常用于“Unix Network Programming”或类似的网络编程资源。这个压缩包中包含了"error.c"文件,这是一个C语言源...
《UNIX网络编程_卷1_套接字联网API第3版源代码》是网络编程领域的一本经典之作,由著名计算机科学家W. Richard Stevens撰写。这本书深入浅出地讲解了如何在UNIX系统中使用套接字(Sockets)进行网络通信,涵盖了从...
"unpv22e"是一个特定的编程代码库或项目的标识符,可能指的是一个开源软件项目或者课程的版本。在IT行业中,这种命名通常遵循一定的规范,比如将项目名和版本号结合在一起。"unpv22e"可能是该项目的第22个更新版本,...
《UNIX网络编程 卷1:套接字联网API源代码》是网络编程领域的一本经典著作,主要关注于UNIX系统中的网络通信,特别是基于套接字的编程接口。这本书深入探讨了如何使用套接字API来实现跨网络的通信,为开发者提供了...
1. **UNIX网络编程基础** UNIX网络编程主要涉及socket API,这是在UNIX系统中进行网络通信的标准接口。它提供了创建、连接、监听、接受和发送数据的一系列函数,如socket()、bind()、listen()、connect()、accept()...
卷1主要涵盖套接字网络编程,卷2则深入探讨多线程、并发服务器、TCP/IP协议族等内容。提供的源代码是这两本书的重要补充,帮助读者理解和实践书中所讲述的概念。 在卷1中,读者会学习到以下核心知识点: 1. **套接...
《UNIX网络编程卷1:套接字联网API(第3版)》是网络编程领域的一本经典著作,由W. Richard Stevens撰写。这本书深入浅出地介绍了如何在UNIX环境中使用套接字API进行网络通信。源代码是学习本书理论知识的重要实践...