作者:门前西瓜飘乐 | 来源:互联网 | 2023-07-17 01:35
FTP简介:用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器执行用户所发出的命令,并将执行的结果返回到客
FTP简介:
用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
FTP协议:
FTP协议是基于TCP协议之上的应用层协议,支持两种模式:Standard(PORT方式,主动方式),Passsive(PASV,被动方式)
Port 模式:
FTP 客户端首先和服务器的TCP 21 端口建立连接,用来发送命令,客户端需要接受数据的时候在这个通道上发生PORT命令,PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP sever必须和客户端建立一个新的连接用来传送数据。
具体步骤详情如下(笔者所用FTP服务器地址:10.0.1.66,客户端地址:10.0.13.222):
1.客户端主动发起TCP连接,连接服务器的21端口,建立用于传输命令的通道
2.客户端通过第一步建立的命令传输通道发送FTP数据包(含Port信息)
3. 服务器通过解析客户端发来的数据包计算所要连接客户端端口,用本地的20端口主动与计算出的端口建立数据通道的TCP连接
抓包可以看到, FTP客户端与FTP服务端建立三次连接,然后登陆成功后FTP客户端发送“PORT 10,0,13.222/39/136"
接着可以看到服务器主动去发起TCP连接,该连接用于FTP数据传输的通道,协议包名为FTP-DATA。可以发现服务器用20端口去连接客户端的10120端口,10120其实就是客户端发送"PORT 10,0,13,222,39,136"中根据后俩个数值得到的。
连接端口(10120) = 256 * 倒数第二位(39)+ 倒数第一位(136)
Passive模式:
建立控制通道和Standard模式类似,但建立连接后发送Pasv命令,服务器收到Pasv命令,
打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
具体步骤详情如下(笔者所用FTP服务器地址:10.0.13.222,客户端地址:10.0.13.111):
- 客户端主动发起TCP连接,连接服务器的21端口,建立用于传输命令的通道。
- 服务器通过第一步建立的命令传输通道发送FTP数据包(含PASS信息)。
- 客户端通过解析服务器发来的数据包计算所要连接服务器端口,主动去与计算出的端口建立数据通道的TCP连接,对于服务器来说此次连接是被连接。
主动和被动模式计算端口的方法都是相同的。