当前位置:网站首页>FTP协议
FTP协议
2022-07-26 15:45:00 【InfoQ】
工作模式:
被动模式(PASV):
主动模式(PORT):
数据传输:(概念放在其前面)
数据结构:
建立数据连接
数据连接管理
传输模式
流模式:
块模式:
压缩模式:
FTP命令
1.访问控制命令
返回上层目录(CDUP)
2.传输参数命令
3.FTP服务命令
4.FTP响应
响应码中第一位数字的意义:
5.抓包分析:
被动模式下的抓包分析
主动模式下的抓包分析如果采用主动模式,那么数据传输端口就是20;
如果采用被动模式,则具体最终使用那个端口需要服务器和客户端协商决定。工作模式:
被动模式(PASV):
1、FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的21端口发送连接请求;
2、ftp服务端主进程收到请求后,派生出来一个服务端控制进程,和客户端控制进程之间建立控制连接,开始会话;
3、ftp客户端和ftp服务端之间通过各自的控制进程进行用户名和密码校验等操作;
4、当ftp客户端要发起数据文件传输时,ftp客户端控制进程向服务端控制进程发起pasv命令;
5、ftp服务端控制进程收到pasv请求后,派生出来一个数据传输进程,<并将端口号告知客户端>控制进程,返回227 entering passive mode (h1,h2,h3,h4,p1,p2),其中端口号是 p1*256+p2,ip 地址为h1.h2.h3.h4;《服务端告知客户端》
6、 ftp客户端控制进程收到响应后,派生出来一个客户端数据传输进程,随 客户端数据传输端口,连接服务端的数据传输端口号(即上条中的ip+端口号),然后进行数据文件传输;
7、当数据传输完毕,服务端数据传输进程返回传输完毕,数据连接通道会关闭,保留控制连接通道;
8、如果此时没有其他文件传输,控制通道也会相继关闭。
主动模式(PORT):
1、FTP客户端使用一个随机端口N(一般大于1024)向FTP服务器的21端口发送连接请求;
2、ftp服务端主进程收到请求后,派生出来一个服务端控制进程,和客户端控制进程之间建立控制连接,开始会话;
3、ftp客户端和ftp服务端之间通过各自的控制进程进行用户名和密码校验等操作;
4、当ftp客户端要发起数据文件传输时,客户端派生出一个数据传输进程,并通过客户端控制进程将数据连接的port告知服务端控制进程。<客户端告知服务端>
5、当ftp服务端收到请求后,派生出一个服务端数据传输进程,产生一个服务端端口号,然后根据请求中ftp客户端数据传输进程序端口号建立数据传输连接。
6、ftp客户端收到服务端的响应后,进行数据文件的传输。
7、当数据传输完毕,服务端数据传输进程返回传输完毕,数据连接通道会关闭,保留控制连接通道;
8、如果此时没有其他文件传输,控制通道也会相继关闭。
数据传输:(概念放在其前面)
数据结构:
为了提供个不同页大小以及相关信息,每页传输时将额外包括一个页头。页头有以下定义的域:
头长度:包括这个字节在内的头逻辑长度。最小头长度是4.
页索引:文件区域的逻辑页号。不是传输的序列号,而是标识本页的索引号。
数据长度:页中数据的逻辑字节数。最小数据长度为0.
页类型:标识了页的类型。具体如下:
0 = 最末页
用来标识页结构传输结束。页头长度必须为4,数据长度必须为0.
1 = 单独页
对于没有页相关控制信息的单独页来说这是普通的类型。页头长度必须为4.
2 = 描述页
这个类型用来传输整个文件的描述信息
3 = 存取控制页
此类型包括一个额外的指定页存取信息的头域。头长度必须为5.
可选域:
其他的头域可能用来提供每页的控制信息,如每页的存取控制。
所有的域都是一个逻辑字节。逻辑字节长度由TYPE命令指定。数据连接管理
传输模式
流模式:
块模式:
压缩模式:
FTP命令
1.访问控制命令
某些站点可能需要一个账户用来登陆,另一些站点仅用于特殊访问权限,比如存储文件等。
当登陆过程必须要求填写账户信息的时候,PASS命令成功的响应代码是332;如果登陆过程不要求账户信息时,PASS命令成功的响应代码时230;如果账户信息需要在随后的对话命令中给出,服务器应该根据时保留(等待ACCT命令)还是放弃命令来相应地返回332或者532.、
返回上层目录(CDUP)
2.传输参数命令
PORT h1,h2,h3,h4,p1,p2
h1是因特网主机的高8位
3.FTP服务命令
获得(RETR)——该命令引起服务器DTP传送一个由路径指定的文件拷贝到数据连接另一端的服务器
或用户DTP。服务器文件的状态和内容应该不受影响。
保存(STOP)——该命令引起服务器DTP接受经过数据连接传送的数据并将这些数据存储为服务器端
的一个文件。如果在路径参数里指定的文件在服务器端已经存在,那么这个文件会被传送过
来的数据覆盖。如果指定的文件不存在则会在服务器端新建一个文件 。
唯一保存(STOU)
追加(包括创建)(APPE)
分配(ALLO)
重新开始(REST)——指定了需要重新开始传输的文件的位置标记。该命令不会引起文件的传输,只是忽略文件中指定标记点前的数据。
重命名开始(RNFR)——指定了需要重新命名的文件的原始路径名。后面须跟”重命名为“命令,来指定新的文件路径。
重命名为(RNTO)
放弃(ABOR)——该命令告诉服务器放弃先前的FTP服务命令和相关的传输的数据。
删除(DELE)——在服务器端删除指定的文件。
删除目录(RMD)
新建目录(MKD)
打印工作目录(PWD)
列表(LIST)
名字列表(NLST)
站点参数(SITE)——服务器使用这个命令提供本系统可能对传输有帮助的特殊服务。
系统(SYST)——该命令用来得到服务器端操作系统的类型。
状态(STAT)——该命令通过控制连接以响应码的形式返回状态信息。
帮助(HELP)
空操作(NOOP)——不指定任何动作,只是要求服务器返回OK响应。
删除(DELE)——在服务器端删除指定的文件。
删除目录(RMD)
新建目录(MKD)
打印工作目录(PWD)
列表(LIST)
名字列表(NLST)
站点参数(SITE)——服务器使用这个命令提供本系统可能对传输有帮助的特殊服务。
系统(SYST)——该命令用来得到服务器端操作系统的类型。
状态(STAT)——该命令通过控制连接以响应码的形式返回状态信息。
帮助(HELP)
空操作(NOOP)——不指定任何动作,只是要求服务器返回OK响应。
4.FTP响应
响应码中第一位数字的意义:
1xx:预备状态——请求的动作已经启动,在下一个新命令之前,期望一个回应。这种类型的响应用来表明命令已被接受。
2xx:完成状态——请求动作被成功的完成。一个新的请求可以开始。
3xx:中间状态——命令被接受,但是请求动作暂时没有被执行,等待收到进一步的信息。用户应发送另一个命令来指定这个信息。这个回应用在命令组合中。
4xx:暂时拒绝状态——命令没有被接受,请求动作没有发生。但是这个错误状态是暂时的,动作可以被再次请求。用户应该重新回到命令队列的开始。
5xx:永久拒绝状态——命令不被接受,请求动作不会发生。用户进程不能重复同样的请求。
区分一个响应应该属于4xx还是5xx的一个规则是:看这个命令是否可以不加修改,并在相同的用户、服务器状态下再次重复。
响应码中第二位数字的意义:
x0x:语法错误——给出的命令不存在、没有实现或者多余。
x1x:信息——对于请求信息的响应,比如对状态或帮助的请求。
x2x:连接——关于控制连接和数据连接的响应。
x3x:身份验证和账户——对登陆过程和账户处理的响应。
x4x:目前未被使用。
x5x:文件系统——请求传输时服务器文件系统的状态或其他文件系统动作状态。5.抓包分析:
被动模式下的抓包分析


主动模式下的抓包分析

边栏推荐
猜你喜欢

This article explains in detail the discovery and processing of bigkey and hotkey in redis

德国emg电动执行器EB800-60II
![[expdp export data] expdp exports a table with 23 rows of records and no lob field. It takes 48 minutes. Please help us have a look](/img/ee/7bec8211dddc90e52c2bc0f56c8dd4.png)
[expdp export data] expdp exports a table with 23 rows of records and no lob field. It takes 48 minutes. Please help us have a look

Development and implementation of campus epidemic prevention and control management system based on SSM

Summary of QT plug-in development -- add plug-in menu in the main interface

TI C6000 TMS320C6678 DSP+ Zynq-7045的ZYNQ PS + PL异构多核案例开发手册(1)

If you want to be good at work, you must first use its tools -c language expansion -- embedded C language (11)

Using information entropy to construct decision tree

工具技能学习(二):前置技能-shell

OSPF comprehensive experiment
随机推荐
ES6 advanced - query commodity cases
[dsctf2022] PWN supplementary question record
深度学习中图像增强技术的综合综述
Digital warehouse: iqiyi digital warehouse platform construction practice
anaconda No module named ‘cv2‘
撤回就看不到了?三步让你微信防撤回。
十周岁生日快乐,Clojure
Tool skill learning (I): pre skills -makfile, make,.Mk
tensorboard多个events文件显示紊乱的解决办法
“卡片笔记法”在思源的具体实践案例
# 工欲善其事必先利其器-C语言拓展--嵌入式C语言(十一)
【DSCTF2022】pwn补题记录
Super simple! It only takes a few steps to customize the weather assistant for TA!!
Robot hand eye calibration ax=xb (eye to hand and eye in hand) and plane nine point calibration
We were tossed all night by a Kong performance bug
请问参数化视图可以根据传入参数的特点得到不同行数的SQL吗?比如这里我想根据传输参数@field中列
基于SSM实现个性化健康饮食推荐系统
【EXPDP导出数据】expdp导出23行记录,且不包含lob字段的表,居然用时48分钟,请大家帮忙看看
German EMG electric actuator eb800-60ii
一款可视化浏览器历史的 Firefox/Chrome 插件