应用层实验
实验目的
掌握应用层的基本工作原理和实现方法
实验工具
telnet,WSL
实验内容
HTTP协议的实验
从学校网站(www.sysu.edu.cn)找一个网页下载
http请求:
1 | GET /2012/cn/index.htm HTTP/1.1 |
1 | GET /2012/cn/index.htm HTTP/1.1 |
http响应:
从学校网站(www.sysu.edu.cn)找一个图片下载
http请求:
1 | GET /2012/images/content/2020-02/20200202145357635528.jpg HTTP/1.1 |
http响应:
在http请求的头部行中加入If-Modified-Since: Sat, 16 May 2020 14:57:17 GMT从学校网站下载(2)的图片
http请求:
1 | GET /2012/images/content/2020-02/20200202145357635528.jpg HTTP/1.1 |
http响应:
没有修改
用流水线方式实现前面(1)(2),即把它们的请求拷贝到一起后发送出去(可能太长,第一部分可以只有看到末尾)。注意:connection都要是keep-alive
http请求:
1 | GET /2012/cn/index.htm HTTP/1.1 |
http响应:
用(1)的地址取回网页的一部分(100-200,400-)
http请求:
1 | GET /2012/cn/index.htm HTTP/1.1 |
http响应:
FTP协议的实验
FTP服务器:IP地址为103.26.79.35,端口号为 21 (用户名:net,密码:123456)
上传用学号命名的一个文本文件(学号.txt)
控制连接的请求响应信息:
数据连接的截屏:
查看当前目录内容(太多则选择一些),并标注出(1)中自己上传的文件
控制连接的请求响应信息:
数据连接的截屏:
下载(1)中自己上传的文本文件
控制连接的请求响应信息:
数据连接的截屏:
下载/ebook下的一个二进制文件(例如,.pdf文件)
控制连接的请求响应信息:
数据连接的截屏:
采用断点续传下载一个/text下的一个文本文件的一部分
控制连接的请求响应信息:
数据连接的截屏:
分两次上传一个文本文件 (使用APPE命令)
控制连接的请求响应信息:
第一次数据连接的截屏
第一次ftp目录的截屏(包含上传文件):
第二次数据连接的截屏
第二次ftp目录的截屏(包含上传文件):
修改时间改变了。
SMTP协议的实验
通过我的QQ邮箱发一封没有附件的邮件到我的中大邮箱
请求和响应信息:
1 | HELO 1347453756 |
打开中大邮箱,发现确实可以收到:
通过我的QQ邮箱发一封带附件(二进制文件)的邮件(MIME.txt)到我的中大邮箱
请求和响应信息:
1 | HELO 1347453756 |
邮件内容:
收到结果:
通过中大邮箱发送另一个带附件的邮件给QQ邮箱。可以先给你自己发一封带附件的邮件,再通过查看源码截取该响应报文的一部分,参见MIME.txt
找了半天也没有找到查看源码的地方在哪。。。。。。只能放弃了。
从你的邮箱发一份邮件到同学的邮箱
请求和响应信息:
1 | HELO 1347453756 |
邮件内容:
1 | data |
实验结果:
好像时间不对。。。为了避免麻烦同学就没改了。
POP3协议
查看我的QQ邮箱中每个邮件大小
请求和响应信息:
取回我的QQ邮箱的最后一封邮件的邮件唯一标识符
请求和响应信息:
用 UIDL 命令即可
取回zsureceiver5@sina.com最后一封邮件
请求和响应信息:
用RETR命令即可
取回三(1)中发到你邮箱的邮件
请求和响应信息:
先用list命令看一下有多少封,取出最后一封即可。
五、mytelent源代码
1 | /* client2.c */ |
实验体会
这次实验内容很多,我花了很长时间才完成。遇到的困难主要有:
1.windows系统下Telnet用不了,并不清楚为什么。折腾了一番之后只能在wsl(一个能在windows下跑的linux子系统)下用telnet。不过后来看到实验要自己写一个telnet,就又写了一个。
2.在写Telnet的过程中也遇到了很多问题,一个是不知道怎么把域名转为ip地址,后来在一篇博客上找到了相关的函数。第二个问题是连接网页的时候总是报 400 错误,找了半天发现是回车符的问题,把所有的\n改为\r\n后就解决了。其他的部分就简单了,我一开始以为要写很久,后来发现只要把实验二的客户端代码改一下就完成了。
3.对MIME格式文件不是很熟悉,看了很久才看明白(可能是上课听讲不认真)。
总的来说这次实验还是很有价值的,一方面锻炼了编程能力,另一方面也学到了很多应用层的相关知识,期待下一个实验的到来。