CS144 LAB0~LAB4】的更多相关文章

这个叫什么?Write Up吗 lab0 lab0要做的事,实现buffer部分的功能,要自己写变量以及实现接口. 成员函数 write()向buffer内写数据,peek_out()  pop_out()  read()  函数从buffer内读数据, buffer长度capacity,需要变量记录向buffer内一共写入和读取过多长的数据. 有些变量在后面的lab会用上,第一次写真不容易想,好些都是参照别人的博客写的. lab1 // Construct a `StreamReassembl…
在Stanford CS144的课程实验Lab0~Lab4中,我们动手实现了一个自己的TCP协议,并且能够真的与互联网通信!此外,感谢Stanford开源本实验并提供了大量的优质测试用例,使得我们仅仅通过互联网就能获取到这么好的学习资源. 本篇博客将从我自己的角度出发简单介绍TCP协议,阐述实现的难点以及在实验过程中的收获. 什么是TCP? 正式的定义以及计网相关的基础知识请读者自行stfw,在此我只简单地从自己角度阐述. 从网络协议抽象层来看,TCP是一个传输层协议,用于实现不同主机上进程与进…
Stanford CS 144, Lab 0: networking warmup Finish Stanford CS144 lab0 and pass the test. 2023/03/29 - 01:45 目录 Stanford CS 144, Lab 0: networking warmup 2 Networking by hand 2.1 Fetch a Web page 2.2 Send yourself an email Listening and connection 3 Wr…
前言 本科期间修读了<计算机网络>课程,但是课上布置的作业比较简单,只是分析了一下 Wireshark 抓包的结构,没有动手实现过协议.所以最近在哔哩大学在线学习了斯坦福大学的 CS144 计算机网课程,这门课搭配了几个 Lab,要求动手实现一个 TCP 协议,而不是简单地调用系统为我们提供好的 Socket. 实验准备 CS144 Fall2019 的课件和实验指导书可以下载自 CS144 镜像网站,代码可以从我的 Github 仓库获取. 本篇博客将会介绍 Lab0 的实验过程,实验环境为…
Lab1-4 分别是完成一个流重组器,TCP接收端,TCP发送端,TCP连接四个部分,将四个部分组合在一起就是一个完整的TCP端了.之后经过包装就可以进行TCP的接收和发送了. 代码全部在github上了. Lab1 流重组器 这一个实验是要实现一个流重组器,传入数据的片段以及起始位置,之后对其进行重组,并尽快将以及重组完成的数据输出. 这里我使用的是红黑树来实现,也就是C++的std::set来实现.将未重组完成的碎片保存在红黑树中,当新碎片到达时就尽可能地将该碎片与已有的碎片进行合并,保证红…
本文为我的斯坦福计算机网络课的编程实验(Lab Assignments)的学习总结.课程全称:CS 144: Introduction to Computer Networking. 事情发生于我读了半本<计算机网络:自顶向下方法>后,想要找点练手的东西,碰巧在知乎上看到了这个推荐帖:CS144: 什么,你学不会TCP?那就来自己写一个吧!.这门课的作业要求实现一个简单的TCP协议,自带充足评测程序,同时又比较有挑战性,我便欣然做之. LAB0 在我开始做实验的时候官方不知为何已经删掉了spo…
实验概况 在开始实验之前,先对实验整体有个大概的了解,这样能让我们更好地进行实验. 我们本次实验需要补充的内容包括一整套以sys开头的系统调用函数,其中包括了进程间通信需要的一些系统调用如sys_ipc_can_recv等,以及补充完成fork.c函数,当然也不能少填写syscall_wrap.S. 系统调用 关于系统调用,我们主要是以以下流程来进行的: 用户调用syscall特权指令触发异常 异常触发,pc值自动被硬件置为0x80000080,转向异常分发代码 trap_init识别是系统调用…
1.下载mit jos lab4时遇到问题(关于git操作,使用,还需进一步理解) 遇到的问题 出现未合并(merge)完全的问题,操作:git add kern/init.c 之后在确认提交 方法二(未实现) 删除该本地分支 但由于有问题(merge 冲突)无法删除或者更换分支 关于git待补充 ----------------------------------------------------------------------------------------------------…
OS Lab4 踩坑记 Lab4在之前Lab3的基础上,增加了系统调用,难度增加了很多.而且加上注释不详细,开玩笑的指导书,自己做起来困难较大.也遇到了大大小小的bug,调试了一整天. 本文记录笔者在实现Lab4中遇到了一些bug,出现的问题可能不具有普遍性,但是可能有参考价值. 1. 在调用syscall_*函数的时候,可能会出现缺页的情况.…
forward 与 ! (tell) 的差异,举个例子: Main(当前actor): topNode ! Insert(requester, id=1, ele = 2) topNode: root ! Insert(requester, id=1, ele = 2) 对于root而言,Insert消息的来源是topNode 假如第二行替换为 topNode: root forward Insert(requester, id=1, ele = 2) 此时,对于root而言,Insert消息的…