一旦SCTP实体收到SHUTDOWN块,它仍然可以发送数据吗?

时间:2018-01-10 10:23:26

标签: sctp

我正在学习SCTP协议,我无法理解这一点。

服务器收到客户端的SHUTDOWN消息后,是否允许发回数据? 那么ACK消息呢,它们仍然可以发送/接收,还是服务器必须立即响应SHUTDOWN ACK?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

SHUTDOWN chunk只是远程方希望关闭关联的指示。本地方仍然可以传输先前从上层接收的数据。事实上,当地方必须提供从上层收到的所有东西,但尚未交付到远端。

根据RFC 4960, chapter 9.2

  

收到SHUTDOWN后,对等端点

  • 进入SHUTDOWN-RECEIVED状态,

  • 停止接受来自其SCTP用户的新数据,

  • 通过检查块的累积TSN Ack字段来验证,   所有出色的DATA数据块都已被收到   SHUTDOWN发件人。

...

  

如果仍有未完成的DATA块,则SHUTDOWN      接收方必须继续遵循正常的数据传输程序      在第6节中定义,直到所有未完成的DATA块为止      承认;但是,SHUTDOWN接收器不得接受新数据      来自其SCTP用户。

一旦所有传出数据成功传递到远程端,就可以发送SHUTDOWN_ACK:

  

如果SHUTDOWN的接收器没有更多未完成的DATA块,      SHUTDOWN接收器必须发送SHUTDOWN ACK并开始T2-      自己关机定时器,进入SHUTDOWN-ACK-SENT状态。如果      定时器到期,端点必须重新发送SHUTDOWN ACK。

这同样适用于SACK块。本地方仍然可以收到确认未完成数据的SACK。但是本地端不应该向远程端发送任何新的SACK块,因为只有在远程端成功传递所有传出数据后才会发送SHUTDOWN块。

希望这有帮助。