btvector
这是一个基于BusTub实现向量拓展的教程,支持向量数据类型以及相关的优化。根据这篇博客实现,具体流程如下:
Lab 0 实现了flow-control ByteStream;Lab1、2 实现了TCPReceiver; Lab3实现了TCPSender。
Lab4则是要将这几个模块整合起来,完成TCP。前几个lab过于简单,而Lab4才开始上强度了。如果你之前的实现有没被测试cover的bug,那这里也会揭露出来。
Lab2、3完成了TCP Receiver,接收不可靠TCPSegment,并将其重组为可靠的bytes stream。而Lab3则开始实现TCP Sender(即下图黄色部分),将一串bytes stream拆分成一个个TCP segment,交给IP层发送出去,同时还要追踪接受者接受情况,利用重传保证可靠性。
Lab4则会完成最后的TCPConnection部分。
Lab 1 所做的都是些数据结构的东西,不涉及网络,而Lab 2会真正开始触及网络的内容。
Lab 2 会完成 TCPReceiver,从Internet接收一个TCP segment,解析其内容并交给Lab1做的StreamReassembler处理,然后应用层从StreamReassembler读取排列好的数据。
Lab0 体验了操作系统自带的socket的使用。接下来 Lab1 ~ Lab4 会逐步实现上图这样的一个CS144TCPSockert (socket不一定是基于TCP,也可以是UDP,所以这个叫TCPSocket),利用不可靠的Network层实现一个可靠的传输流。
Lab1实现的是StreamReassembler。如图,StreamReassembler是位于TCP接收端。从Network层接收过来的包非常杂乱,可能丢失、颠倒、重复、错误,而StreamReassembler的作用就是把这些乱七八糟的包重组成原本的模样。就像给一副混乱的扑克牌,让它给你重组成出厂的顺序。
Lab0 如其名,warmup,就利用工具实际感受了一下 Bi-directional reliable byte stream。除了发送e-mail那个部分需要Stanford账号,其他的跟着步骤做就行。