SCTP 实体在收到 SHUTDOWN 块后是否仍可以发送数据?
Can a SCTP entity still send data once it has received a SHUTDOWN chunk?
我正在学习 SCTP 协议,但我搞不懂这一点。
服务器端收到客户端的SHUTDOWN消息后,是否允许发回数据?
那么 ACK 消息呢,它们仍然是 sent/received 还是必须服务器立即响应 SHUTDOWN ACK?
感谢您的帮助!
SHUTDOWN 块只是表示远程端想要关闭关联。本地端仍然可以传输它先前从上层接收到的数据。事实上,本地端必须交付所有从上层收到但尚未交付给远程端的东西。
根据 RFC 4960, chapter 9.2:
Upon reception of the SHUTDOWN, the peer endpoint shall
进入SHUTDOWN-RECEIVED状态,
停止接受来自其 SCTP 用户的新数据,并且
验证,通过检查块的累积 TSN Ack 字段,
它所有未完成的数据块都已被接收
关闭发件人。
...
If there are still outstanding DATA chunks left, the SHUTDOWN
receiver MUST continue to follow normal data transmission procedures
defined in Section 6, until all outstanding DATA chunks are
acknowledged; however, the SHUTDOWN receiver MUST NOT accept new data
from its SCTP user.
一旦所有传出数据都成功传送到远端,允许发送SHUTDOWN_ACK:
If the receiver of the SHUTDOWN has no more outstanding DATA chunks,
the SHUTDOWN receiver MUST send a SHUTDOWN ACK and start a T2-
shutdown timer of its own, entering the SHUTDOWN-ACK-SENT state. If
the timer expires, the endpoint must resend the SHUTDOWN ACK.
同样适用于 SACK 块。本地端仍然可以收到确认未完成数据的 SACK。但是,本地端不应向远程端发送任何新的 SACK 数据块,因为只有在远程端成功传送所有传出数据后才会发送 SHUTDOWN 数据块。
希望对您有所帮助。
我正在学习 SCTP 协议,但我搞不懂这一点。
服务器端收到客户端的SHUTDOWN消息后,是否允许发回数据? 那么 ACK 消息呢,它们仍然是 sent/received 还是必须服务器立即响应 SHUTDOWN ACK?
感谢您的帮助!
SHUTDOWN 块只是表示远程端想要关闭关联。本地端仍然可以传输它先前从上层接收到的数据。事实上,本地端必须交付所有从上层收到但尚未交付给远程端的东西。
根据 RFC 4960, chapter 9.2:
Upon reception of the SHUTDOWN, the peer endpoint shall
进入SHUTDOWN-RECEIVED状态,
停止接受来自其 SCTP 用户的新数据,并且
验证,通过检查块的累积 TSN Ack 字段, 它所有未完成的数据块都已被接收 关闭发件人。
...
If there are still outstanding DATA chunks left, the SHUTDOWN receiver MUST continue to follow normal data transmission procedures defined in Section 6, until all outstanding DATA chunks are acknowledged; however, the SHUTDOWN receiver MUST NOT accept new data from its SCTP user.
一旦所有传出数据都成功传送到远端,允许发送SHUTDOWN_ACK:
If the receiver of the SHUTDOWN has no more outstanding DATA chunks, the SHUTDOWN receiver MUST send a SHUTDOWN ACK and start a T2- shutdown timer of its own, entering the SHUTDOWN-ACK-SENT state. If the timer expires, the endpoint must resend the SHUTDOWN ACK.
同样适用于 SACK 块。本地端仍然可以收到确认未完成数据的 SACK。但是,本地端不应向远程端发送任何新的 SACK 数据块,因为只有在远程端成功传送所有传出数据后才会发送 SHUTDOWN 数据块。
希望对您有所帮助。