文件传输服务是网络互联环境所必需的一种服务,当前网络中文件传输最主要的传输方式是使用FTP协议。
FTP,全称File Transfer Protocol,中文名为文件传输协议,它可以在网络中传输电子文档、图片、声音、影视、程序及程序等多种类型的文件。如果用户需要将文件从自己的计算机上发送到另一台计算机上,可使用FTP上传(upload)或(put)操作,而更多种的情况是用户使用FTP下载(download)或获取(get)操作从FTP服务器上下载文件。
A. 客户端(这里是wangym)使用暂时端口作为源端口(这里是1149)向FTP服务器(这里是192.168.2.100)的21端口发起TCP SYN的数据包,请求建立TCP连接;FTP服务器发送SYN/ACK(同步确认)包给客户端,源端口为21,目标端口为客户端上使用的暂时端口1149;客户端向FTP服务器发送一个ACK(确认)包,TCP三次握手成功建立;
B. TP服务器需要对服务器的身份进行验证,要求输入用户名和密码,此处用户名和密码都是ftpuser
C. 客户端使用SYST命令获取FTP服务器的操作系统,此处是Windows_NT version 5.0,即Windows 2000;
D. 客户端使用PWD命令获取当前目录,当前为“/”,即当前处于FTP服务器的根目录;
E. 客户端使用PORT命令向FTP服务器发送一个上传或下载文件的请求,这个命令包含自己的地址(这里是192.168.2.44)和一个暂时端口(这里是是4126,目标端口的计算方法是,4*256+126=1150),FTP服务器在收到请求后,以20作为源端口,1150作为目标端口与客户端建立TCP连接;
A. 客户端(这里是wangym)使用暂时端口作为源端口(这里是1204)向FTP服务器(这里是192.168.2.100)的21端口发起TCP SYN的数据包,请求建立TCP连接;FTP服务器发送SYN ACK(同步确认)包给客户端,源端口为21,目标端口为客户端上使用的暂时端口1204;客户端向FTP服务器发送一个ACK(确认)包,TCP三次握手成功建立;
B. FTP服务器需要对服务器的身份进行验证,要求输入用户名和密码,此处用户名和密码都是ftpuser;
C. 客户端使用SYST命令获取FTP服务器的操作系统,此处是Windows_NT version 5.0,即Windows 2000;
D. 客户端使用PWD命令获取当前目录,当前为“/”,即当前处于FTP服务器的根目录;
E. 客户端使用PASV命令告诉FTP服务器,当前客户端使用的是被动传输模式;
F. FTP服务器对客户端的PASV命令进行响应,响应内容包括FTP服务器的地址和一个暂时端口,这里是192.168.2.100,437,用437计算出目标端口是4*256+37=1061;
G. 客户端使用LIST命令获取FTP服务器当前目录下的文件列表;
H. 客户端再次使用PWD或CWD命令获取当FTP服务器的当前目录,即刷新当前目录;
I. 客户端再次使用PASV命令向FTP服务器发起上传或下载文件的请求,FTP服务器接受请求,并返回地址和暂时端口以用于建立连接;
J. 客户端使用TYPE命令设置文件的传输类型,这里的传输类型为I;
K. 客户端使用STOR命令上传文件到FTP服务器,这里上传的文件是t1.cap;
L. FTP服务器使用226应答码告诉客户端t1.cap文件的传输成功完成;
M. 客户端使用PWD或CWD命令再次获取当FTP服务器的当前目录,即刷新当前目录;
N. 客户端使用TYPE命令将FTP服务器的传输方式重新设置为默认的ASCII方式;
O. 客户端再次使用PASV命令向FTP服务器发起上传或下载文件的请求,FTP服务器接受请求,并返回地址和暂时端口以用于建立连接,方法与第9步相同;
P. 客户端使用RETR命令从FTP服务器下载文件到本地,这里下载的文件是Readme.txt;
Q. FTP服务器使用226应答码告诉客户端Readme.txt文件的传输成功完成;
R. 数据传输完成以后,客户端向FTP服务器发送一个TCP FIN的数据包通知FTP服务器结束连接。这个FIN数据包需要FTP服务器以TCP ACK数据包确认,同时FTP服务器发送一个TCP FIN的数据包给客户端,这个FIN数据包同样需要客户端以TCP ACK数据包确认,双方成功确认后,关闭FTP控制连接。