主动模式下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

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

  1. FTP主动模式与FTP被动模式所需的端口

    转载自:http://www.mofang.net/article/272/sort0963/2008/Article_11581.shtml FTP是仅基于TCP的服务,不支持UDP. 与众不同的是 ...

  2. DHCP详细工作过程(转)

    DHCP客户端通过和DHCP服务器的交互通讯以获得IP地址租约.为了从DHCP服务器获得一个IP地址,在标准情况下DHCP客户端和DHCP服务器之间会进行四次通讯.DHCP协议通讯使用端口UDP 67 ...

  3. 个人从源码理解JIT模式下angular编译AppModule的过程

    承接上文.笔者之前将一个angular项目的启动过程分为了两步: 创建平台得到 PlatformRef ,以及执行平台引用提供的方法编译根模块 AppModule .本文就将着眼于创建好的平台,从an ...

  4. opencontrail—VXLAN模式下数据包的传输过程

    在这篇文章中,我们将看到VM生成的数据包如何能够到达另一个VM或外部资源,Neutron使用OpenContrail插件的上下文中的关键概念/组件是什么. 我们将重点介绍OpenContrail,它如 ...

  5. linux下ftp(vsftpd)添加用户及设置权限详细步骤

    1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test2.建用户:在root用户下:useradd test //增加用户test,并制定test用户的主目录为/hom ...

  6. windows下oracle 11g r2 安装过程与卸载详细图解

    Oracle 11g安装 1.解压下载的包,然后进入包内,点击setup.exe开始安装 . 2.出现如下:一般把那个小对勾取消,点击下一步进行, 弹出下图这个后点‘是' 3.下图后,选择创建和配置数 ...

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

    在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令.服务器接收到命令后,会用其本地的FTP数据端口 ...

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

    在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令.服务器接收到命令后,会用其本地的FTP数据端口 ...

  9. FTP 主动模式 与被动模式

    今天在被电信运营商给的没有内网ip被nat后的内网ip访问我的ftp服务器时出现了,连接被关闭的错误,经过多番查询发现问题原因是因为NAT内网ip没有被有效地转换为外网ip,也即是说NAT对ftp协议 ...

随机推荐

  1. Bridge模式——对象结构型模式

    今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描述的类型,拆解开来,使其能沿着各维度 ...

  2. JQuery validate验证 自定义

    http://www.w3cschool.cc/jquery/jquery-plugin-validate.html http://blog.163.com/zhao_jinggui/blog/sta ...

  3. 【Excel】Excel根据单元格背景色求和

    例:用公式计算单元格背景色为浅蓝色的数字之和    步骤一: Office 2003 Insert->Name->Define,Names in workbook输入getColor或ge ...

  4. QWord2vec:word2vec移植版+GUI

    序 Word2Vec原生是不支持Windows的,索性就用Qt移植了一下. 大概做了下面几件事. ①替换LinuxAPI的pthread为QThread. ②取消了posix_memalign(),内 ...

  5. odeforces Beta Round #77 (Div. 2 Only)

    A. Football time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  6. 洛谷 P1379 八数码难题 Label:判重&&bfs

    特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...

  7. [知识点]Cantor展开

    // 此博文为迁移而来,写于2015年3月14日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vtyo.html 1.含 ...

  8. 【BZOJ】3676: [Apio2014]回文串

    http://www.lydsy.com/JudgeOnline/problem.php?id=3676 题意:给一个串求回文串×出现次数的最大值.(|S|<=300000) #include ...

  9. CF 7C. Line(扩展欧几里德)

    题目链接 AC了.经典问题,a*x+b*y+c = 0整数点,有些忘记了扩展欧几里德,复习一下. #include <cstdio> #include <iostream> # ...

  10. Base64编码简介

      基本概念   Base64这个术语最初是在“MIME内容传输编码规范”中提出的.Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚.它实际上是一种“二进制到文本”的编码方法,它能 ...