
CS144 计算机网络
文章平均质量分 92
Stanford CS144 计算机网络实验记录
Altair_Alpha_
这个作者很懒,什么都没留下…
展开
-
【斯坦福计网CS144项目】Lab5: NetworkInterface
广播一个ARP请求,该IP的主机收到请求后产生ARP回复,告知自己的MAC地址,源主机收到回复记录该对应关系形成ARPcache。如果为ARP,记录源主机的IP和MAC地址映射关系,如果查询的IP地址是自身,则产生ARP回复。对应的MAC地址不知道,就要用上面所说的ARP协议,广播ARP请求并将IP数据报暂存。网络层IP地址与链路层MAC地址存在对应关系,当源主机不知道一个IP数据报的目标IP地址对应的MAC地址时,应该通过。...原创 2022-07-31 11:15:23 · 1306 阅读 · 0 评论 -
【斯坦福计网CS144项目】Lab4: TCPConnection
在实现了接收端的 TCPReceiver 类和发送端的 TCPSender 类后,本节实验实现掌管这两个类,向用户提供一个完整的 TCP 连接抽象的 TCPConnection 类。正如讲义标题所写,完成本节的实验后,我们是真正攀登上了一个高峰(summit),也是完成了本门课程最重要精华的部分。事前提醒,本节的测试量非常大,其中会用你的 TCP 实现与 Linux 的 TCP 实现进行各种条件的交互,之前的 Sender 和 Receiver 类在实现上如果有潜在问题也都会被暴露出来。所以,如果你在尝试自原创 2022-07-05 18:34:21 · 1569 阅读 · 0 评论 -
【斯坦福计网CS144项目】Lab3: TCPSender
本节进行 TCP 协议中发送端 TCPSender 的实现。Sender 拥有一个输入的 ByteStream,代表用户提供的待发送的数据,而 Sender 要负责将其组装成 TCP 数据包并发送出去。所谓发送,就是将数据包 push 到一个队列 中即可,下一节实现的 TCPConnection 类(也就是 Sender 和 Receiver 的所有者)会负责从该队列中取走数据包并实际发出。除了保证 TCPSegment 中数据、序号以及 SYN,FIN 等标识设置正确,Sender 主要还需要考虑两个问原创 2022-07-04 23:01:37 · 782 阅读 · 0 评论 -
【斯坦福计网CS144项目】Lab2: TCPReceiver
本节在 Lab1 实现的 StreamReassembler 的基础上进行 TCP 协议中接收端 TCPReceiver 的实现。Lab 1 中实现的核心函数 认为输入的数据索引是一个 64 位表示(),从 0 开始依序增大的数字。然而 TCP 的序号并非如此:为此,讲义中给出了 seqno, absoulute seqno 和 stream index 的概念,下面这张图可以很好解释各自的含义:后两者的区别仅为相差 1,主要的问题就是如何实现从 seqno(TCP 包携带)到 stream ind原创 2022-06-22 12:20:17 · 1129 阅读 · 0 评论 -
【斯坦福计网CS144项目】Lab1: StreamReassembler
本节实现的类是 StreamReassembler,即字节流碎片的重组器。我们知道网络环境是不可靠的,其中传输的数据包既不保证不丢失,也不保证按发送顺序到达,因此需要有一个工具负责将这样乱序碎片化到达的流重组成按正确顺序连续排列的数据。重组的依据就是 TCP 协议规定的序列号,即每个字节的数据都有一个独特的编号,数据包会在包头中带上本包第一个字节数据的编号(和数据的长度),以表示本包的数据在整个流中的位置。在后面几节更上层的类的实现中会讲到,这个序列号叫做 seqnum,我们也要自己负责在发送数据时维护它,原创 2022-06-09 17:39:48 · 1412 阅读 · 1 评论 -
【斯坦福计网CS144项目】环境配置 & Lab0: ByteStream
前言感觉学了不少 C++ 编程的知识和技术但比较缺少实践,于是打算找一些项目跟着做一做。首先安利一个自学网站 CS自学指南,北大的同学做的,汇总了很多国内外高校 CS 相关的高质量公开课,其中大部分是有课程项目的。翻了翻感觉 Stanford 的这门 CS144 计网课的 Lab 比较有趣,难度也不错,就是它了!课程网址:CS 144: Introduction to Computer Networking我跟的是 2021 Fall 学期的版本。准备工作在上面的网站中先把 8 个实验的文档(原创 2022-05-27 23:15:00 · 7804 阅读 · 8 评论