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

Posted on

被动模式下FTP的详细工作过程 - 大浪淘沙 - 51CTO技术博客

分享到

百度分享

51CTO首页51CTO博客我的博客 搜索 每日博报

社区:学院论坛博客下载更多

登录注册

[

大浪淘沙

](http://yuanbin.blog.51cto.com)

http://yuanbin.blog.51cto.com 【复制】 【订阅】

原创:29翻译:0转载:8

博 客|图库|写博文|帮 助

yuanbin0710 的BLOG

写留言邀请进圈子发消息 加友情链接进家园 加好友 2012年度IT博客大赛 十大杰出IT博客诞生

博客统计信息

51CTO推荐博客 用户名:yuanbin0710 文章数:37 评论数:166 访问量:279930 无忧币:20 博客积分:1338 博客等级:4 注册日期:2008-04-17

热门专题

更多>>

RHEL6从零基础到熟练使用 阅读量:8542

VMware5.5从零开始学起 阅读量:3326 Hyper-V 3.0功能部署 阅读量:2014

Windows Server入门教程 阅读量:4726

热门文章

我的技术圈(2)

更多>>

nj_ka..

huan108

doget

gaoti..

lonrn

wei13..

deeps..

champ..

flyer..

sht19..

浩临天下

登徒浪子

最新评论

更多>>

友情链接

·【征文】聊IT运维标准化与安全,奖50元京东购物卡·iOS企业级开发初级课程-UIView与控件(共20集 )

博主的更多文章>>

被动模式下FTP的详细工作过程 2008-10-25 20:03:53

标签:FTP 休闲 被动模式 职场 工作过程 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yuanbin.blog.51cto.com/363003/108009

文中有不对或者有不清楚的地方,请大家告诉我,谢谢!


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

PASV FTP在工作的第一步,与PORT FTP一样,会首先使用21端口建立控制连接;但在第二步,由FTP客户端主动发起建立数据传输连接请求,服务器的数据传输端口为随机端口,因此,每次建立的数据传输连接通道,服务器所使用的端口都不相同。

本示例客户端IP是192.168.120.168,服务器IP是192.168.120.240,因为客户端的MS-DOS不支持PASV模式,所以使用FlashFXP软件来连接服务器。通过抓包工具来查看用户从连接FTP服务器到退出FTP服务器经过的所有过程。 使用FlashFXP所做的操作:1.输入FTP服务器的IP,要登入的用户名和密码。2.进入用户家目录,查看.bashrc和.bash_profile两个文件。3.退出FTP。

PASV FTP**的详细工作过程:**

1. 因为FTP使用的是TCP协议,所以客户端FlashFXP在连接服务器192.168.120.240时,首先会经历TCP的三次握手来建立控制通道。客户端使用任意的端口N(>1024)来连接FTP服务器默认的21端口。这和PORT模式一样。 2. 在TCP三次握手结束后,服务器端正式响应客户端的控制连接请求,控制通道建立。

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

5. 服务器向客户端询问密码。 6. 客户端向服务器发送含有ACK的数据段来确认并发送密码,密码为明文。

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

9. 客户端向服务器发送含有ACK的数据段来确认并发送查询系统类型的指令(见图一)。 10. 服务器向客户端发送含有ACK的数据段来确认收到指令。

11. 服务器向客户端回应系统的类型为UNIX(见图二)。 12. 客户端向服务器发送列出服务器的所有扩展命令和扩展功能的指令(见图三)。

13. 服务器响应客户端的FEAT请求(见图四)。 14. 服务器响应客户端有EPSV(扩展PASV,支持非IPV4)的扩展功能(见图五)。

15. 客户端向服务器发送含有ACK的数据段来确认收到信息。 16. 服务器响应客户端自己的其他特性(见图六)。MDTM:保留下载文件的日期/时间;REST STREAM:重设文件传输方式为stream形式。

17. 客户端确认收到服务器的信息。 18. 服务器响应客户端进入到用户的家目录(见图七)。

19. 客户端确认收到服务器的信息。 20. 客户端向服务器发送文件传输使用何种模式(Binary、ASCII)的指令(见图八)。

21. 服务器回应客户端使用Binary模式(见图九)。 22. 客户端向服务器询问.bashrc文件的大小(见图十)。

23. 服务器回应客户端.bashrc文件的大小为124字节(见图十一)。 24. 客户端向服务器发出PASV的指令(用来进行数据传输)(见图十二)。

25. 服务器回应客户端使用PASV模式,并且商量数据传输端口用232x256+151=59543(见图十三)。 26. 客户端主动使用N+1端口来连接服务器的59543端口,并且向服务器发送含有SYN的数据段来开始进行数据传输连接的第1次握手(见图十四)。

27. 服务器向客户端发送含有SYN和ACK的数据段来进行第2次握手(见图十五)。 28. 客户端向服务器发送含有ACK的数据段来进行第3次握手(见图十六)。

29. 3次握手过程完成,客户端向服务器发送查看.bashrc文件的指令(见图十七)。 30. 服务器回应客户端使用Binary数据传输模式连接.bashrc文件(见图十八)。

31. 服务器开始进行数据传输。 32. 服务器确定数据传输完毕,然后向客户端发送含有FIN和ACK的数据段来请求断开本次数据连接,第1次断开(见图十九)。

33. 客户端向服务器发送含有ACK的数据段答应服务器的断接请求,第2次断开(见图二十)。 34. 服务器响应客户端文件发送完成的信息(见图二十一)。

35. 客户端向服务器发送含有ACK的数据段来确认收到信息。 36. 客户端向服务器发送含有FIN和ACK的数据段来请求断开客户端到服务器之间的数据连接,第3次断开(见图二十二)。

37. 服务器向客户端发送含有ACK的数据段确认断开连接,第4次断开(见图二十三) 38. 接下来是查看.bash_profile文件的过程。其过程和查看.bashrc文件的过程一样(在此不详述了),只是服务器和客户端的数据传输端口变了。服务器的数据传输端口是随机的;客户端的数据传输端口是N+2。

39. 客户端在查看完.bash_profile文件并彻底完成该次数据连接的4次断开后,向服务器发送退出的指令(见图二十四)。 40. 服务器响应客户端的退出请求(见图二十五)。

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

43. 客户端向服务器发送含有FIN和ACK的数据段,请求断开到服务器之间的控制连接(见图二十八)。这是第三次断开控制连接。 44. 服务器向客户端发送含有ACK的数据段,来确认客户端的断接请求(见图二十九)。这样本次FTP控制连接完全断开。

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

1. 服务器的控制连接端口为21,数据传输端口随机(>1024)并且每次的数据传输端口都不一样。 2. 客户端的控制连接端口为N(>1024),数据传输端口在第一次进行数据传输时为N+1,在第二次数据传输时为N+2,依次类推。

3. 服务器主动告诉客户端自己的数据传输端口。 4. 客户端主动用数据传输端口N+x去连接服务器的随机数据传输端口。

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

本文档使用的图例:

11 图一:客户端发送查询系统类型的指令

13

图二:服务器响应客户端系统类型为UNIX

14 图三:客户端请求服务器列出它的所有扩展命令和扩展功能

15

图四:服务器响应客户端的FEAT请求

16 图五:服务器响应客户端有EPSV(扩展PASV,支持非IPV4)的扩展功能

18

图六:服务器响应客户端自己支持的其他特性

20 图七:服务器响应客户端进入到用户家目录

22

图八:客户端向服务器询问文件传输的模式

23 图九:服务器响应客户端使用Binary模式

24

图十:客户端向服务器询问.bashrc文件的大小

25 图十一:服务器回应客户端.bashrc文件的大小为124字节

26

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

27 图十三:服务器响应客户端使用PASV模式,并且商量数据传输端口用59543

28

图十四:第一次数据传输连接之第一次握手

29 图十五:第一次数据传输连接之第二次握手

30

图十六:第一次数据传输连接之第三次握手

31 图十七:客户端向服务器发送查看.bashrc文件的指令

32

图十八:服务器响应客户端使用Binary数据传输模式来连接.bashrc文件

34 图十九:服务器发送FIN和ACK请求断开本次数据连接(第1次断开)

35

图二十:客户端发送ACK答应服务器的请求(第2次断开)

36 图二十一:服务器响应客户端文件发送完毕的信息

38

图二十二:客户端向服务器发送含有FIN和ACK的数据段请求断开数据连接(第3次断开)

39 图二十三:服务器向客户端发送含有ACK的数据段确认断开连接(第4次断开)

56

图二十四:客户端向服务器发出退出的指令

57 图二十五:服务器响应客户端的退出请求

58

图二十六:服务器向客户端发送FIN和ACK请求断开控制连接(第1次断开)

59 图二十七:客户端向服务器发送ACK答应服务器请求(第2次断开)

60

图二十八:客户端向服务器发送FIN和ACK请求断开控制连接(第3次断开)

61 图二十九:服务器向客户端发送ACK答应断开控制连接(第4次断开)

62

图三十:本次示例全部过程

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

本文出自 “大浪淘沙” 博客,请务必保留此出处http://yuanbin.blog.51cto.com/363003/108009 分享至 ** 更多 0 一键收藏,随时查看,分享好友!

cccc0912 1人 了这篇文章 附件下载: FTP被动模式详细工作过程(图例)

类别:Linux Server技术圈(0)┆阅读(2046)┆评论(2) ┆ 推送到技术圈返回首页 上一篇 主动模式下FTP的详细工作过程 下一篇 FTP总结

相关文章

文章评论

[1楼] [匿名]yangming1052 回复

2008-10-27 11:17:13 不错 学习了。。

[2楼] 小芳1213 回复

2010-09-21 08:25:03 很不错噢。

发表评论

周刊:IT行业盲目涨工资比房产泡沫更危险? 昵 称: 登录 快速注册 验证码:

点击图片可刷新验证码请点击后输入验证码博客过2级,无需填写验证码 内 容:

同时赞一个 返回顶部

Copyright By 51CTO.COM 版权所有

附件下载close

请输入验证码: 确认

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途