前段时间做了一个ftp server的小项目,其实自己做的不太多,网上借鉴的资料比较多,但是自己还是学到了很多东西,在这里总结一下,以备后来再看的时候
能很快的想起来。
ftp的过程(按照正确的流程):
首先,ftp客户端发送用户名usename,服务端进行验证并返回一个返回信息,接着客户端发送密码passwd,服务端验证若正确则建立连接,此时登陆成功。
其次,登陆成功后,客户端发送SIZE, 告诉服务器要上传的文件名, 服务器端解析获得文件名,并返回相关信息(文件是否找到或者权限问题等),
若成功,则返回代码213 ,并返回服务端的这个相同文件名的文件大小,若没有这个文件,则返回0(若之前该文件没有传完,支持续传功能)
然后,客户端发送PASV, 等待服务器端建立数据连接,专门用来接收文件的连接,服务端发送对应的响应码
然后,客户端发送ALLO, 告诉服务器要上传的文件的大小,服务端返回成功码后,客户端接着发送APPE, 开始上传数据
之后,客户端发送RNFR,告诉服务器要修改某个文件的文件名称,服务端给出对应的响应
之后,客户端发送RNTO, 把新的文件名字发给服务器,至此文件接收结束
解析文件的时候,要确保文件接收完成后,再进行相关的文件的操作,即在客户端发送命令RNTO,服务器解析完之后
其他相关小知识:
图片的编辑: