• 2024-03-07CS144_2020_Fall_lab1(流重组)
    废话已经在lab0说完了,我们直接来看lab10一些规定,废话1概述在实验0中,你使用了一个互联网流套接字来从网站获取信息并发送电子邮件,使用了Linux内置的传输控制协议(TCP)实现。这个TCP实现成功地产生了一对可靠的按顺序的字节流(一个从你到服务器的流,另一个在相反的方向),即使底层
  • 2024-03-06CS144_2020_Fall_lab0(实现开始,准备工作)
    碎碎念开头:三年竞赛无人问,一朝面试全盘输,大三的寒假过的并不是那么舒服,准备春招实习,筹备项目,面对满纸漏洞的简历,决定去做一下这个闻名已久的计算机网络实验:CS144-基于UDP实现TCP。虽说已经做完了,但是对于其中一些知识点扔不是很牢固,有些测试点仅仅也是面向样例编程,不明所以,仅以此
  • 2023-10-11CS144-lab5
    Checkpoint5Writeup该lab较简单,没什么好说的有两点是route函数for循环时必须用引用,还是ttl递减后要重新计算checksum,写的时候被坑到了。至于找到最长前缀匹配,遍历路由表即可,注意prefix为0时要特判;为了方便判断是否在路由表中找到符合项,max_prefix设置为int8_t。voidRouter:
  • 2023-10-11CS144-lab3
    Checkpoint3Writeup该lab主要实现TCP发送方,细节比较多,具有一定难度,编写时需要从整体上理清设计思路,然后再实现具体的函数。Timer由于要实现TCP中的超时重传功能,所以需要在发送方维护一个定时器,但不需要自己使用计时函数,因为文档里说明了所有对时间的了解都是通过tick函数得到
  • 2023-10-10CS144-lab1
    Checkpoint1Writeup该lab要根据首字母索引来对收到的字符串进行重组,还原为原始数据(字符串可能乱序到达,可能有重叠)思路是将按顺序并小于可用容量的字符串(可能是部分子串)直接推流到输出流,将失序但在可用容量内的字符串放入本地buffer。考虑到最好用首字符索引对收到的字符
  • 2023-10-09CS144-lab0
    Checkpoint0Writeup该lab要实现一个字节流,兼具写入和读出的能力,并且buffer空间受限。根据要实现的函数和读写功能,内部要存储的成员为std::queue<std::string>buffer_{};用于存储写入的字符串(原本用的std::queue,但由于queue内存不连续,调用peek返回string_view时还要将cha
  • 2023-10-03CS144-lab4
    Checkpoint4Writeup报文头格式IPV4头/**+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*|Version|IHL|TypeofService|TotalLength|*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+*|
  • 2023-07-31【学习笔记-CS144 计算机网络】传输层
    概述主要任务:对接端口连接管理分割和重组上下数据差错和纠错功能流量控制传输层协议TCP特点:可靠性高端到端,面向连接基于字节速度慢向下传递操作步骤:接受来自应用层的8位字节的数据流,并根据MTU分段。封装上队头标记,打包成数据包将
  • 2023-05-06CS144 计算机网络 Lab4:TCP Connection
    前言经过前面几个实验的铺垫,终于到了将他们组合起来的时候了。Lab4将实现TCPConnection功能,内部含有TCPReceiver和TCPSender,可以与TCP连接的另一个端点进行数据交换。实验要求简单来说,这次实验就是要在TCPConnection类中实现下图所示的有限状态机:这些状态对应T
  • 2023-04-30CS144 计算机网络 Lab3:TCP Sender
    前言在Lab2中我们实现了TCPReceiver,负责在收到报文段之后将数据写入重组器中,并回复给发送方确认应答号。在Lab3中,我们将实现TCP连接的另一个端点——发送方,负责读取ByteStream(由发送方上层应用程序创建并写入数据),并将字节流转换为报文段发送给接收方。代码实现TCPSe
  • 2023-04-25CS144 计算机网络 Lab2:TCP Receiver
    前言Lab1中我们使用双端队列实现了字节流重组器,可以将无序到达的数据重组为有序的字节流。Lab2将在此基础上实现TCPReceiver,在收到报文段之后将数据写入重组器中,并回复发送方。实验要求TCP接收方除了将收到的数据写入重组器中外,还需要告诉发送发送方:下一个需要的但是还
  • 2023-04-20CS144 计算机网络 Lab1:Stream Reassembler
    前言上一篇博客中我们完成了Lab0,使用双端队列实现了一个字节流类ByteStream,可以向字节流中写入数据并按写入顺序读出数据。由于网络环境的变化,发送端滑动窗口内的数据包到达接收端时可能失序,所以接收端收到数据之后不能直接写入ByteStream中,而是应该缓存下来并按照序号重组成
  • 2023-04-18CS144 计算机网络 Lab0:Networking Warmup
    前言本科期间修读了《计算机网络》课程,但是课上布置的作业比较简单,只是分析了一下Wireshark抓包的结构,没有动手实现过协议。所以最近在哔哩大学在线学习了斯坦福大学的CS144计算机网课程,这门课搭配了几个Lab,要求动手实现一个TCP协议,而不是简单地调用系统为我们提供好的So
  • 2023-03-09CS144 LAB0~LAB4
    CS144:LAB00.写在前面这更倾向于个人完成lab后的思考和总结,而不是CS144lab答案或者labdocument翻译(指南或者翻译已经有大佬做的很好了,下面已经贴出链接)出于
  • 2023-03-09CS144 LAB5~LAB6
    CS144lab5~6最后两个lab了,虽然很多大佬都说剩下的两个lab比起TCP的实现,“简直太简单了”,但是我认为做这两个之前需要补充一些额外的网络知识,不然直接上手去做的话,难度也
  • 2023-02-04【计算机网络】Stanford CS144 Lab 2: the TCP receiver 学习记录
    这次实验的目标为实现一个TCP协议的接收器。SequenceNumbersSequenceNumbersAbsoluteSequenceNumbersStreamIndicesStartattheISNStartat0Start
  • 2023-01-25CS144-Lab2-TCPReceiver
    lab地址:lab2-doc代码实现:lab2-code完整目录:0.ByteStream1.StreamReassembler2.TCPReceiver3.TCPSender4.TCPConnection5.ARP6.IP-Router1.目标lab
  • 2023-01-25CS144-Lab3-TCPSender
    lab地址:lab3-doc代码实现:lab3-code完整目录:0.ByteStream1.StreamReassembler2.TCPReceiver3.TCPSender4.TCPConnection5.ARP6.IP-Router1.目标lab
  • 2023-01-25CS144-Lab4-TCPConnection
    lab地址:lab4-doc代码实现:lab4-code完整目录:0.ByteStream1.StreamReassembler2.TCPReceiver3.TCPSender4.TCPConnection5.ARP6.IP-Router1.目标la
  • 2023-01-25CS144-Lab5-ARP
    lab地址:lab5-doc代码实现:lab5-code完整目录:0.ByteStream1.StreamReassembler2.TCPReceiver3.TCPSender4.TCPConnection5.ARP6.IP-Router1.目标lab
  • 2023-01-24CS144-Lab1-StreamReassembler
    lab地址:lab1-doc代码实现:lab1-code1.目标TCP一个很重要的特性是可以实现顺序、无差错、不重复和无报文丢失的流传输。在lab0中我们已经实现了一个字节流ByteSt
  • 2023-01-23CS144-Lab0-networking warmup
    lab地址:lab0-doc代码实现:lab0-code1.目标利用官方支持的TCPSocket,实现一个wget功能,其次,实现一个可靠的字节流。2.实现2.1webget实现上比较简单,主要就是:
  • 2023-01-23CS144-lab6-the IP router
    lab地址:lab6-doc代码实现:lab6-code1.目标lab6主要要实现一个路由的机制,首先互联网由多个局域网组成(不太严谨的说法),在lab5中我们只能支持在单个局域网中传递消
  • 2022-10-06【CS144】Spongeの类图分析(lab0~lab4)
    lab4写不下去了,感觉对代码理不清了,打算重新整理一下。重点是五个类,(正好对应lab0~lab4)ByteStream类这里只展示startcode中类的模样(具体的实现可能各有不同,所以重点看函
  • 2022-10-02CS144-Lab0
    Lab0主要是热身。task1和task2比较简单,按他指示来就行,略。task3写一个WebGet,代码如下:voidget_URL(conststring&host,conststring&path){//Yourcodehere