Skip to content

Commit db99a4a

Browse files
committed
update 7a and 7b
1 parent 2924614 commit db99a4a

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

docs/requirement.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
- 分数:5
100100
- 测试 6:在本地运行 socat 命令(命令:`sudo socat TCP-LISTEN:80,reuseaddr,fork TCP:www.baidu.com:80`),监听 80 端口并转发百度主页;然后运行 lab-client 并设置为 TUN 模式(命令:`make run-lab-client-tun`),那么 lab-client 会通过本机 80 端口访问百度主页 80 端口,并下载到本地
101101
- 注意:部分发行版可能没有自带 socat命令, 需要额外安装 socat 软件包
102-
- 注意:在关闭连接的过程中,当百度的服务器处于`FIN_WAIT_2`状态时,它只能接受`ACK=1, FIN=1`的包,而不会接受`ACK=0, FIN=1`的包,收到`ACK=0, FIN=1`的包时,服务器既不会返回`ACK`,也不会进入`TIME_WAIT`状态。如果你的实现里只能发送`ACK=0, FIN=1`的包,那么你的客户端可能会卡在`LAST_ACK`状态,无法进入`CLOSE`状态。(此条感谢尤梓锐同学提醒
102+
- 注意:在关闭连接的过程中,当百度的服务器处于`FIN_WAIT_2`状态时,它只能接受`ACK=1, FIN=1`的包,而不会接受`ACK=0, FIN=1`的包,收到`ACK=0, FIN=1`的包时,服务器既不会返回`ACK`,也不会进入`TIME_WAIT`状态。如果你的实现里只能发送`ACK=0, FIN=1`的包,那么你的客户端可能会卡在`LAST_ACK`状态,无法进入`CLOSE`状态。(cr. 尤梓锐
103103
- 教学目的:了解一个最小的 TCP 实现所需要的功能,并获得阶段性的成就
104104
- 验收要求:通过自动化测试,并展示下载的百度网页
105105

@@ -111,6 +111,7 @@
111111
- 测试 7a:启动 lwip-client 和 lab-server,模拟接收端的丢包,在输出日志中检查是否出现了正确的状态机转移
112112
- 测试 7b:启动 lab-client 和 lab-server,lab-server模拟 HTTP response 的延迟、乱序发送,在输出日志中检查是否出现了正确的状态机转移
113113
- 测例的具体实现机理可以参见源代码。欢迎对这两个测例进行改进,通过其他方式来展现重传和乱序重排的效果
114+
- 注意:有同学反映,有一定概率出现 HTTP response 不完整的情况。经分析可能是 `src/lab/lab-client.cpp` 中 95 行对 `close_and_exit` 函数的执行时间安排得太紧。现在已经做出了修改(cr. 郑皓之)
114115
- 教学目的:理解在网络中出现丢包或者乱序的时候,如何在协议上保持不重不漏、顺序正确地实现数据传输
115116
- 验收要求:通过抓包、日志等方式展示重传和重排,展示场景可以参考自动化测试脚本
116117

0 commit comments

Comments
 (0)