
CS144
文章平均质量分 95
MINGgoS
这个作者很懒,什么都没留下…
展开
-
CS144-Lab6
在本周的实验中,你将在现有的基础上实现一个IP路由器,从而结束本课程。路由器有几个网络接口,可以在其中任何一个接口上接收互联网数据报。路由器的工作是根据路由表发送到哪个接口;下一跳的IP地址;你的工作是实现一个路由器,它可以为任何给定的数据报计算出这两件事。(你不需要实现设置路由表的算法,例如RIP、OSPF、BGP或SDN控制器,只需要实现跟随路由表的算法)。你对路由器的实现将使用带有新的Router类的Sponge库,以及在模拟网络中检查你的路由器功能的测试。实验6建立在你在实验5中对。原创 2023-02-25 20:41:59 · 1336 阅读 · 0 评论 -
CS144-Lab5
在本周的实验中,你将深入研究并实现一个网络接口:世界各地的互联网数据报和一跳一跳的链路层以太网帧之间的桥梁。该组件可以“隐藏”在早期实验的TCP/IP实现之下,但它也将用于不同的设置:当你在实验6中建立一个路由器时,它将在网络接口之间路由数据报。图1显示了网络接口如何适应这两种设置。你对网络接口的实现将使用与你在实验0-4中使用的相同的Sponge库,并增加了类和测试。但是,应大众的要求,本实验的大部分(但不是全部)都可以在不依赖早期实验的TCP连接的情况下完成。原创 2023-02-24 22:44:16 · 1175 阅读 · 0 评论 -
CS144-Lab4
在实验0中,你实现了流量控制的字节流(ByteStream)的抽象概念。在实验1、2和3中,你实现了该抽象概念与互联网提供的抽象概念之间的转换工具:不可靠的数据报(IP或UDP)。现在,你已经接近顶峰:一个可以工作的,它结合了你的TCPSender和,并能以至少100Mbit/s的速度与其他TCP实现对话。图1显示了整体设计:图1:TCP实现中的模块和数据流的安排。实际上这意味着你的在流结束后有一个叫做的成员变量,通过state()方法暴露给测试程序。这个变量一开始是true。如果入站流在。原创 2023-02-20 09:43:03 · 1039 阅读 · 0 评论 -
CS144-Lab3
在实验0中,你实现了流控制字节流(ByteStream)的抽象。和。现在,在实验3中,你将实现连接的另一端:一个将出站字节流转换为不可靠数据报中发送段的工具。,其中包含TCPSender和。你将用它来与世界各地的真实服务器进行对话。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1optjRay-1676857230540)(null)]原创 2023-02-20 09:40:48 · 960 阅读 · 0 评论 -
CS144-Lab2
上周您创建了一个StreamReassembler,它重组子字符串,其中每个字节都有一个64位流索引,流中的第一个字节总是索引为0。然而,在TCP报头中,空间是宝贵的,流中的每个字节的索引不是用64位的索引表示的,而是用32位的“序列号”或“seqno”表示的。如果接收到的数据已经过期或已经在之前的数据段中处理过,则不需要重新组装数据,直接返回即可。在 Lab2,我们将实现一个 TCPReceiver,用以接收传入的 TCP segment 并将其转换成用户可读的数据流。对接收到的数据进行重新组装。原创 2023-02-20 09:40:15 · 830 阅读 · 0 评论 -
CS144-Lab1
如果该块只写入了部分数据,即字节数小于该块的长度,就将该块的缓冲区前缀截去已写入的字节数,并将该块重新插入到队列中。这些数据块需要和缓存区中的已有数据块合并,如果新数据块和已有数据块可以合并成一个连续的数据块,则合并它们。TCP的工作是通过不可靠的数据报网络传输两个字节流(每个方向一个),以便写入连接一侧套接字的字节显示为可在对等端读取的字节,反之亦然。这段代码是一个函数,用于处理来自逻辑流的子字符串(即段)数据,该数据可能是乱序的,然后组装任何新的连续的子字符串并按顺序将其写入输出流。原创 2023-02-20 09:40:53 · 1289 阅读 · 0 评论 -
CS144-Lab0
访问,并观察结果。原创 2023-02-20 09:40:21 · 1185 阅读 · 0 评论 -
CS144 环境配置
CS144: 什么,你学不会TCP?那就来自己写一个吧!- 胡津铭的文章 - 知乎。原创 2023-02-20 09:38:30 · 968 阅读 · 0 评论