支持 TCP 可靠数据传输
修改 tcp_apps.c(以及 tcp_stack.py),使之能够收发文件
执行 create_randfile.sh,生成待传输数据文件 client-input.dat
运行给定网络拓扑(tcp_topo.py)
在节点 h1 上执行 TCP 程序
在节点 h2 上执行 TCP 程序
执行脚本(disable_tcp_rst.sh, disable_offloading.sh),禁止协议栈的相应功能
在 h2 上运行 TCP 协议栈的客户端模式 (./tcp_stack client 10.0.0.1 10001)
使用 md5sum 比较两个文件是否完全相同
使用 tcp_stack.py 替换其中任意一端,对端都能正确收发数据
每个连接维护一个超时重传定时器
定时器管理
触发定时器后
struct tcp_timer retrans_timer
。tcp_set_retrans_timer
、tcp_update_retrans_timer
、tcp_unset_retrans_timer 函数分别负责定时器的设置、更新以及删除。
tcp_scan_retrans_timer_list
函数该函数负责扫描符合条件的定时器,若超时,则判断是否需要重传。
由于实现简单重传机制非常耗时,此实验将传输文本大小缩短到了 500KB,另外为了验证本设计的鲁棒性,丢包率增大到了 10%。
本次实验的结果如下:
上图可知,可知本次实验结果符合预期,客户端发送的文件与服务器端接受的文件一致。