主动模式下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服务器通过的全部过程。
 
38
图一:示例
 
PORT FTP的详细工做过程:
1. 由于FTP使用的是TCP协议,因此客户端在经过ftp 192.168.120.240链接服务器时,首先会经历TCP的三次握手(见图2、图3、图四)来创建控制通道。客户端使用任意的端口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的三次握手来完成(见图十3、图十4、图十五)。
17. 由于ls命令能够显示文件,也能够显示目录,因此在三次握手完成后,服务器有一个响应列出目录的过程(见图十6、图十七)。
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等)。
 
本文档使用的图例:
1
图二:创建控制链接之TCP第一次握手
 
2
图三:创建控制链接之TCP第二次握手
 
3
图四:创建控制链接之TCP第三次握手
 
4
图五:服务器响应客户端的控制链接请求
 
6
图六:客户端发送用户名
 
8
图七:服务器向客户端询问密码
 
10
图八:客户端发送密码,密码为明文
 
12
图九:服务器响应客户端登录成功
 
14
图十:客户端发送PORT N+1指令
 
16
图十一:服务器响应PORT N+1指令成功
 
17
图十二:客户端向服务器发送ls指令
 
18
图十三:服务器响应客户端的ls指令进行TCP第一次握手
 
19
图十四:服务器响应客户端的ls指令进行TCP第二次握手
 
20
图十五:服务器响应客户端的ls指令进行TCP第三次握手
 
21
图十六:服务器响应客户端的ls指令来显示目录
 
22
图十七:服务器确认列出目录
 
23
图十八:服务器请求断开本次数据链接(TCP四次断开之第一次)
 
24
图十九:客户端确认(TCP四次断开之第二次,服务器到客户端的本次数据链接完成半关闭)
 
25
图二十:服务器告之客户端ls指令已完成
 
27
图二十一:客户端请求断开到服务器的本次数据链接(TCP四次断开之第三次)
 
28
图二十二:服务器确认客户端的请求,彻底断开本次数据链接(TCP四次断开之第四次)
 
29
图二十三:客户端向服务器发送pwd指令
 
30
图二十四:服务器向客户端回应pwd指令的结果
 
32
图二十五:客户端向服务器发送quit指令
 
33
图二十六:服务器向客户端回应已退出
 
34
图二十七:FTP控制链接之第一次断开
 
35
图二十八:FTP控制链接之第二次断开
 
36
图二十九:FTP控制链接之第三次断开
 
37 
图三十:FTP控制链接之第四次断开
 
39
图三十一:本次示例的完整过程
 
本文档完整的图例,请见附件。
相关文章
相关标签/搜索