(完整版)FTP协议详解
ftp协议是什么

FTP协议是什么1. 什么是FTP协议FTP(File Transfer Protocol)是一种用于计算机之间进行文件传输的协议。
它是互联网上最早的文件传输协议之一,通过FTP可以在客户端和服务器之间进行文件的上传、下载和删除等操作。
2. FTP协议的基本原理FTP协议基于客户端-服务器的架构,客户端负责发起请求,服务器负责响应请求并进行相应的操作。
以下是FTP协议的基本原理:•客户端通过建立与服务器的连接来进行文件传输。
•连接建立后,客户端可以向服务器发送命令,例如登录、上传、下载等。
•服务器接收并解析客户端发送的命令,执行相应的操作,并向客户端发送响应。
•文件传输过程中,客户端和服务器之间的数据传输使用数据连接。
•文件传输完成后,客户端可以关闭连接或者继续发送其他命令。
3. FTP协议的工作模式FTP协议有两种工作模式,分别为主动模式和被动模式。
3.1 主动模式在主动模式下,客户端会随机选择一个端口号,并通过该端口与服务器建立数据连接。
数据连接的建立由服务器主动发起,客户端负责接收数据。
主动模式的数据传输流程如下:1.客户端向服务器的FTP端口(默认为21)发起连接请求。
2.连接建立后,客户端通过PORT命令告知服务器数据连接的端口号。
3.服务器向客户端的数据连接端口发送连接请求。
4.连接建立后,数据传输开始。
3.2 被动模式在被动模式下,服务器会随机选择一个端口号,并通过该端口与客户端建立数据连接。
数据连接的建立由客户端主动发起,服务器负责接收数据。
被动模式的数据传输流程如下:1.客户端向服务器的FTP端口(默认为21)发起连接请求。
2.连接建立后,客户端发送PASV命令告知服务器进入被动模式。
3.服务器返回包含数据连接端口号的响应给客户端。
4.客户端通过数据连接端口与服务器建立数据连接。
5.连接建立后,数据传输开始。
4. FTP协议的安全性由于FTP协议是明文传输的,故而在网络传输过程中存在一定的安全风险。
ftp协议详解

FTP协议详解什么是FTP协议FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的一种标准协议。
它提供了一种简单的、可靠的文件传输方式,使得用户可以在不同的计算机之间传输文件。
FTP协议使用两个进程进行通信:一个是客户端进程,即用户所在的计算机上的FTP程序;另一个是服务器进程,即文件所在的计算机上的FTP服务器程序。
FTP的工作原理FTP协议使用客户端-服务器的工作模式。
当用户需要上传或下载文件时,首先要通过FTP客户端与FTP服务器建立连接。
连接建立后,客户端可以发送命令给服务器,服务器接收到命令后进行相应的操作。
FTP协议的工作流程如下:1.用户通过FTP客户端输入服务器的IP地址和端口号进行连接。
2.连接成功后,用户输入用户名和密码进行身份验证。
3.验证成功后,客户端与服务器建立会话。
4.客户端可以通过发送命令给服务器进行文件的上传和下载等操作。
5.客户端和服务器通过数据连接进行文件的传输。
6.文件传输完成后,客户端和服务器断开连接。
FTP的命令FTP协议定义了一系列的命令,用于客户端与服务器之间的通信。
常用的FTP 命令包括:•USER:用户身份验证,用于输入用户名。
•PASS:用户身份验证,用于输入密码。
•LIST:列出服务器上的文件和目录。
•CWD:改变当前工作目录。
•RETR:从服务器下载文件。
•STOR:向服务器上传文件。
•DELE:删除服务器上的文件。
•QUIT:断开与服务器的连接。
FTP的数据连接FTP协议使用两个连接进行数据传输:控制连接和数据连接。
控制连接用于传输命令和服务器的响应信息,而数据连接用于传输文件数据。
控制连接的默认端口号是21,而数据连接的端口号则是随机指定的。
在数据传输之前,客户端先向服务器发出PASV命令,服务器收到该命令后会随机指定一个端口号,并将该端口号发送给客户端。
客户端再通过数据连接的方式连接服务器的这个随机端口。
通信协议之FTP协议ftp协议详解

通信协议之FTP协议ftp协议详解FTP协议详解一、背景介绍FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上进行文件传输的协议。
它是一种基于客户端-服务器模式的协议,通过TCP连接进行数据传输。
FTP协议是互联网上最早的应用之一,被广泛用于文件的上传、下载和管理。
二、协议概述FTP协议定义了客户端和服务器之间进行通信的规则和格式。
它包括两个子协议:控制连接协议和数据连接协议。
1. 控制连接协议控制连接协议用于建立和管理客户端和服务器之间的控制连接。
它使用TCP的默认端口号21进行通信。
在控制连接上,客户端和服务器之间进行命令和回应的交互。
2. 数据连接协议数据连接协议用于在客户端和服务器之间传输文件和目录列表等数据。
它使用TCP的默认端口号20进行通信。
在数据连接上,客户端和服务器之间进行实际的文件传输。
三、协议流程FTP协议的基本流程如下:1. 建立控制连接客户端通过TCP连接到服务器的控制端口21,建立控制连接。
双方进行握手,确认连接建立成功。
2. 用户认证客户端发送用户名和密码给服务器,进行用户认证。
服务器验证用户信息,如果认证通过,则允许客户端进行后续操作。
3. 传输模式设置客户端和服务器之间可以选择不同的传输模式,包括ASCII模式和二进制模式。
ASCII模式适用于文本文件的传输,而二进制模式适用于二进制文件的传输。
4. 目录操作客户端可以发送命令给服务器,进行目录的切换、查看目录列表等操作。
服务器根据命令执行相应的操作,并返回结果给客户端。
5. 文件传输客户端可以发送命令给服务器,进行文件的上传、下载等操作。
服务器根据命令执行相应的操作,并在数据连接上传输文件数据。
6. 控制连接关闭当客户端不再需要和服务器进行通信时,可以发送QUIT命令关闭控制连接。
服务器确认关闭连接,并释放相关资源。
四、协议命令和回应FTP协议定义了一系列命令和回应,用于客户端和服务器之间的交互。
FTP协议完全详解

FTP协议完全详解协议名称:FTP协议完全详解一、引言FTP(文件传输协议)是一种用于在计算机网络上进行文件传输的协议。
该协议定义了客户端和服务器之间的通信规则,使得用户可以通过网络将文件上传到服务器或从服务器下载文件。
本文将对FTP协议的工作原理、通信过程、命令和响应等方面进行详细解析。
二、协议概述FTP协议基于客户端-服务器模型,客户端通过建立控制连接和数据连接与服务器进行通信。
控制连接用于传输命令和响应,数据连接用于传输文件数据。
FTP 协议使用TCP作为传输层协议,默认使用端口号21进行控制连接和端口号20进行数据连接。
三、通信过程1. 建立控制连接客户端通过向服务器发送连接请求(SYN)来建立控制连接。
服务器在收到请求后,发送确认(ACK)给客户端,建立连接。
2. 用户身份验证客户端发送用户名和密码给服务器进行身份验证。
服务器验证成功后,发送成功响应;否则,发送失败响应。
3. 发送命令和接收响应客户端通过控制连接发送命令给服务器,服务器接收命令并返回相应的响应。
常见的FTP命令包括:LIST(列出文件列表)、RETR(下载文件)、STOR(上传文件)等。
4. 建立数据连接在需要传输文件数据时,客户端和服务器会建立数据连接。
客户端发送请求(PORT或PASV命令),服务器根据请求建立数据连接。
5. 传输文件数据当数据连接建立后,客户端和服务器通过数据连接传输文件数据。
客户端发送下载请求或上传请求,服务器响应并传输文件数据。
6. 关闭连接客户端或服务器可以在传输完成后关闭连接。
客户端发送QUIT命令给服务器,服务器发送响应后关闭连接。
四、FTP命令和响应1. 命令- USER:发送用户名给服务器进行身份验证。
- PASS:发送密码给服务器进行身份验证。
- LIST:列出服务器上的文件列表。
- RETR:从服务器下载文件。
- STOR:上传文件到服务器。
- DELE:删除服务器上的文件。
- MKD:创建服务器上的目录。
FTP协议完全详解

FTP协议完全详解FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络上进行文件传输的标准协议。
它基于客户端-服务器模型,通过使用不同的命令和响应来进行通信。
FTP协议广泛应用于互联网上的文件传输,为用户提供了方便、安全和可靠的文件传输服务。
一、协议介绍1.1 协议目的FTP协议的目的是为了实现不同计算机之间的文件传输,包括上传(从客户端发送文件到服务器)和下载(从服务器接收文件到客户端)。
1.2 协议特点- FTP协议使用TCP作为传输层协议,确保数据的可靠传输。
- FTP协议使用明文传输,不提供加密功能,因此在传输敏感信息时需要额外的安全措施。
- FTP协议支持匿名访问,允许用户通过匿名账户登录,但也支持通过用户名和密码进行身份验证。
二、协议架构2.1 FTP客户端FTP客户端是指发起文件传输请求的应用程序或工具。
它通过与FTP服务器进行通信来实现文件的上传和下载。
2.2 FTP服务器FTP服务器是指接收并处理客户端请求的计算机或设备。
它负责存储和管理文件,并响应客户端的文件传输请求。
三、协议流程FTP协议的典型流程如下:1. 客户端连接到服务器- 客户端通过TCP连接到服务器的默认端口21。
- 客户端发送"USER"命令,提供用户名。
- 客户端发送"PASS"命令,提供密码进行身份验证。
2. 客户端与服务器进行命令和响应的交互- 客户端发送各种命令(如"LIST"、"RETR"、"STOR"等)来请求服务器执行相应的操作。
- 服务器根据命令执行相应的操作,并返回相应的响应码和响应消息。
3. 文件传输- 客户端发送"RETR"命令来请求下载文件。
- 服务器返回"150 Opening data connection"响应,表示准备开始传输。
FTP协议详解

1.使用ftp的目标(1)提高文件的共享性(计算机程序或数据)(2)鼓励间接地(通过程序)使用远程计算机(3)保护用户因主机之间的文件存储系统导致的变化(4)为了可靠和高效地传输,虽然用户可以在终端直接地使用它,但是它的主要作用是供程序使用的2.ftp相关的术语3.ftp模型(1)客户端与服务器之间传送数据User PI创建控制连接。
控制连接遵从Telnet协议。
在用户初始化阶段,标准FTP 命令被User PI生成并通过控制连接传到服务器处理。
Server PI将相应的标准FTP应答通过控制连接回传给User PI。
数据传输由数据连接完成。
User DTP 在特定端口监听,由Server DTP 用指定参数初始化连接。
实际处理过程有两种模式:PORT模式和PASV模式PORT模式:a.客户端动态选择一个端口(1024以上)连接服务器的21号端口,经过tcp 的三次握手之后,控制连接被建立b.用户想要列出目录结构,客户端发送port指令告诉服务器连接自己的什么端口来建立一条数据通道c.服务器接到上面的指令时,使用20号端口连接用户在PORT指令中指定的端口号,然后发送目录的列表d.客户端发送下载文件等指令,此时客户端还将再次发送PORT指令,告诉服务器连接它的哪个新端口,新的数据通道建立后,再开始文件传输的工作PASV模式:a. 客户端动态选择一个端口(1024以上)连接服务器的21号端口,经过tcp 的三次握手之后,控制连接被建立b. 用户想要列出文件目录,客户端发送pasv指令,告诉服务器自己要连接服务器的某一个端口c. 若服务器上这个端口可用,服务器返回ACK确认信息,之后数据传输通道被建立并返回用户想要的信息; 若服务器这个端口不可用,服务器返回UNACK信息,客户端会再次发送PASV命令。
这个过程就是所谓的连接建立的协商过程(2)服务器与服务器之间传送数据这种方式的专业术语是FXP。
通信协议之FTP协议ftp协议详解

通信协议之FTP协议ftp协议详解FTP协议详解FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上进行文件传输的标准协议。
它是一个客户端-服务器协议,通过该协议,用户可以将文件从一个计算机传输到另一个计算机。
本文将详细介绍FTP协议的工作原理、协议格式和常用命令。
一、工作原理FTP协议使用客户端-服务器模型进行通信。
客户端是发送文件的一方,而服务器是接收文件的一方。
客户端通过建立与服务器的连接来发送命令和数据,服务器则负责接收并执行这些命令。
FTP协议使用两个独立的连接:控制连接和数据连接。
控制连接负责发送命令和接收伏务器的响应,而数据连接负责传输文件的实际数据。
当客户端与服务器建立连接时,首先建立控制连接。
客户端通过控制连接发送命令,如登录、上传文件、下载文件等。
服务器接收到这些命令后,会执行相应的操作,并通过控制连接返回响应。
当需要传输文件时,客户端会发送一个PORT命令告知服务器要建立数据连接的端口号。
服务器通过该端口号与客户端建立数据连接,并传输文件的数据。
数据连接建立完成后,文件数据通过数据连接进行传输。
二、协议格式FTP协议使用文本格式进行通信,每条命令和响应都以行结束符(CRLF)作为结束标志。
1. 命令格式FTP命令由一个命令码和参数组成,命令码用于指示服务器要执行的操作,参数用于指定操作的具体内容。
命令格式如下:命令码参数1 参数2 ...例如,登录命令的格式为:USER usernamePASS password2. 响应格式服务器对于每条命令都会返回一个响应,响应由一个三位数的状态码和一条描述信息组成。
响应格式如下:状态码描述信息例如,登录成功的响应为:230 User logged in三、常用命令FTP协议定义了一系列命令,用于完成文件传输和管理操作。
下面介绍几个常用的命令:1. USER:用于指定登录用户名。
命令格式:USER username2. PASS:用于指定登录密码。
通信协议之FTP协议ftp协议详解

通信协议之FTP协议ftp协议详解FTP协议详解FTP(File Transfer Protocol)是一种用于在计算机网络上进行文件传输的协议。
它允许用户从一个计算机向另一个计算机传输文件,并且具有一些特定的命令和规则来管理文件的传输。
本文将详细介绍FTP协议的工作原理、命令和应答、数据传输模式以及安全性等方面的内容。
一、工作原理FTP协议使用客户端-服务器模式进行工作。
客户端是发起文件传输请求的一方,而服务器则是接受请求并提供文件传输服务的一方。
客户端通过与服务器建立连接来进行通信,并发送命令来控制文件的传输。
在建立连接之前,客户端需要先与服务器进行握手,以建立控制连接。
握手过程使用TCP协议,客户端通过连接到服务器的默认端口(21)来发起连接请求。
服务器接受连接请求后,会向客户端发送一个欢迎消息,并等待客户端发送命令。
二、命令和应答FTP协议定义了一系列的命令和应答,用于控制文件传输的过程。
以下是一些常用的FTP命令和对应的应答代码:1. USER:用于指定用户名,格式为USER username。
服务器会返回应答代码331,表示需要用户输入密码。
2. PASS:用于指定密码,格式为PASS password。
服务器会返回应答代码230,表示用户已成功登录。
3. CWD:用于改变当前工作目录,格式为CWD directory。
服务器会返回应答代码250,表示目录改变成功。
4. LIST:用于列出当前目录下的文件和子目录,格式为LIST [pathname]。
服务器会返回应答代码150,表示数据连接已建立,然后发送文件列表,最后返回应答代码226,表示传输完成。
5. RETR:用于从服务器下载文件,格式为RETR filename。
服务器会返回应答代码150,表示数据连接已建立,然后发送文件内容,最后返回应答代码226,表示传输完成。
6. STOR:用于向服务器上传文件,格式为STOR filename。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FTP 概述文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。
FTP的目标是提高文件的共享性和可靠高效地传送数据。
在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令。
服务器收到命令后给予响应,并执行命令。
FTP 协议与操作系统无关,任何操作系统上的程序只要符合FTP 协议,就可以相互传输数据。
本文主要基于LINUX 平台,对FTP 客户端的实现原理进行详尽的解释并阐述如何使用C 语言编写一个简单的FTP 客户端。
FTP 协议相比其他协议,如HTTP 协议,FTP 协议要复杂一些。
与一般的C/S 应用不同点在于一般的C/S 应用程序一般只会建立一个Socket 连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。
而FTP协议中将命令与数据分开传送的方法提高了效率。
FTP 使用2 个端口,一个数据端口和一个命令端口(也叫做控制端口)。
这两个端口一般是21 (命令端口)和20 (数据端口)。
控制Socket 用来传送命令,数据Socket 是用于传送数据。
每一个FTP 命令发送之后,FTP 服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。
其中的返回码主要是用于判断命令是否被成功执行了。
命令端口一般来说,客户端有一个Socket 用来连接FTP 服务器的相关端口,它负责FTP 命令的发送和接收返回的响应信息。
一些操作如“登录”、“改变目录”、“删除文件”,依靠这个连接发送命令就可完成。
数据端口对于有数据传输的操作,主要是显示目录列表,上传、下载文件,我们需要依靠另一个Socket来完成。
如果使用被动模式,通常服务器端会返回一个端口号。
客户端需要用另开一个Socket 来连接这个端口,然后我们可根据操作来发送命令,数据会通过新开的一个端口传输。
如果使用主动模式,通常客户端会发送一个端口号给服务器端,并在这个端口监听。
服务器需要连接到客户端开启的这个数据端口,并进行数据的传输。
下面对FTP 的主动模式和被动模式做一个简单的介绍。
主动模式(PORT)主动模式下,客户端随机打开一个大于1024 的端口向服务器的命令端口P,即21 端口,发起连接,同时开放N +1 端口监听,并向服务器发出“port N+1” 命令,由服务器从它自己的数据端口(20) 主动连接到客户端指定的数据端口(N+1)。
FTP 的客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。
对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。
被动模式(PASV)为了解决服务器发起到客户的连接问题,有了另一种FTP 连接方式,即被动方式。
命令连接和数据连接都由客户端发起,这样就解决了从服务器到客户端的数据端口的连接被防火墙过滤的问题。
被动模式下,当开启一个FTP 连接时,客户端打开两个任意的本地端口(N > 1024 和N+1) 。
第一个端口连接服务器的21 端口,提交PASV 命令。
然后,服务器会开启一个任意的端口(P > 1024 ),返回如“227 entering passive mode(127,0,0,1,4,18)”。
它返回了227 开头的信息,在括号中有以逗号隔开的六个数字,前四个指服务器的地址,最后两个,将倒数第二个乘256 再加上最后一个数字,这就是FTP 服务器开放的用来进行数据传输的端口。
如得到227 entering passive mode (h1,h2,h3,h4,p1,p2),那么端口号是p1*256+p2,ip 地址为h1.h2.h3.h4。
这意味着在服务器上有一个端口被开放。
客户端收到命令取得端口号之后, 会通过N+1 号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
主要用到的FTP 命令FTP 每个命令都有3 到4 个字母组成,命令后面跟参数,用空格分开。
每个命令都以"\r\n"结束。
要下载或上传一个文件,首先要登入FTP 服务器,然后发送命令,最后退出。
这个过程中,主要用到的命令有USER、PASS、SIZE、REST、CWD、RETR、PASV、PORT、QUIT。
USER: 指定用户名。
通常是控制连接后第一个发出的命令。
“USER gaoleyi\r\n”:用户名为gaoleyi 登录。
PASS: 指定用户密码。
该命令紧跟USER 命令后。
“PASS gaoleyi\r\n”:密码为gaoleyi。
SIZE: 从服务器上返回指定文件的大小。
“SIZE file.txt\r\n”:如果file.txt 文件存在,则返回该文件的大小。
CWD: 改变工作目录。
如:“CWD dirname\r\n”。
PASV: 让服务器在数据端口监听,进入被动模式。
如:“PASV\r\n”。
PORT: 告诉FTP 服务器客户端监听的端口号,让FTP 服务器采用主动模式连接客户端。
如:“PORT h1,h2,h3,h4,p1,p2”。
RETR: 下载文件。
“RETR file.txt \r\n”:下载文件file.txt。
STOR: 上传文件。
“STOR file.txt\r\n”:上传文件file.txt。
REST: 该命令并不传送文件,而是略过指定点后的数据。
此命令后应该跟其它要求文件传输的FTP 命令。
“REST 100\r\n”:重新指定文件传送的偏移量为100 字节。
QUIT: 关闭与服务器的连接。
FTP 响应码客户端发送FTP 命令后,服务器返回响应码。
响应码用三位数字编码表示:第一个数字给出了命令状态的一般性指示,比如响应成功、失败或不完整。
第二个数字是响应类型的分类,如 2 代表跟连接有关的响应,3 代表用户认证。
第三个数字提供了更加详细的信息。
第一个数字的含义如下:1 表示服务器正确接收信息,还未处理。
2 表示服务器已经正确处理信息。
3 表示服务器正确接收信息,正在处理。
4 表示信息暂时错误。
5 表示信息永久错误。
第二个数字的含义如下:0 表示语法。
1 表示系统状态和信息。
2 表示连接状态。
3 表示与用户认证有关的信息。
4 表示未定义。
5 表示与文件系统有关的信息。
Socket 编程的几个重要步骤Socket 客户端编程主要步骤如下:1. socket() 创建一个Socket2. connect() 与服务器连接3. write() 和read() 进行会话4. close() 关闭SocketSocket 服务器端编程主要步骤如下:1. socket() 创建一个Socket2. bind()3. listen() 监听4. accept() 接收连接的请求5. write() 和read() 进行会话6. close() 关闭Socket实现FTP 客户端上传下载功能下面让我们通过一个例子来对FTP 客户端有一个深入的了解。
本文实现的FTP 客户端有下列功能:1. 客户端和FTP 服务器建立Socket 连接。
2. 向服务器发送USER、PASS 命令登录FTP 服务器。
3. 使用PASV 命令得到服务器监听的端口号,建立数据连接。
4. 使用RETR/STOR 命令下载/上传文件。
5. 在下载完毕后断开数据连接并发送QUIT 命令退出。
本例中使用的FTP 服务器为filezilla。
在整个交互的过程中,控制连接始终处于连接的状态,数据连接在每传输一个文件时先打开,后关闭。
客户端和FTP 服务器建立Socket 连接当客户端与服务器建立连接后,服务器会返回220 的响应码和一些欢迎信息。
图 1. 客户端连接到服务器端清单 1. 客户端连接到FTP 服务器,接收欢迎信息1 2 3 4 5 6 7 8 9101112 SOCKET control_sock;struct hostent *hp;struct sockaddr_in server;memset(&server, 0, sizeof(struct sockaddr_in));/* 初始化socket */control_sock = socket(AF_INET, SOCK_STREAM, 0); hp = gethostbyname(server_name);memcpy(&server.sin_addr, hp->h_addr, hp->h_length); server.sin_family = AF_INET;server.sin_port = htons(port);13141516 /* 连接到服务器端*/connect(control_sock,(struct sockaddr *)&server, sizeof(server)); /* 客户端接收服务器端的一些欢迎信息*/read(control_sock, read_buf, read_len);客户端登录FTP 服务器当客户端发送用户名和密码,服务器验证通过后,会返回230 的响应码。
然后客户端就可以向服务器端发送命令了。
图 2. 客户端登录FTP 服务器清单 2. 客户端发送用户名和密码,登入FTP 服务器1 2 3 4 5 6 /* 命令”USER username\r\n” */sprintf(send_buf,"USER %s\r\n",username);/*客户端发送用户名到服务器端*/write(control_sock, send_buf, strlen(send_buf));/* 客户端接收服务器的响应码和信息,正常为”331 User name okay, need password.” */7 8 910111213 read(control_sock, read_buf, read_len);/* 命令”PASS password\r\n” */sprintf(send_buf,"PASS %s\r\n",password);/* 客户端发送密码到服务器端*/write(control_sock, send_buf, strlen(send_buf));/* 客户端接收服务器的响应码和信息,正常为”230 User logged in, proceed.” */read(control_sock, read_buf, read_len);客户端让FTP 服务器进入被动模式当客户端在下载/上传文件前,要先发送命令让服务器进入被动模式。
服务器会打开数据端口并监听。
并返回响应码227 和数据连接的端口号。
图 3. 客户端让服务器进入被动模式清单 3. 让服务器进入被动模式,在数据端口监听1 2 3 /* 命令”PASV\r\n” */sprintf(send_buf,"PASV\r\n");/* 客户端告诉服务器用被动模式*/4 5 6 7 write(control_sock, send_buf, strlen(send_buf));/*客户端接收服务器的响应码和新开的端口号,* 正常为 ”227 Entering passive mode (<h1,h2,h3,h4,p1,p2>)” */read(control_sock, read_buf, read_len); 客户端通过被动模式下载文件当客户端发送命令下载文件。