please replace with a real implementation that passes the// automated checks run by `make check_lab2`.template<typename... Targs>voidDUMMY_CODE(Targs &&.../* unused */){}usingnamespacestd;//!
Lab1 中我们使用双端队列实现了字节流重组器,可以将无序到达的数据重组为有序的字节流。Lab2 将在此基础上实现 TCP Receiver,在收到报文段之后将数据写入重组器中,并回复发送方。 实验要求 TCP 接收方除了将收到的数据写入重组器中外,还需要告诉发送发送方: 下一个需要的但是还没收到的字节索引 允许接收的字节...
这是通过checkpoint来实现的。所谓检查点,就是上一次接收方发给对方的ack,也就是第一个未确认的序号,也就是接收方目前正在期待的一个序号。有了这个序号,我们就知道该r_seq一定对应[checkpoint - (2^32 - 1), checkpoint + (2^32 - 1)]中的一个元素。因为一个 TCP 报文段最多发送2^32个字节,不可能再...
该lab是TCPRecevier的实现,从对端接受一部分数据流然后insert进reassembler里。 TCP协议中的序列号seq其实就对应reassembler中insert方法的first_index参数,同理TCP的确认消息中的ack其实就是reassembler的first_unassembled_index,告诉对端下一个等待的序列号。 这个分为两部分,1.相对序列号和绝对序列号之间的转换,2.Re...
CS144 lab2 笔记 CS144 lab2 笔记 介绍 在lab0中,我们实现了一个ByteStream。 在lab1中,实现了一个重组字符片段的StreamReassembler,重组收到的字符片段,并且将排序好的字符串退送到ByteStream 在lab2中,j将实现一个TCPReceiver,它将在TCP segments和byte stream之间进行转换...
在build 目录下输入命令"make check2" 对lab2进行检查,结果如3-6所示,可以看到所有的测试样例全部通过。 图3-6 测试结果 四、实验体会 在本次实验中,我们实现了一个简单的TCP接收类。通过这个实验,我对TCP数据传输有了更深的理解,并学会了如何处理传入字节流的数据。
(1)获取实验代码。切换到build目录,输入命令”gitmergeorigin/lab2-startercode”,如图3-1所示。其运行结果如图3-2所示。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 git merge origin/lab2-startercode 图3-1获取实验代码 图3-2
1.2 CS144实验室之Lab2 CS144的Lab2是一个有趣而挑战性的实验,通常涉及构建一个简化的网络路由器。这个实验有助于学生深入理解路由器的工作原理和网络数据包转发过程。 在Lab2中,学生通常需要实现基本的路由器功能,包括数据包的转发和路由表的构建。他们可能会编写代码来处理接收到的数据包,根据目的地IP地址选择正...
Lab Two 对应的PDF:Lab Checkpoint 2: the TCP receiver TCPReceiver 简述 在Lab2,我们将实现一个 TCPReceiver,用以接收传入的TCPsegment 并将其转换成用户可读的数据流。 TCPReceiver 除了将读入的数据写入至 ByteStream 中以外,它还需要告诉发送者两个属性: ...
实现中,需要实现wrap()函数将绝对序列号转换为相对序列号,以及unwrap()函数反向转换。wrap()函数简单,只需添加初始序列号并取模2^32。unwrap()函数需要处理多个可能的绝对序列号对应情况,并使用检查点选择最接近的绝对序列号。实验的第二部分是实现TCP接收器,包括接收报文段、使用流重组器重组字节流...