主动模式下FTP的详细工作过程(转) 挺详细

主动模式下FTP的详细工作过程

PORT FTP是常用的FTP工作方式,当客户端的连接请求到来时,FTP服务器会利用默认的21端口与客户端建立连接,该连接属于命令通道,利用该通道来下达控 制指令;接下来服务器便会在20端口接受客户端的数据传输连接请求,并建立数据传输通道,开始传输数据,数据传输完毕后,便会关闭该次的数据连接,接着又 会在20端口等待接受新的数据连接。由此可见,基于端口的工作方式,服务器的数据端口始终使用20,建立FTP控制连接则使用标准的21端口。根据需要, 可以在配置文件中重新设置所使用的端口。

本示例客户端IP是192.168.120.168,服务器IP是192.168.120.240,在客户端上通过命令行连接FTP服务器,并输入ls、pwd命令,然后退出(见图一)。通过抓包工具来查看用户从连接FTP服务器到退出FTP服务器经过的所有过程。

图一:示例

PORT FTP的详细工作过程:

1. 因为FTP使用的是TCP协议,所以客户端在通过ftp 192.168.120.240连接服务器时,首先会经历TCP的三次握手(见图二、图三、图四)来建立控制通道。客户端使用任意的端口N(N>1024)来连接FTP服务器默认的21端口。

2. 在TCP三次握手结束后,服务器端正式响应客户端的控制连接请求,控制通道建立(见图五)。

3. 客户端向服务器发送含有ACK的数据段来确认控制连接建立。

4. 客户端向服务器发送用户名(见图六)。

5. 服务器向客户端发送含有ACK的数据段来确认用户名。

6. 服务器向客户端询问密码(见图七)。

7. 客户端向服务器发送含有ACK的数据段来确认会发送密码。

8. 客户端向服务器发送密码,密码为明文(见图八)。

9. 服务器向客户端发送含有ACK的数据段来确认密码收到。

10. 服务器向客户端发送登陆成功的信息(见图九)。

11. 客户端向服务器发送含有ACK的数据段来确认收到登陆成功的信息。

12. 客户端向服务器发送PORT N+1指令,N+1是客户端想要的数据传输端口号(见图十)。port 192,168,120,168,200,100;192,168,120,168是客户端自己的IP地址;200,100部分的第一个阿拉伯数字乘以 256,然后加上第2个阿拉伯数字就得到数据传输端口号,所以客户端指定的数据传输端口号为200*256+100=51300。

13. 服务器向客户端发送含有ACK的数据段来确认收到PORT N+1指令。

14. 服务器响应PORT指令成功,同意客户端使用PORT N+1为数据传输端口(见图十一)。

15. 客户端向服务器发送ls指令(见图十二)。

16. 服务器响应客户端的数据连接。服务器使用标准的数据端口20主动向客户端的N+1端口发起连接。因为FTP是TCP协议,并且FTP的控制连接和数据连接是分开的,所以FTP的每次数据连接都要经过TCP的三次握手来完成(见图十三、图十四、图十五)。

17. 因为ls命令可以显示文件,也可以显示目录,所以在三次握手完成后,服务器有一个响应列出目录的过程(见图十六、图十七)。

18. 服务器确定完成客户端ls指令后,服务器向客户端发送含有FIN和ACK的数据段请求断开本次数据连接(见图十八)。这是第一次断开本次数据连接。

19. 客户端向服务器发送含有ACK的数据段来应答服务器的断接请求(见图十九)。这是第二次断开本次数据连接。这样就完成了服务器到客户端的数据连接的半关闭。

20. 服务器告之客户端ls指令已完成(见图二十)。

21. 客户端向服务器发送含有ACK的数据段来确认收到服务器的信息。

22. 客户端向服务器发送含有FIN和ACK的数据段,请求断开到服务器之间的本次数据连接(见图二十一)。这是第三次断开本次数据连接。

23. 服务器向客户端发送含有ACK的数据段来确认客户端的断接请求(见图二十二)。这样本次数据连接完全断开,即第四次断开本次数据连接。

24. 客户端向服务器发送pwd指令(见图二十三)。

25. 服务器向客户端回应pwd指令的结果(见图二十四)。

26. 客户端向服务器发送含有ACK的数据段来确认收到服务器发送的结果。

27. 客户端向服务器发送quit指令(见图二十五)。

28. 服务器向客户端回应quit指令的结果(见图二十六)。

29. 服务器向客户端发送含有FIN和ACK的数据段,请求断开控制连接(见图二十七)。这是第一次断开控制连接。

30. 客户端向服务器发送含有ACK的数据段来应答服务器的断接请求(见图二十八)。这是第二次断开控制连接。

31. 客户端向服务器发送含有FIN和ACK的数据段,请求断开到服务器之间的控制连接(见图二十九)。这是第三次断开控制连接。

32. 服务器向客户端发送含有ACK的数据段,来确认客户端的断接请求(见图三十)。这样本次FTP控制连接完全断开。

通过查看本次示例(主动FTP)的详细过程,我们可以得到以下几点结果:

1. 服务器的控制连接端口为21,数据传输端口为20。端口可以在配置文件中修改。

2. 客户端的控制连接端口为N(N>1024),数据传输端口在第一次进行数据传输时为N+1,在第二次数据传输时为N+2,依次类推。(这点在本示例中未体现)

3. 数据传输连接建立后,服务器主动用20端口去连接客户端的N+x端口。

4. 在一次FTP连接的过程中,只有一次控制连接,却可以有多次数据传输连接。(多次数据传输连接在本示例中未体现)

5. 不管是控制连接还是数据传输连接,在每次从建立到完成都需要经过3次连接和4次断开的过程。(这符合TCP协议的要求)

6. FTP指令分为控制指令(如pwd、mkdir、rm、cd等)和数据请求指令(如ls、dir等)。

本文档使用的图例:

图二:建立控制连接之TCP第一次握手

图三:建立控制连接之TCP第二次握手

图四:建立控制连接之TCP第三次握手

图五:服务器响应客户端的控制连接请求

图六:客户端发送用户名

图七:服务器向客户端询问密码

图八:客户端发送密码,密码为明文

图九:服务器响应客户端登陆成功

图十:客户端发送PORT N+1指令

图十一:服务器响应PORT N+1指令成功

图十二:客户端向服务器发送ls指令

图十三:服务器响应客户端的ls指令进行TCP第一次握手

图十四:服务器响应客户端的ls指令进行TCP第二次握手

图十五:服务器响应客户端的ls指令进行TCP第三次握手

图十六:服务器响应客户端的ls指令来显示目录

图十七:服务器确认列出目录

图十八:服务器请求断开本次数据连接(TCP四次断开之第一次)

图十九:客户端确认(TCP四次断开之第二次,服务器到客户端的本次数据连接完成半关闭)

图二十:服务器告之客户端ls指令已完成

图二十一:客户端请求断开到服务器的本次数据连接(TCP四次断开之第三次)

图二十二:服务器确认客户端的请求,完全断开本次数据连接(TCP四次断开之第四次)

图二十三:客户端向服务器发送pwd指令

图二十四:服务器向客户端回应pwd指令的结果

图二十五:客户端向服务器发送quit指令

图二十六:服务器向客户端回应已退出

图二十七:FTP控制连接之第一次断开

图二十八:FTP控制连接之第二次断开

图二十九:FTP控制连接之第三次断开

图三十:FTP控制连接之第四次断开

图三十一:本次示例的完整过程

本文档完整的图例,请见附件。

本文出自 “大浪淘沙” 博客,请务必保留此出处http://yuanbin.blog.51cto.com/363003/107672

时间: 2024-10-13 20:52:14

主动模式下FTP的详细工作过程(转) 挺详细的相关文章

ubuntu13.04下ftp的简单搭建过程

本文主要介绍一下ubuntu13.04下ftp的简单搭建过程: 主要实现基本的功能: l 实现匿名用户访问 l 上传资料 l 实现对特定ip或ip段开放服务 l 等等... 下面介绍一下安装过程: Ubuntu自带的FTP服务器是vsftpd. 1.安装vsftpd 对于ubuntu下相对简单只需要一条 sudo apt-get install vsftpd 安装默认在/src下建立一个ftp目录. 应该可以看到一个空白内容的ftp 文件. 默认状态下是可以匿名下载,但不能写入或是上传 2.设置

FTP两种工作模式:主动模式(Active FTP)和被动模式

在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令.服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输.     在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口.然后向服务器发送PASV命令,通知服务器自己处于被动模式.服务器收到命令后,会开放一个大于1024的端口P进行监听,然后

FTP主动模式和被动模式的区别

基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的概念时,数据端口就有可能不是20了. 主动模式FTP: 主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口--21端口.然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1 >= 1024)端口发送命令给F

[转] FTP主动模式和被动模式的区别

转自原文FTP主动模式和被动模式的区别 基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的概念时,数据端口就有可能不是20了. 主动模式FTP: 主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口--21端口.然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1

FTP主动模式和被动模式的区别【转】

转自:http://www.cnblogs.com/xiaohh/p/4789813.html 基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的概念时,数据端口就有可能不是20了. 主动模式FTP: 主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口--21端口.然后客户端在N+1(N

FTP主动模式(Port)与被动模式(PASV)原理解析

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件.相比于HTTP,FTP协议要复杂得多.复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令:另一个是数据链路,用来上传或下载数据.    FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式.    在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行

(转)FTP的PORT(主动模式)和PASV(被动模式)

http://my.oschina.net/binny/blog/17469(转) 以前才用Linux的时候,用Ftp的时候就遇到链接成功,就是查看不到服务器上的数据,之前大致查了下明白了,现在看到一篇比较清楚的文章转载记录下,加深印象:其实简单来讲就是:主动模式的FTP是指服务器主动连接客户端的分配的随机数据端口(1024+),被动模式的FTP是指服务器被动地等待客户端连接自己的随机数据端口(1024+): 1.FTP的PORT(主动模式)和PASV(被动模式) (1) PORT(主动模式)也

[服务]ftp主动模式和被动模式

经常忘记这个东西.于是总结下这东西感受下这个协议. FTP连接方式 控制连接:标准端口为21,用于发送FTP命令信息 数据连接:标准端口为20,用于上传.下载数据 数据连接的建立类型: 主动模式:服务端从20端口主动向客户端发起连接 被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接 FTP传输模式 文本模式:ASCII模式,以文本序列传输数据 二进制模式:Binary模式,以二进制序列传输数据 总结: 一 两个阶段:控制连接  tcp 21(client发起,三次握手过程) ?  

FTP 传输中的主动模式和被动模式

最近做一个项目用到FTP和其它系统进行文件传输,结果在FTP网络连接的问题上花了很多时间,由于太久没搞多FTP,忘记了FTP不单单开放21端口,客户端采用不同连接模式对网络有不同.在此重温一下FTP的主动模式和被动模式的相关知识. 在使用FTP时,如果客户端机器和FTP服务器双方之间的所有端口都是开放的,那连接不存在问题.如果客户端与服务器之间有防火墙,如果没配置好防火策略和采用合适的连接模式,会导致登录成功,但无法List列表的问题.要避免出现这样的问题,首先要了解FTP的工作模式.  1.F