计算机网络应用层协议与配置实验指导书FTP.docx
- 文档编号:4541854
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:36
- 大小:310.91KB
计算机网络应用层协议与配置实验指导书FTP.docx
《计算机网络应用层协议与配置实验指导书FTP.docx》由会员分享,可在线阅读,更多相关《计算机网络应用层协议与配置实验指导书FTP.docx(36页珍藏版)》请在冰豆网上搜索。
计算机网络应用层协议与配置实验指导书FTP
计算机网络实验指导书应用层协议与配置*
一、实验目的及内容
学习FTP服务器的基本配置;学习FTP工具常用命令的使用;分析并测试FTP的协议细节。
二、实验原理及基本技术路线图(方框原理图或程序流程图)
搭建简单的FTP服务器,使用FTP命令与FTP服务器交互,完成登录,查看目录列表,上传并下载文件等基本操作,并通过日志了解底层的FTP协议细节,通过TELNET工具直接和FTP服务器进行协议级别的通讯。
三、所用仪器、材料(设备名称、型号、规格等或使用软件)
1台PC,FTP服务器软件;
四、实验方法、步骤(或:
程序代码或操作过程)
1、安装并启动Serv-U,新建一个域,域IP地址为“使用任何可用的IP地址”,该域名称为学生的姓名拼音,端口号默认为21。
注意:
配置完成后,域应该处于在线状态。
2、在PC机的磁盘上建立一个目录ftproot,并在目录中创建文件名为1.txt的文本文件,文件内容为helloftp。
在Serv-U的域中建立用户,用户名称为学生的姓名拼音,密码可自行设置。
主目录设置为ftproot所在路径。
锁定用户于主目录。
建立用户后,通过目录访问标签页,将ftproot目录的权限设置为允许文件读取、文件写入、文件追加和文件删除,允许目录的列表和创建和移除。
3、按下图要求设置域的记录选项。
可在域的活动页中查看域日志。
注意:
可以只开启记录FTP命令和FTP回复,方便后面的协议分析。
注意:
可在日志输入窗口中按Del键清除日志,或者右键,在弹出式菜单中选择清除。
4、使用浏览器登录FTP服务器,在地址栏中输入ftp:
//本机的ip地址,输入用户名和密码。
可在浏览器或者资源管理器中上传或者下载文件。
注意:
浏览器中只能下载文件,必须切换到Windows资源管理器中才可以上传文件,可以在浏览器中单击“视图”,然后单击“在Windows资源管理器中打开FTP站点”。
5、使用FTP命令行工具,将FTP服务器上的1.txt文件下载到本地电脑上。
注意:
输入密码时,密码不回显。
6、查看并分析域日志中的FTP协议的命令与回复。
(请参考RFC959,FTP命令的解释在第4章)
FTP工具的操作
FTP协议的命令与回复
输入用户名
命令:
USERdaiwei
回复:
331Usernameokay,needpassword.
输入密码
PASSxxxxx
230Userloggedin,proceed.
查看当前目录文件
dir
PORT127,0,0,1,207,51
200PORTCommandsuccessful.
LIST
226Transfercomplete.
下载文件
get1.txt
PORT127,0,0,1,207,52
200PORTCommandsuccessful.
RETR1.txt
226Transfercomplete.
退出
bye
QUIT
221Goodbye!
7、直接使用FTP协议,将FTP服务器上的1.txt文件下载到本地电脑上。
(使用telnet工具直接访问FTP服务器的21号端口)。
注意:
因为telnet只能模拟主动发起的TCP连接,不能模拟被动监听打开的TCP连接,所以本步骤使用PASV被动打开方式建立数据连接,不同于第6步FTP客户端采用的PORT主动打开方式。
注意:
在输入LIST命令后,服务器已经通过之前的PASV命令在127.0.0.1的53082(207*256+90)端口等待客户端发起数据连接,此时需要另开一个telnet程序访问127.0.0.1的53082端口,就可读取LIST命令所返回的数据。
同理,在输入RETR1.txt后,服务器已经通过之前的PASV命令在127.0.0.1的53136(207*256+144)端口等待客户端发起数据连接,此时需要另开一个telnet程序方位127.0.0.1的53016端口,就可读取LIST命令所返回的数据。
例如:
8、请自行用FTP工具练习使用上传文件( put)、删除文件(delete)、创建目录(mkdir)、删除目录(rmdir)、修改文件名(rename)等常用操作,并分析所产生的日志。
并尝试借助telnet工具直接和FTP服务器使用FTP协议进行会话。
(选做)
注意:
请自行查阅关于ftp命令工具的更多命令的使用方法。
参考资料:
2010-05-14
1.1.1FTP-RFC959中文版
转自:
文件传输协议(FileTransferProtocol,FTP)
1.介绍
FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。
虽然我们也可以手工使用它,但是它的主要作用是供程序使用的。
在阅读本文之前最好能够阅读TCP协议标准规范和Telnet协议标准规范。
2.概览
在本节中我们将讨论一些表面上的问题,有些名词的定义请参阅TCP和Telnet参考文献。
我们先介绍一下
(1)字节大小,在FTP中字节大小有两个:
逻辑字节大小和用于传输的字节大小。
后者通常是8位,而前者可不一定是多少了。
传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。
(2)控制连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。
(3)数据连接是传输数据的全双工连接。
传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间。
(4)DTP:
数据传输过程(DTP)建立和管理数据连接,DTP可以是主动的也可以是被动的。
(5)EOR代表记录尾。
(6)NTV代表网络虚拟终端,它的定义与在Telnet协议中的定义一致。
(7)NVFS代表网络虚拟文件系统。
(8)FTP可以传输非连续的文件,这些文件的一部分称为页。
(9)PI代表协议解释器。
(10)服务器DTP代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI的指令传输数据。
当然,DTP也可以转入“被动”状态。
(11)服务器FTP进程,它是和用户FTP进程一起工作的,它由PI和DTP组成。
至于用户FTP进程则是由PI,DTP和用户接口组成的。
下图是FTP服务示意图:
注意:
数据连接是双向的,它不用整个时间都存在。
上图中用户PI开始控制连接,控制连接与Telnet协议很象。
在开始阶段,标准FTP命令由用户PI产生并通过控制连接传送到服务器进程。
服务器PI向用户PI返回标准应答。
FTP命令指定数据连接参数和文件系统操作。
用户DTP在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。
数据端口不必在开始FTP命令的机器上,但用户或用户FTP进程必须确定它在指定的数据端口上侦听。
这个数据连接是全双工的。
在另外一种情况下,用户或许希望在两个主机间传送文件,不是两个本地主机。
用户在两台主机间建立控制连接,然后规划数据连接。
用这种方式,控制信息由用户PI获得,但是数据在服务器DTP之间传送。
下面就是一个例子:
服务器间传送信息
协议要求数据传输在处理时打开控制连接。
在完成FTP服务后由用户中止控制连接,而服务器具体操作。
如果在未接收命令时关闭了控制连接,服务器也会关闭数据传输。
FTP和Telnet很有联系,FTP使用Telnet协议进行控制连接,可有两种方法达到目的:
用户PI或服务器PI可以在自己的过程中实现Telnet协议的功能;第二种方法是利用系统中现有的Telnet模块。
实现上,FTP对Telnet协议的依赖也不多,即使重新实现,代码量也不大。
3.数据传输功能
数据连接只传输数据,控制连接传送命令和响应。
几个命令是关于在主机间传输数据的,数据传输基本上独立于物理结构的,但是如果在压缩传输模式下流式传输与文件结构有关,文件的属性与表示类型有关。
3.1.数据表示与保存
数据是在主机间的存储设置间传送的。
因为两个系统的数据存储方式不同,因此需要对它进行转换,在传送文本时会有对ASCII表示的问题,在进行二进制传送的时候,会有不同系统对字节长度规定不同的问题,有的系统是7位,有的系统可能是32位,这也需要进行转换。
需要提供数据表示与传输模型函数,但是FTP提供这方面的功能不多,超过FTP提供功能的那一部分要用户自己实现。
3.1.1.数据类型
数据表示是由用户指定的表示类型,它可以是隐含的,也可以是用户指定的。
请一定注意:
逻辑字节长度与物理字节长度是不同的。
3.1.1.1.ASCII类型
这是所有FTP必须实现的默认类型,用于传送文本文件,当在主机间使用EBCDIC传送时更方便,则不使用ASCII类型。
发送方将内部表示转换为NVT-ASCII格式,接收方则进行相反的过程接收数据。
根据NVT标准,要在行结束处使用
NVT-ASCII是8位的。
ASCII和EBCDIC的格式参数在下面讨论。
3.1.1.2.EBCDIC类型
它是作为ASCII的另一种方法在主机间传送数据的数据类型。
EBCDIC和ASCII很象,仅在类型的功能描述上有一些差别。
行结束符使用很少。
3.1.1.3.图象类型
在此类型下传送的数据被看作连续的位,发送方将数据打包到8位传输字节中传送。
因为结构的需要要对传送数据进行填充,填充字节全部为0,填充必须在文件结构时使用,而且要标记出以便接收方过滤掉。
它用于传送二进制数据和有效地传送和存储文件,因此所有FTP也必须实现。
3.1.1.4.本地类型
也可以以十进制指定逻辑字节大小。
如果物理字节大小和逻辑字节大小不同,直接将物理数据打包为逻辑字节,不用什么填充。
接收方根据逻辑字节大小进行和本机的存储特点进行转换。
传输必须是可重复的,也就是说,相同的文件相同的参数,那内容必须是一样的。
3.1.1.5.格式控制
ASCII和EBCDIC有一个可选参数,它说明文件垂直格式控制,下面的数据表示类型在FTP中有定义。
字符文件可能有三种用途,打印,存储或留待以后处理。
如果是用于打印,那主机必须知道垂直格式控制的表示,如果存储或等以后处理,也需要保留文件格式。
如果在远程主机上处理完后传输回本地主机,要保证远程主机处理时没有麻烦。
这都需要在ASCII和EBCDIC格式上加入新的参数。
3.1.1.5.1.NONPRINT
未指定第二个参数是它是默认值。
它必须为所有FTP接受。
如果传输的文件是用于打印的,则使用边界和间隔的默认值。
通常它不用于打印目的,而用于保存文件或执行文件。
3.1.1.5.2.TELNET格式控制
文件包括ASCII/EBCDIC垂直格式控制,这些控制字符可以使打印正常进行。
3.1.1.5.3.CARRIAGECONTROL(ASA)
文件包含ASA(FORTRAN)垂直格式控制字符。
在以ASA标准形成的行中,第一个字符不打印,它用于决定打印前的走纸量。
下面是定义了的ASA字符:
blank:
向下移动1行;0:
向下移动2行;1:
移动至下一页;+:
不移动
打印机必须能够决定结构体的结束。
如果文件本身有记录结构就没有问题,如果没有,
3.1.2.数据结构
除了有不同的数据类型外,FTP还允许有不同的文件结构,下面是三种文件结构:
文件式结构:
文件中没有内部结构,文件被看作是二进制流;记录结构:
文件是由一系列记录组成的;页结构:
文件是由不同的索引页组成的。
如果未使用STRU命令,文件结构是默认值。
文件的结构会影响传输模型,存储和数据表示。
文件本来的属性和保存它的主机有关,不同的机器会以自己的方式保存文件。
在不同主机间传送文件时必须使主机能够识别相互的表示。
有些主机上的文件是面向字节的,有些是面向记录的,在传送时就会出现问题。
那就要在接收方进行内部转换。
在进行转换的时候,需要区别记录的边界,在ASCII中使用
采用这种实现方法的必须保证转换是可逆的。
3.1.2.1.文件结构
如果未使用STRU命令,文件结构是默认值。
文件结构中没有默认值,文件被看作是连续的字节串。
3.1.2.2.记录结构
对于文本文件,记录结构必须是所有FTP实现必须有的。
记录结构文件是由连续的记录构成的。
3.1.2.3.页结构
文件是非连续时使用页结构。
这种文件称为随机访问文件。
这些文件中有时会的和文件整体或部分相关的信息出现。
在FTP中,文件的一个部分称为页。
为了提供不同的页大小和相关信息,每页都带页头发送。
页头中有如下域:
头长度
包括此字节的页头长度,单位为字节,最小长度为4
页索引
指出此部分在原文件中的位置,它和传输编号不是一回事
数据长度
页数据中的逻辑字节数,最小值为0
页类型
页的类型有以下几种:
0=未页,指示传输结构,包头必须为4,数据长度必须为0;1=通常页,没有控制信息的通常页文件的普通类型;2=描述子页,用于传送整体文件的描述信息;3=访问控制页,包括页级访问控制信息的页文件头域,包头长度必须为5
可选域
提供每页的控制信息
所有域均以1个逻辑字节长度为大小,逻辑字节长度由TYPE命令指定。
如果读取版本与和开始版本号一致,文件访问时必须以相同的参数进行。
如果参数相同,FTP实现要保证取得的文件内容是相同的。
3.2.建立数据连接
传送数据机制包括建立连接选择数据参数。
用户和服务器DTP有默认数据端口。
用户进程默认数据端口和控制连接端口相同。
服务器进程默认数据端口和控制连接端口相邻。
传输字节大小是8位字节。
此字节是实际传输字节,但不代表主机内的数据表示。
被动数据传输进程在数据端口接收数据,FTP请求命令决定数据传输的方向。
服务器在接收到请求以后,将初始化端口的数据连接。
当连接建立后,传输在DTP之间传送,服务器PI对用户PI返回应答。
FTP实现运行一个默认数据端口,用户PI才能改变默认端口。
通过PORT命令可能改变端口,用户可能希望数据在第三方主机上进行其它操作,用户PI需要在两个服务器PI上建立连接。
一个服务器被告知侦听另一服务器的请求。
用户PI通过PORT命令通知另一服务器的数据端口。
最后双方发送相应的传送命令。
通常,服务器负责支持数据连接,初始化并关闭它,除非用户DTP在传输模式下要求关闭连接。
服务器在下面情况下关闭数据连接:
1.服务器结束发送数据,通过EOF要求中止传送;
2.用户发送ABORT命令;
3.用户改变端口;
4.控制连接关闭;
5.发生不可恢复错误。
3.3.数据连接管理
默认数据连接端口:
所有FTP必须支持默认数据连接,只有用户PI能够初始化非默认端口的使用。
确定非默认数据端口:
用户PI可以使用PORT命令指定非默认端口,它要求服务器方以PASV确定非默认数据端口。
连接是由双方地址确定的,因此改变一方地址就改变了连接。
数据连接的重用:
在使用流式数据传输模型时,文件结束通过关闭连接指示。
如果要传送多个文件时就会出麻烦,解决的方法有两个,一个是确定非默认端口,另一个是使用另一种传输模式。
就传输模式而言,流传输模式是不安全的,因此无法确定连接是暂时还是永久关闭。
其它传输模式不通过关闭连接表示文件结构,它们可以通过FTP命令决定传送结构。
因此使用这些传输模式可以在保持连接的情况下传送多个文件。
3.4.传输模式
有三种传输模式:
一种将数据格式化并考虑重新开始过程;一种压缩数据;一种是不经过处理(少量处理)传送。
所有数据传输必须以一个EOF结束,它可以显式给出,也可以通过关闭连接隐式给出。
对于记录文件,所有EOR是显式的,包括最后一个记录。
对于以页结构传送的文件,使用“最后一页”表示结束。
从这里开始,下文中我们提到的字节指的是“传输字节”。
为了进行标准化传送,传送主机必须把行结束或记录结束的内部表示转化为传输模式和文件结构指定的形式传送,接收方则进行相反的工作。
IBM大型机的记录计数域可能不能为其它主机识别,所以记录结束标记在流模式下以双字节控制码传送,在块或压缩模式下以标记位传送。
而ASCII或EBCDIC的行结束则则
这样的转换需要时间,所以相同的系统在传送文本文件时采用二进制或流表示比较合适。
下面是FTP定义的传输模式:
3.4.1.流模式
数据以字节流的形式传送。
使用的表示类型没有限制,允许记录结构。
在记录结构文件EOR和EOF表示为双字节控制码。
第一字节全为0,后一字节为转义字符。
当第二位值为1时表示EOR,为2时表示EOF,如果要同时表示EOR和EOF,值为3。
全1字节作为数据发送时必须使用双字节传送,其中数据保存在第二个字节内。
如果是文件结构,通过发送方关闭连接表示EOF,接收到的所有数据就是文件内容。
3.4.2.块模式
文件以块形式传送,块带有自己的头部分。
头字节包括计数域和描述子代码。
计数域说明了数据块的字节数,描述子代码定义了以下内容:
EOF,EOR重新开始标记或怀疑错误数据。
怀疑错误数据不是为了进行差错控制,它是为了站点间交换特定数据,传送时不管本地错误(如硬盘错误)而只管传送,但是传送时可要指出,这个数据可能有错。
在此模式下可以使用记录结构,也可以使用相应的数据表示。
头字节的结构如下图所示:
描述子8位
字节计数16位
描述子代码由在描述子字节中的位标记说明,下面是已经指定的四种代码及其意义:
代码
意义
128
数据块结束是EOR
64
数据块结束是EOF
32
数据块内有怀疑错误
16
数据块是重新开始标记
以这种编码,对于特定块可能存在多个描述子编码条件,所需要的位必须全部设置。
重新开始标记包括在数据流中,它作为8位整数代表在控制连接上使用语言的可打印字节,但
例如要传送6字节标记,下面就是例子:
Descrptrcode=16
Bytecount=6
Marker8位
Marker8位
Marker8位
Marker8位
Marker8位
Marker8位
3.4.3.压缩模式
有三种信息需要传送:
常规数据以字节串传送;压缩数据,包括复本和过滤器;控制信息,以两个转义字符传送。
如果有N(>0但小于127)个常规数据传送,在数据前一位加上一个字节,这个字节最高位为0,其它位表示的数值等于N。
如下图:
图示
若要压缩一个数据位D的N复本字符串,用两个字节传送,如下图,它表示的是压缩的字节:
图示
一串N过虑器字节可以压缩为一个字节,而过滤器字节根据表示法不同而不同。
如果类型是ASCII或EBCDIC,过滤器字节是
下面就是过滤器字节:
图示
转义序列是双字节,头一个全0,后一个内是定义于块模式下的描述子代码。
描述子代码与块模式中的意义相同,它作用于其后串中的字节。
而压缩模式对于增加带宽有好处(因为数据是压缩过的)。
3.5.差错恢复和重新开始
位丢失和数据错误是这一层的差错控制由TCP负责。
而重新开始则是给用户一个处理系统(包括操作系统,网络等)失败的方法。
重新开始过程仅适用于块和压缩模式,它要求发送者在数据流中加入特定标记,标记仅对传送者有意义,但其中的内容是控制连接使用的语言。
标记可以代表一个位记数,记录记数或可以标记数据数目的任何点。
如果接收方也支持重新开始,将会在接收系统中保存这一标记。
在系统失败重新启动后,用户可以根据原来的标记重新开始数据传送,也就是我们通常熟悉的断点续传过程。
接收方接收到一段数据,然后记下一点,如果发送方失败了,就从这一点以后再传送相应的数据。
具体的这里不多说了。
4.文件传输功能
从用户PI到服务器的信道是建立在用户到标记服务器端口间的。
用户协议解释器负责发送命令和解释接收的应答;服务器PI解释命令,发送应答,指导DTP建立数据连接并传送数据。
如果数据传输的第二方是用户DTP,通过用户FTP主机的内部协议对它进行控制;如果第二方是服务器DTP,它由用户PI发来的命令经过自己的PI控制。
4.1.FTP命令
4.1.1.访问控制命令
下列命令指定访问控制标记(命令码在括号内):
用户名(USER)
参数是标记用户的Telnet串。
用户标记是访问服务器必须的,此命令通常是控制连接后第一个发出的命令,有些主机还会要求口令和帐户。
服务器可以在任何时间接收新的USER命令以改变访问控制和(或)帐户信息。
这可以重新开始登录过程,所以传输参数不变,在进行中的文件传输在过去的访问控制参数下完成。
口令(PASS)
参数是标记用户口令的Telnet串。
此命令紧跟USER命令,在某些站点它是完成访问控制不可缺少的一步。
因此口令是个重要的东西,因此不能显示出来,服务器方没有办法隐藏口令,所以这一任务得由用户FTP进程完成。
ACCOUNT(ACCT)
参数是标记用户帐户的Telnet串。
此命令不需要与USER相关,一些站点可能需要帐户用于登录,另一些可以限制帐户的权限,在后一种情况下,此命令可在任何时候发送。
应答的不同可以区别不同的情况:
当登录需要帐户信息时,对PASS命令的响应是332。
另外,如果不需要帐户信息,对PASS的响应是230,如果需要帐户信息在以后需要,服务器会返回332或532,这要看它是保存此命令还是拒绝此命令了。
改变工作目录(CWD)
此命令使用户可以在不同的目录或数据集下工作而不用改变它的登录或帐户信息。
传输参数也不变。
参数一般是目录名或与系统相关的文件集合。
回到上一层目录(CDUP)
此命令要求系统实现目录树结构,它的响应和CWD的相同。
结构加载(SMNT)
此命令使用户在不改变登录或帐户信息的情况下加载另一个文件系统数据结构。
传输参数也不变。
参数是文件目录或与系统相关的文件集合。
重新初始化(REIN)
此命令终止USER,将所有I/O和帐户信息写入,但不许进行中的数据传输完成。
重置所有参数,控制连接打开,可以再次开始USER命令。
退出登录(QUIT)
此命令终止USER,如果没有数据传输,服务器关闭控制连接;如果有数据传输,在得到传输响应后服务器关闭控制连接。
如果用户进程正在向不同的USER传输数据,不希望对每个USER关闭然后再打开,可以使用REIN。
对控制连接的意外关闭,可以导致服务器运行中止(ABOR)和退出登录(QUIT)。
4.1.2.传输参数命令
所有数据传输参数有默认值。
服务器必须记录下默认值,在FTP服务请求后,可以以任何顺序发送。
下面命令传送参数:
数据端口(PORT)
参数是要使用的数据连接端口,通常情况下对此不需要命令响应。
如果使用此命令时,要发送32位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 应用 协议 配置 实验 指导书 FTP