FTP协议数据包命令含义详解

本节我们掌握FTP协议的数据包格式,为编码实现奠定基础。我们先看看控制命令的格式。当用户端通过控制命令通道想服务器端发送数据后,服务器端一定会产生回复。回复主要有三个目的,首先是让客户端确定服务端收到了消息,其次是通知客户端请求是否能被接收,第三通知客户端当前服务器的状态。

数据包格式的组成特点是数字与文本信息相混合。服务器返回给客户端的数据包中一定包含回复码,该数值用来通知客户端数据包的格式和内容。不同的服务器在回复的数据包中,同样目的的数据包回复码一定相同,但是字符串内容可能会有所不同,因此对数据包的解读必须根据回复码进行。回复码包含三位数值,每个数字对应不同意义,对于回复码“xyz",第一位数字是x,第二位是y,第三位是z,下面我们依次看他们对应的含有。

第一位数字x表示客户发送的命令是否能成功执行,他的意义对应如下表:

回复码含义描述
1yz命令被接受并执行第一步用户发送的命令需要执行多个不再,1表示当前请求正在被执行,用户需要等待服务器后续回复
2yz命令被接受且成功执行用户发送的请求已经被服务器完全执行
3yz命令被接受并且正在执行过程中客户端发送命令收到,但执行被推迟,例如客户端发起验证请求,同时发送给服务器用户名但密码还没有发过去时服务器就会返回此回复码
4yz命令暂时被拒绝客户端发送的命令不能被执行,但是客户端在稍后可以再次发送该命令进行尝试,例如服务器过忙时会返回该命令码,客户端就可以延迟一段时间后再次发送命令
5yz命令永久被拒绝服务器拒绝执行命令,后续发送也会被拒绝,例如请求服务器上没有的文件时就会返回该命令码

接下来看数字y的含义:

回复码含义描述
x0z数据格式问题客户端发送的数据包可能不符合格式
x1z数据包表示相关信息回复客户端发来的信息请求
x2z连接返回连接状态相关信息
x3z认证和统计返回登陆和统计方面信息
x4z未定义该数据包不表示任何含义
x5z文件系统返回服务器端文件系统信息

数字z是对数字y含义的进一步说明。当客户端收到的回复数字码为530时表示请求被永久拒绝,同时这是有关登陆方面的请求被拒绝,0表示被拒绝情况的进一步说明,下面是一次客户端与服务器连接登陆时的会话情景:

屏幕快照 2020-02-12 下午9.00.45.png

还有不少命令我们没有标明,下一节我们通过抓包的方式来查看ftp数据包格式以及详细的连接沟通以及数据传输过程。

更详细的讲解和代码调试演示过程,请点击链接

更多技术信息,包括操作系统,编译器,面试算法,机器学习,人工智能,请关照我的公众号:
这里写图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值