测试目的:
本测试用例旨在验证DUT(被测试设备)在TCP连接中对于窗口缩小的处理能力。特别是当接收方的窗口大小更新为零时,发送方TCP必须能够健壮地处理这种情况,避免发送数据,以免造成“可用窗口”变为负值。
描述:
在TCP连接中,窗口大小用于流量控制,指示接收方可用于接收数据的缓冲区大小。如果接收方的缓冲区已满,它可能会发送一个窗口大小为零的ACK段,以通知发送方暂停发送数据。一个健壮的TCP发送方应该能够正确处理这种情况,并在“可用窗口”为负值时停止发送新的数据段。本测试用例将验证DUT是否能够在接收方窗口缩小到零时停止发送数据。
测试拓扑:
具体步骤:
1、TESTER: 使DUT进入ESTABLISHED状态
2、TESTER: 导致DUT端的一个应用程序发出一个数据SEND请求
3、DUT: 发送数据段
4、TESTER: 发送ACK
5、TESTER: 导致DUT端的一个应用程序再发出两个数据段的SEND调用
6、DUT: 发送数据段
7、TESTER: 为第一个段发送带有更新后的窗口值(为零)的ACK
8、TESTER: 导致DUT端的一个应用程序发出一个数据段的SEND请求
9、DUT: 不发送该段,因为“可用窗口”是负数
通过标准
3. DUT: 发送数据段
6. DUT: 发送数据段
9. DUT: 不发送该段,因为“可用窗口”是负数
参考文档:
RFC 1122 s4.2.2.16 p91 Managing the Window “RFC-793 Section 3.7 page
41”
(MUST)