SCTP SACK数据块格式

选择证实(SACK)数据块的格式

这个数据块通过使用DATA数据块中的TSN用来向对等的端点确认接收到的DATA数据块,并通知对等的端点在收到的DATA数据块中的间隔。所谓间隔就是指收到的DATA数据块的TSN不连续的情况。

SACK必须包含累积的TSN证实和通告的接收方窗口信用(a_rwnd)参数。

累积的TSN证实参数的值是指收到的TSN顺序断开前的最后一个TSN号码,下一个TSN则是在发送SACK的端点尚未收到的TSN值。所以这个参数确认已经收到了小于或等于该值的所有TSN。

SACK中可以包含0个或多个间隔证实块,每个间隔证实块确认了在一个不连续TSN后所收到的TSN序列,所有通过间隔证实块确认的TSN值都应比累积TSN证实的值大。

图1 SCTP SACK数据块格式
字段 长度 描述
数据块标志位Chunk Flags 8比特 设为全0并由接收方忽略。
Cumulative TSN Ack 32比特无符号整数 该参数包含了在收到TSN序列的间隔前的最后一个TSN值。
Advertised Receiver Window Credit (a_rwnd) 32比特无符号整数 该字段指示修改了SACK的发送方的接收缓冲容量的字节数。
Number of Gap Ack Blocks 16比特无符号整数 用来指示SACK数据块中包含的间隔证实块的数目。
Number of Duplicate TSNs 16比特 该字段包含了该端点收到的重复的TSN的数目。每个重复的TSN都列在间隔证实块列表后。
Gap Ack Block 变长 这个字段中包含了间隔证实块,根据间隔证实块数量字段给出的值,间隔证实块重复若干次。所有TSN大于或等于累积TSN证实+间隔证实块开始的DATA数据块,或者是小于或等于每个间隔证实块的累积TSN证实+间隔证实块结束的DATA数据块都被看作是被正确地接收了。
Gap Ack Block Start 16比特无符号整数 该字段用来指示这个间隔整数块的起始TSN偏移,为了计算实际的TSN号码必须要用累积TSN证实加上偏移号码。计算出的TSN标识用来识别第一个在这个间隔证实块中被收到的TSN。
Gap Ack Block End 16比特无符号整数 用来指示这个间隔证实块的结束TSN偏移,为了计算实际的TSN需要把累积TSN证实加上这个偏移号码。这个计算出的TSN用来识别在这个间隔证实块中最后收到的DATA数据块。
Duplicate TSN 32比特无符号整数 用来指示一个在上一个SACK发送后收到的TSN重复的个数。每次一个接收者收到一个重复的TSN(在发送SACK前),则把这个TSN加到重复的TSN列表中。每发送一次SACK后则把统计重复TSN的计数器重新清0。

报文示例

参考标准

标准 描述
RFC 2960 Stream Control Transmission Protocol

本资料收集于互联网
2016 ©