⛳️1. 斯坦福大学计网实验室
【中文精翻】【斯坦福大学】CS144 计算机网络介绍!!!
1.1 斯坦福大学之CS144
在斯坦福大学,CS144是网络世界的大门。这门课程不仅传授网络系统的根基原理和框架,更是探索计算机网络核心概念的摇篮。IP、TCP、路由,这些网络骨架的秘密将被揭示,而学子们将会深入了解网络构建、管理和维护的神秘奥秘,以及数据在这个网络舞台上的华丽演绎。
CS144采用炼金术般的教学模式,融合理论授课、资料阅读、编程挑战和实验探索,助力学生深度探究计算机网络的魅力。这门课程要求学生进行一系列项目和作业,可能包括网络协议的创新设计、仿真模拟和深度分析,唤醒学子们将理论知识嵌入实际的巧思。
换而言之,CS144旨在孕育学生对计算机网络的深刻理解,为他们奠定构建、管理和优化网络系统的必备基石和技能。在这个网络狂潮中,CS144为学子们描绘出一幅璀璨的网络未来图景。
1.2 CS144实验室之Lab7
CS144是斯坦福大学的计算机网络课程,Lab 7是该课程的一部分,通常涉及网络安全和加密等内容。然而,关于具体Lab 7的细节可能因课程更新或变化而有所不同,包括但不限于以下内容:
- 主题:Lab 7涉及网络安全领域的特定主题,比如加密、认证、安全通信等。
- 内容:学生需要实现一些网络安全相关的功能或算法。例如,可以涉及编写代码来实现加密算法,设计安全通信协议,或者进行网络攻防的模拟实验等。
- 工具和语言:根据课程和实验的要求,需要使用特定的编程语言或工具来完成Lab 7。这可能涉及Python、C++、Java等语言,以及诸如Wireshark等网络分析工具。
- 任务:Lab 7的任务会要求学生完成一系列编程任务、撰写报告、分析网络流量或者模拟网络攻击与防御等。
⛳️2. Lab7
2.1 实验目的
1 在之前的实验的基础上使用两台主机构建一个简单网络并发送文件,测试网络的连通性。
2 合并检测之前所做的lab的正确性
2.2 实验说明
1 到lab7为止,我们已经实现了Internet基础结构的很大一部分。从lab0(一个可靠的字节流),到lab1-4(传输控制协议),lab5(一个IP/以太网网络接口)和lab6(一个IP路由器)。
2 在lab7中,我们不需要进行任何编码。相反,我们将使用之前的所有实验来创建一个真正的网络,其中包括我们的网络堆栈(主机和路由器)与另一个学生实现的网络堆栈通信。
2.3 实验内容
1 使用两台主机构建简单网络
(1)输入命令”cdsponge/build”进入build目录,输入命令”gitmergeorigin/lab7-startercode”获取实验代码,获取完成后输入命令”make”进行编译,编译结果如图8-1所示。
cd sponge/build git merge origin/lab7-startercode
图8-1 编译结果
(2)在两台主机虚拟机上各自创建一个终端窗口。
(3)在服务器端输入命令”./apps/lab7servercs144.keithw.org2048”,以2048端口连接网络。运行结果如图8-2所示。
./apps/lab7 server cs144.keithw.org 2048
图8-2 服务器连接网络
(3)在客户端主机输入命令” ./apps/lab7servercs144.keithw.org2049”,以2049端口连接网络。运行结果如图8-3所示。
./apps/lab7 server cs144.keithw.org 2049
图8-3 客户端连接网络
(4)此时,客户端主机与服务器主机连接成功,客户窗口出现”Successfullyconnectedto172.16.0.100:1234”。如图8-4所示。服务器主机出现”Newconnectionfrom192.168.0.50:4359”,如图8-5所示。
图8-4 主机显示连接成功
图8-5 服务器显示连接成功
(5)测试服务器、客户端的连接。在客户窗口输入数字,也在服务器端输入相同的数字,其结果如图8-6-8-7所示。可以发现除了第一次的传播较慢之外,后面能顺序到达,网络通畅一般是顺序到达。
图8-6 客户端的数字显示
图8-7 服务器的数字显示
(6)断开客户与服务器之间的连接。在客户窗口按下输入”ctrl+d”退出连接。结果如图8-8-8-9所示。
图8-8 客户端的连接关闭
图8-9 服务器端的连接关闭
2 发送文件
(1)按照第一个实验的步骤在两台主机之间建立连接。在服务器端输入命令”./apps/lab7servercs144.keithw.orgevennumber < /tmp/big.txt”以发送过一个big.txt文件,此时客户端窗口会出现相同的命令,如图8-10所示。
./apps/lab7 server cs144.keithw.org even number < /tmp/big.txt
图8-10 服务器发送文件
(2)客户窗口输入命令”</dev/null ./apps/lab7clientcs144.keithw.orgoddnumber > /tmp/big-received.txt”以接收服务器发送的文件,并将”big-received.txt”文件存储在本地中。运行后会收到服务器发来的信息” ./apps/lab7servercs144.keithw.orgevennumber < /tmp/big.txt”,如图8-11所示。
</dev/null ./apps/lab7 client cs144.keithw.org odd number > /tmp/big-received.txt ./apps/lab7 server cs144.keithw.org even number < /tmp/big.txt
图8-11 主机接收服务器的文件
(3)此时服务器也会收到主机发送的信息”</dev/null ./apps/lab7clientcs144.keithw.orgoddnumber > /tmp/big-received.txt”。表示文件已经被主机正确接收,如图8-12所示。
</dev/null ./apps/lab7 client cs144.keithw.org odd number > /tmp/big-received.txt
图8-12 服务器收到信息
(4)按照实验一的步骤断开服务器与客户端的连接。
(5)在客户端输入命令”sha256sum /tmp/big.txt”、”sha256sum /tmp/big-received.txt”以查看接收文件与发送文件的哈希码,结果如图8-13所示。可以看到,二者的哈希码是一致的,表示文件内容一致。
sha256sum /tmp/big.txt sha256sum /tmp/big-received.txt
图8-13 查看接收文件哈希码
(6)在服务器端输入命令”sha256sum /tmp/big.txt”查看发送文件的哈希码,结果如图8-14所示。可以看到,服务器端发送的文件与客户机端接收的文件的哈希码是一致的,所以传输文件成功!
sha256sum /tmp/big.txt
图8-14 查看发送文件哈希码
2.4 实验体会
1 本次实验是cs144的最后一个实验,本次实验分为建立连接发送文字和建立连接发送文件两部分。最开始的下载lab7的实验材料,然后把实验代码整合到lab7中,这并未出现问题。不过接下来建立连接发生了问题,我们的猜想是可能3000这个频道用的太多所以连接一直没有建立成功,并且以为是要两台电脑或者要两个虚拟机才能连接成功(事实并非如此)。所以就暂时等队友一起解决,最开始是尝试两个人使用3000和3001来解决,不行然后尝试使用3000和4001来解决,还是不行。然后就开始再来一起阅读lab7文档,后面我的队友就开始在两个端口尝试其他频道然后成功了(比如客户端使用2049,服务器端使用2048,因为客户随机数始终要比服务器的数字大一)。然后我也试了下也成功了,不过建立连接也用了很多时间比队友慢了很多,可能是网络的问题。
2 在发送文件时,最开始是先建立连接再到服务器方面输入3个指令,显然失败了,然后就是再仔细阅读文档后先创建随机数文件然后再到服务器方面和客户方面各输入一个指令,然后还是失败。最后我们继续阅读lab7文档。发现没有服务器方面发送文件后关闭客户输入后再输入接受文件指令,实验得以成功。我们发现假如结果没有显示说明网络有延迟,因为毕竟是在外网,所以我们也是尝试了很多次才会显示结果,总体来说lab7其实操作并不算难,但运气成分也是其顺利完成实验的必要环节。
3 我们成功通过了8次实验从lab0到lab7完成了应用层,传输层,网络层,数据链路层的功能。最后成功用整体的框架实现发送文字乃至发送文件,尽管这个过程并不是看上去那样容易,因此我们非常有成就感,努力做到虚壹而静,静心而行。
📝总结
斯坦福大学的CS144实验从Lab0到Lab7涵盖了广泛的网络系统和计算机网络主题。Lab0往往是介绍性的,可能涉及设置实验环境和初步概念。逐步进入Lab1至Lab7,学生将涉及更深层次的网络协议、编程和系统设计。