FTP协议需要在客户机和服务器之间建立两个并行的TCP连接:“控制连接”和“数据连接”。根据数据TCP连接建立的发起方的不同可以区分为Passive模式和Port模式
这两种模式的本质区别是:建立“数据连接”的TCP连接时,是由ftp服务器发起,还是由客户端发起。服务器发起的则为PORT(需要客户端在PORT命令中告知目标端口),客户端发起的则为PASSIVE(需要服务器端在PASSIVE的应答中告知目标端口)。
(注:以下的步骤分解是在http://huaidan.org/archives/1602.html这片文章中摘录和编辑的)
Port模式
【建立“控制”的TCP连接】
1、 客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;
2、 服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;
3、客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答;
【发送建立“数据”连接的命令】
4、当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用PORT命令,这个命令包含了一个暂时的数据传输端口(客户端的端口),客户端希望服务器在打开一个数据连接时候使用这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户自己的IP地址,而且FTP也支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接;
【建立“数据”的TCP连接】
5、服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT命令中发送给服务器端的暂时数据传输端口号;
6、 客户端以源端口为暂时端口,目的端口为20发送一个SYN ACK包;
7、 服务器端发送一个ACK包;
【开始利用数据连接发送、接收数据】
8、发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认(注:因为TCP协议是一个面向连接的协议)
【关闭“数据”TCP连接】
9、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认;
【关闭“控制”的TCP连接】
10、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。
Passive模式
下面的列表描述了Passive模式的FTP的步骤,步骤1到3和Port模式FTP相同,步骤9到11同样与Port模式FTP最后三步相同。
【建立“控制”的TCP连接】
1、客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;
2、 服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;
3、客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答;
【发送命令】
4、当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送PASV命令给服务器端表明客户端希望进入Passive模式;
5、服务器端进行应答,应答包括服务器的IP地址和一个暂时的端口(服务器端的端口),这个暂时的端口是客户端在打开数据传输连接时应该使用的端口;
【建立“数据”TCP连接】
6、客户端发送一个SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在PASV应答命令中指定的暂时端口号;
7、 服务器端发送SYN ACK包给客户端,目的端口为客户端自己选择的暂时端口,源端口为PASV应答中指定的暂时端口号;
8、 客户端发送一个ACK包;
【开始发送和接收数据】
9、发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认;
【关闭“数据”TCP连接】
10、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以A
CK确认;
【关闭“控制”的TCP连接】
11、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。
所以从以上分析来看,所谓主动active和被动passive是从ftp服务器的角度来说的。
相关推荐
- 在第二次抓包过程中,通过分析FTP报文确定客户端采用的是PASV(被动)模式还是PORT(主动)模式连接服务器。根据报文中Request字段的值为PASV且Response字段包含“Entering Passive Mode”可以判断出使用的是PASV...
- **工作模式**:FTP有两种主要的工作模式——主动模式(Active Mode)和被动模式(Passive Mode)。这两种模式主要区别在于数据连接的建立方式不同。 #### 数据包分析 ##### “ftp例1.cap”分析 1. **FTP客户端MAC...
FTP协议本身包含两个主要的连接模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式中,客户端选择一个随机的端口并告诉服务器,然后服务器会连接到这个端口发送数据。而在被动模式中,由于防火墙或NAT...
在IT行业中,FTP(File Transfer Protocol)是一种标准的网络协议,用于在互联网上进行文件的上传和下载。本文将详细探讨如何在Solaris 10操作系统中设置FTP服务器进入被动模式。 FTP有两种工作模式:主动模式...
"FTP协议简介" FTP(File Transfer Protocol,文件传输协议)是一种用于...FTP协议是一种简化IP网络上系统之间文件传送的协议,具有可靠的连接、文件传输、两种传输模式和两种工作方式等特点,广泛应用于Internet上。
220 Microsoft FTP Service USER 123000 331 Password required for 123. PASS xxxxxx 230 User 123 logged in. SYST 215 Windows_NT PWD 257 "/" is current directory. TYPE A 200 Type set to A. PORT 192,168,1,...
FTP 协议支持两种模式:Standard 模式(也就是 PORT 方式,主动方式)和 Passive 模式(也就是 PASV,被动方式)。Standard 模式 FTP 的客户端发送 PORT 命令到 FTP 服务器。Passive 模式 FTP 的客户端发送 PASV ...
FTP协议有两种工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。在主动模式下,客户端连接到服务器的21端口(命令端口),以建立控制连接。一旦控制连接建立,服务器打开一个临时端口来等待数据连接的...
FTP协议主要有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。在主动模式下,客户端在连接建立后会随机选择一个端口(通常在1024到5000之间),并告诉服务器这个端口号,然后服务器会通过这个端口...
FTP有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式中,客户端打开一个随机端口(称为数据连接端口)并向服务器发送FTP命令,然后服务器使用FTP控制端口(默认21)响应并连接到客户端的...
FTP(File Transfer Protocol)是互联网上用于在...理解其工作原理和模式,以及如何在Linux环境下编写和使用FTP客户端,对IT专业人士来说是至关重要的技能。通过分析提供的源代码,可以进一步加深对这一过程的理解。
FTP有两种工作模式:主动模式(Port)和被动模式(Passive),这两种模式主要区别在于如何建立数据连接。 2. FTP工作流程: - 客户端连接到服务器的21号端口,开始建立控制连接。 - 客户端发送用户名和密码进行...
FTP有两种工作模式:主动模式(Port)和被动模式(Passive)。主动模式中,客户端打开一个随机端口(大于1023的端口)作为数据连接,并告诉服务器这个端口号。在被动模式下,服务器会开启一个随机端口并告诉客户端,...
FTP 协议分为两种模式:主动模式(Port模式)和被动模式(Passive模式)。在主动模式中,客户端打开一个随机端口(称为数据连接)并向服务器发送这个端口号,然后服务器通过该端口发送数据。而在被动模式下,服务器...
- FTP工作模式主要有两种:主动模式(Port)和被动模式(Passive)。主动模式中,服务器主动连接客户端的随机端口,而被动模式是客户端发起连接到服务器的一个特定端口。 2. FTP客户端功能: - 登录:用户需要...
- FTP有两种工作模式:主动模式(Port)和被动模式(Passive)。主动模式下,客户端指定一个端口来接收数据,被动模式下,服务器打开一个随机端口来发送数据。 2. FTP命令与响应: - `dir`:列出服务器目录内容,...
FTP协议有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式下,客户端打开一个数据连接到服务器的特定端口,而被动模式中,服务器打开一个随机端口等待客户端连接,这样可以解决防火墙和NAT...
FTP通常有两种工作模式:主动模式(Port)和被动模式(Passive)。主动模式中,客户端指定一个端口接收数据,而被动模式则由服务器提供一个端口供客户端连接,以解决防火墙或NAT设备导致的连接问题。 二、C#中的FTP...
FTP协议主要有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式中,客户端打开一个随机端口连接到FTP服务器的21号控制端口,然后服务器从其20号数据端口连接回客户端的指定端口。在被动模式...
FTP(File Transfer Protocol)是一种广泛使用的互联网协议,用于在客户端和服务器之间进行文件传输。FTP上传和下载是FTP服务的基本操作,它们构成了网络文件系统的核心功能。以下是对FTP上传与下载源码相关知识点的...