CS144课程实验详解-lab0-第一部分

配置环境

首先我们先来配置实验需要的虚拟机,这里我们使用文中的推荐配置,即VirtualBox+实验虚拟机cs144_vm.ova,英文原文地址:推荐配置

下载并安装VirtualBox

下载地址:VirtualBox下载地址
这里需要注意的是,如果你使用的是Windows操作系统,那么需要注意VirtualBox与Windows的版本适配问题,这里推荐如果你正在使用最新版的Windows10且在持续更新,那么建议在官网中下载最新版的VirtualBox,防止由于不兼容问题导致的Windows无法更新进而停止服务。

下载实验虚拟机cs144_vm.ova并导入VirtualBox

下载地址:虚拟机下载地址
下载成功后我们需要将虚拟机导入VirtualBox来使用
打开VirtualBox

这里我们打开VirtualBox,点击管理→导入虚拟电脑或者使用组合键ctrl+i来导入虚拟机
导入虚拟机
点击右侧黄色文件夹图标选择刚刚下载的虚拟机文件cs144_vm.ova,然后点击下一步
在这里插入图片描述

在弹出的窗口中我们可以修改为虚拟机分配的资源,这里我们推荐CPU分配到4,内存分配为4096MB,前提是你的电脑的资源够用的情况,当然我们也可以在下方修改默认的虚拟电脑放置的位置,修改之后点击导入,等待进度条结束就成功了
导入中
需要注意的是,第一次进入虚拟机的默认用户名和密码都是cs144,且需要我们强制修改密码。

额外提示-图形用户界面

在第一次进入虚拟机时,我们看到的是无图形用户界面的命令行界面,为了方便起见,我们可以手动配置来获得用户图形界面,依次执行以下两条命令即可

sudo apt-get install --reinstall lightdm
sudo systemctl start lightdm

额外提示-共享文件夹

我们在VirtualBox中选中我们的虚拟机,单击右上角设置
共享文件夹-1
在弹出的窗口内选择共享文件夹,然后单击右上角的加号图标
共享文件夹-2
在路径中选择一个你希望宿主机上的某个文件夹成为你的共享文件夹,然后别忘了选中自动挂载,可以省去很多麻烦,然后点击OK即可。这样可以方便的在宿主机和虚拟机之间传递文件。
共享文件夹-3

手动联网(Networking by hand)

获取网页(Fetch a Web page)

实验本体

这个小实验中,我们需要手动的去访问网址http://cs144.keithw.org/hello
,我们不妨先在宿主机中打开这个网址看一下,我们可以看到这个网址只有简简单单的一句话Hello,CS144!
网址情况
我们在虚拟机中打开终端,输入命令与服务器建立一条可靠的连接

telnet cs144.keithw.org http

在这里插入图片描述
当出现上图的显示后,依次输入下列命令,然后回车即可。这里我建议大家可以先把所有的命令写进一个文件中,比如我就写进了文件test中,然后复制进去直接回车,避免因为输入过慢导致连接超时,这个问题网上很多人都出现过,其实单纯地就是手速的问题导致连接超时,预先写好可以很好地避免这个问题。

GET /hello HTTP/1.1
Host: cs144.keithw.org
Connection: close

就会出现下面的回应,可以看到得到了与网页中的内容相同的文字Hello,CS144!,代表我们成功了
Fetch a Web page

举一反三

为了更加清晰的掌握,这里我们可以尝试着打开一个自己想要获取的网页,比如这里我们选择了在百度学术中搜索“1”的网址来获取,这样我们应该如何做呢?
百度学术
这里我们给出相应的命令
大家可以对比两次访问不同网址的不同命令,来体会其中的区别。

telnet xueshu.baidu.com http

GET /s?wd=1&rsv_bp=0&tn=SE_baiduxueshu_c1gjeupa&rsv_spt=3&ie=utf-8&f=8&rsv_sug2=0&sc_f_para=sc_tasktype%3D%7BfirstSimpleSearch%7D HTTP/1.1
Host: xueshu.baidu.com
Connection: close

给自己发送邮件(Send yourself an email)

实验本体

由于在原本的实验中使用的是斯坦福自己的学生邮箱和自己的服务器,因此作为没有SUNet ID的人来说,我们可以换一个网站进行这个实验的尝试,本部分使用smtp.163.com来进行实验,部分内容参考了这篇博客:使用命令行发送邮件
本实验中,首先需要我们连接到提供smtp服务的服务器

telnet 123.126.96.210 smtp

当然,出于好奇,我尝试了不使用IP地址而使用相对应的域名可否成功连接,答案当然是可行的,类似于ping操作一个道理,所以以下命令也可以成功连接服务器

telnet smtp.163.com smtp

插一句题外话,如果有一些同学想知道如何获得某个域名对应的IP地址,我们可以采用ping操作来获得,对于百度来说,我们可以使用

ping baidu.com

来获得相应的IP地址
获取IP
言归正传,连接到服务器后,可以看到这样的提示
发送邮件-1
之后,我们和服务器打个招呼

HELO smtp.163.com

如果收到相对应的回复则证明连接成功
发送邮件-2

之后我们如果按照原本的实验书上的流程进行,会提示没有验证身份信息,因此我们需要登录一下

auth login

会有一串有些不明所以的字符串显示出来,这时需要输入你的163邮箱账号,回车后又会有一串有些不明所以的字符串显示,这时需要输入你的邮箱密码,此时注意,输入的邮箱账号和密码需要经过base64编码。
发送邮件-3
提示认证成功后即可开始发送邮件了。
按照下面的格式发送邮件即可

MAIL FROM: <victor_q@163.com>

RCPT TO: <843689373@qq.com>

DATA

From:victor_q@163.com
To:843689373@qq.com
Subject:HELLO

hello,Im QCH.
.

发送邮件-4有两点需要注意,第一点是在输入完主题后需要空一行再写正文,即写完主题后需要连续按两次空格再输入正文,第二点是正文输入完毕后需要输入回车→英文的.→回车来发送邮件,成功发送后会有相应的提示。最后输入

QUIT

退出即可。然后查看你的接收邮箱就能找到你刚刚发送的邮件啦。
接收邮件

接听和连接(Listening and connecting)

实验本体

经过前面两个小实验,我们可以看到telnet是一个客户端程序,可以与其他计算机上运行的程序建立连接(a client program that makes outgoing connections to programs running on other computers),本实验中,我们建立一个简单的服务器来等待客户端的连接
首先打开一个终端作为服务器,输入命令

netcat -v -l -p 9090

然后打开一个新的终端作为客户端与服务器进行连接,在新的终端中输入命令

telnet localhost 9090

之后可以在服务器中看到客户端已连接
接听和连接-1
此时我们可以用服务器和客户端进行通讯,首先从服务器发送一条信息给客户端,可以看到客户端处也有信息显示
接听和连接-2
然后,我们从客户端发送一条信息给服务器,可以看到服务器处也有信息显示
接听和连接-3
我们看到,双向均可以可以正确通讯,实验结束。
接听和连接-4
在服务器端按下组合键ctrl+c即可断开连接,同时客户端也同步结束。

本节资源

本节中涉及到的命令和代码已放入CSDN,链接地址:lab0-(1)


版权声明:本文为qq_45880533原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。