SCTP连接的关闭方式有两种:
- ABORT(暴力关闭):直接释放资源,应用层未被传输、接收的数据都会被丢弃
- SHUTDOWN(平滑关闭):通过三条消息,把该传的该发的数据先处理完,再关闭
ABORT关闭的方式一般是SCTP检测到错误才会用到,应用程序调用close()关闭一条连接时,一般是SHUTDOWN方式(应用程序也可以指定采用ABORT的方式关闭连接)。
一条SCTP连接被ABORT最常见的原因是,这条连接的连续重传次数超过了限定值(MAX ASSOCATION RETRANSMSSION)。这个值是可以通过setsockopt()的方式修改的。
1. ABORT
ABORT一般用于异常关闭一条SCTP连接,可能导致应用层丢消息。ABORT CHUNK的格式如下:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 6 |