这是整个实验最复杂的部分。
总的流程说实话我并没有完全做出来,抄了大量的作业,主要原因还是 TCP 的状态机确实有点复杂,有很多边缘条件需要考虑,调试起来死活都修不好。
今天的任务是完成 Lab3,实现一个 TCPSender。
TCPSender 比 TCPReceiver 更加复杂,因为涉及到定时器来进行超时重传机制。
标准的 TCPSender 是一个 GBN 与 SR 都有借鉴的机制,当然更倾向于 GBN,但又有不同。
今天的任务比较简单,总共就要实现两个任务:Sequence Numbers 的转化与 TCP Receiver 的实现。
下面对 Lab2 的两个任务进行分析。
TCP 的序列结构本质上就是围绕「可靠、有序的字节流」设计的一套编号体系。TCP 不关心数据包,而关心一个连续的字节流,因此需要给每个字节编号。
经过 Day0 对 Lab0 的完成,今天的任务也很明了:完成 Lab1。
CS144 本质上只实现一个简易 TCP 框架,所以本课程实际涉及到的计算机网络层级一般只用 TCP/IP 协议中的传输层与网络层以及应用层。本次实验也是同理,我们要完成一个 StreamReassembler——将字符串拼接字节流。