LAB3要求

实验3-1:利用数据报套接字在用户空间实现面向连接的可靠数据传输,功能包括:建立连接、差错检测、确认重传等。流量控制采用停等机制,完成给定测试文件的传输。实验3-2:在实验3-1的基础上,将停等机制改成基于滑动窗口的流量控制机制,采用固定窗口大小,支持累积确认,完成给定测试文件的传输。实验3-3:在实验3-2的基础上,选择实现一种拥塞控制算法,也可以是改进的算法,完成给定测试文件的传输。实验3-4:基于给定的实验测试环境,通过改变延迟时间和丢包率,完成下面3组性能对比实验:(1)停等机制与滑动窗口机制性能对比;(2)滑动窗口机制中不同窗口大小对性能的影响;(3)有拥塞控制和无拥塞控制的性能比较。

实验要求:实现单向传输。对于每一个任务要求给出详细的协议设计。给出实现的拥塞控制算法的原理说明。完成给定测试文件的传输,显示传输时间和平均吞吐率。性能测试指标:吞吐率、时延,给出图形结果并进行分析。完成详细的实验报告(每个任务完成一份)。编写的程序应结构清晰,具有较好的可读性。提交程序源码和实验报告。

评分标准:每个任务最高100分。每个任务分值分配协议设计、功能实现(40分)演示并讲解(20分)程序及规范性(20分)实验报告(20分)

助教给的路由程序

就是client发送给路由程序,路由程序给服务端,同理服务端给路由程序,路由程序给客户端。所以说在代码中:client和server都发送到路由段,同理,接收端也接收路由的信息。因此,在程序里需要声明路由器需要的套接字以及套接字需要绑定的地址,然后进行转发功能。这里给出魏伯繁的一个讲解反正我是用不了那个破玩意,只能自己设置丢包和延时玩了。原理很简单,弄个随机数,然后mod100,然后设置一个阈值,超过了就啥都不干,就是丢包了。延时就是sleep。

实验评价

很烂的实验,很无语的实验,首先这门课没有实验指导书,但是让你随意发散着做,会有几种结果:要不就是一通抄,要不就是一堆人卷疯了,要不就是魔改学长的作业,只有很小的可能是自己在过程中有了巨大的收获。因此建议随便找一个学长学姐的抄抄改改,然后自己学学cs144。如果说要说什么好处的话,这个实验和理论课是结合得较为紧密的,某种程度上比编译和操作系统合理一些。如果是作为加深课堂知识的角度做的实验,是有一定意义的。当然,这个破实验我自己写了以后才发现是真浪费时间。

四个小lab的连接

3-1
3-2
3-3
3-4
github仓库

小技巧

待出分后更新,对21级及以后的宝贝们应该帮助巨大