关于【ftp是什么意思】,ftp是指的什么,今天涌涌小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
内容导航:1、详解ftp协议,力荐2、ftp是指的什么?3、ftp指的是什么?4、FTP是什么1、详解ftp协议,力荐
You know some birds are not meant to be caged, their feathers are just too bright.
1 概述
FTP为File Transfer Protocol的缩写,即文件传输协议,是TCP/IP协议族中的协议之一。FTP是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。RFC 959定义了FTP协议规范。
FTP可谓网络协议中的活化石。其原始规范由Abhay Bhushan编写,并于1971年4月16日作为RFC 114发布。而被人熟知的TCP/IP协议要等到1983年才成为大部分因特网共同遵守的一种网络规则。同大多数Internet服务一样,FTP也是一个客户/服务器系统(C/S系统)。用户通过一个客户端程序连接至在远程计算机上运行的服务器程序。依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通常Windows系统自带“ftp”命令,这是一个命令行的FTP客户端程序,另外常用的FTP客户端程序还有FileZilla、CuteFTP。
FTP实现的目标:
促进文件的共享(计算机程序或数据);鼓励间接或者隐式的使用远程计算机;向用户屏蔽不同主机中各种文件存储系统(File system)的细节;可靠和高效的传输数据。2 实验环境搭建
为了更透彻的理解和掌握FTP,在叙述FTP协议内容的同时,也需要以“实战 ” 的方式抓取FTP客户端和FTP服务器之间交互的网络包,以此和FTP协议相互印证,加深理解。本节主要介绍抓取FTP网络包的环境搭建。实验环境将以Windows系统平台作为FTP客户端,以linux系统虚拟机作为FTP服务器。
FTP实验环境搭建:
在Windows系统安装wireshark抓包工具;在Windows系统安装linux虚拟机(本次实验版本:Ubuntu 16.04);熟悉Windows系统下"ftp"命令行的使用。在微软帮助文档(https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/cc755356(v=ws.10))中已经将"ftp"命令行介绍得比较详细,有需要可以点击查看。为了内容上的连贯性,本节会对常用的"ftp"命令行进行讲解。
常用的"ftp"命令行(可以打开cmd或PowerShell进行验证):
ftp 服务器域名(ip地址),如:ftp ftp.gnu.org,进行FTP服务器登录;ftp>? 或 ftp>help,显示"ftp"命令行说明;ftp>dir,显示FTP服务器目录文件和子目录列表;ftp>cd,切换FTP服务器上的工作目录;ftp>ls,显示FTP服务器上目录文件和子目录的缩写列表;ftp>pwd,显示FTP服务器上的当前目录;ftp>mdir,显示FTP服务器上目录文件和子目录列表,如:mdir Music 1.txt,将服务器目录Music中文件和子目录列表详细信息存入本地文件1.txt中;ftp>binary(或bi),将文件传送类型设置为二进制模式;ftp>ascii,将文件传送类型设置为默认的ASCII;ftp>delete,删除远程计算机上的文件,如:delete 123.c,删除服务器上的123.c文件;ftp>get,将远程服务器文件复制到本地计算机上,如get 123.c,将服务器上的123.c文件,复制到本地;ftp>mget,将远程服务器多个文件复制到本地计算机,如mget 123.c 456.c,将文件123.c和456.c复制到本地计算机上;ftp>put,将本地文件复制到远程计算机上,如:put 789.c,ftp>disconnect,从服务器断开,但保留"ftp"命令行提示(依然是处于"ftp"命令行模式,未退出);ftp>open,与指定的远程FTP服务器连接,可以通过IP地址或计算机名称指定计算机(DNS或主机文件必须可用);ftp>quit或(bye),结束与远程服务器的FTP会话并退出"ftp"命令行模式;ftp>status,显示 FTP 连接和切换的当前状态;ftp>debug,切换调试,当调试打开时,客户端发送到远程服务器的每个命令都将打印。默认情况下,调试是关闭的;ftp>!,从"ftp"命令行子系统退出到cmd或PowerShell的shell。注意"ftp"命令行只是Windows系统自带的FTP客户端程序,"ftp"命令行的使用和将要介绍的FTP文件传输协议无关。
3 FTP详解
FTP作为一个古老的协议,现在仍然被广泛使用,一定有其过人之处。其最大的一个优点就是部署、使用起来非常简单。只要两个设备部署了FTP客户程序和FTP服务程序,知道用户名和密码,就能够实现文件的轻松互传。甚至一些匿名FTP服务器,就算没有用户名和密码也能够访问。如一些软件分发、资料分享,就可能使用到匿名FTP服务器。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:嵌入式物联网学习资料(头条)
3.1 文件传输过程
FTP使用简单并不意味着其实现简单。与常见的应用层协议http只需要一个TCP连接不同,FTP需要两个TCP连接来完成文件的传输。其中一个称为控制连接,一个称为数据连接。
默认情况下,FTP使用20和21这两个端口,其中20用于数据连接(传递数据),21用于控制连接(传递控制信息)。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
如下图所示,描述了使用FTP进行文件传输的过程,用户通过客户端程序(ftp命令行或FileZilla)与ftp服务器进行交互。用户的输入逻辑会被用户协议解释器解析,转换成FTP命令,通过控制连接(一个tcp连接,port口为21)给到服务器协议解释器,服务器协议解释器会回应一个FTP应答。并且根据传输过来的FTP命令类型,服务器协议解释器可能需要去启动服务器数据传输功能,其过程包括服务器主动发起建立一个tcp连接(用port口20),通过该连接服务端和客户端就可以进行数据传输了。在数据传输完成后,服务端会将该数据连接关闭掉,直到下一次需要文件传输时才又开启,所以可以看到数据连接是随时开、随时关。而控制连接在被创建后,其会一直保持下去,随时等待用户命名的输入,直到主动断开。
3.2 报文格式
在FTP协议中,FTP命令和FTP应答,是以ASCII码形式的明文传递。FTP命令的一般报文格式是:命令 选项参数 \r\n,FTP应答的一般报文格式为:状态码 报文选项 \r\n。先来介绍FTP命令。
FTP命令都是3或4个字节的大写ASCII字符组成,其中一些命令带选项参数。从客户端向服务器发送的FTP命令有很多,在rfc959中有定义。本节介绍一些常用的。
命令 说明ABOR 放弃先前的FTP命令和数据传输LIST filelist 列表显示文件或目录PASS password 服务器上的密码PORT n1,n2,n3,n4,n5,n6 客户端IP地址(n1 .n2 .n3 .n4)和端口(n5 × 256 + n6)QUIT 从服务器退出RETR filename 检索(取)一个文件STOR filename 存储(放)一个文件SYST 服务器返回系统类型TYPE type 说明文件类型:A表示ASCII码,I表示二进制类型USER username 服务器上用户名
FTP应答的状态码是ASCII码形式的3位数字,并且跟有报文选项。应答状态码中每一位数字都有不同的含义。应答状态码第1位和第2位的含义如下,第3位给出出错报文的附加含义。
状态码 解释1yz 正面的初步答复。该操作正在启动,但在发送另一个命令之前需要另一个回复。2yz 肯定完成回复,可以发送新命令。3yz 正面的中间答复。命令已被接受,但必须发送另一个命令。4yz 暂时否定完成回复请求的操作没有发生,但错误情况是暂时的,因此可以稍后重新发出命令。5yz 永久否定完成回复。 该命令未被接受,不应重试。x0z 语法错误。x1z 信息。x2z 连接。涉及控制或数据连接的回复。x3z 身份验证和记帐。回复登录或记帐命令。x4z 未指定。x5z 文件系统状态。
一些典型的状态码含义如下:
125数据连接已经打开,数据传输开始200命令OK214帮助消息(针对用户)331用户名OK,需要密码425无法打开数据连接452写入文件时出错500语法错误(无法识别的命令)501语法错误(无效参数)。502 未实现的 MODE 类型。下面来通过抓实际环境中的网络包,看客户端和服务器的FTP命令、FTP应答交互过程。使用前面介绍的windows环境下的"ftp"命令行和FTP服务器进行交互。如下图所示为客户端登录到FTP服务器的抓包过程,客户端ip地址为192.168.2.6,服务端ip地址为192.168.2.2。如图中红框所示,可以看到首先客户端和服务器通过tcp三次握手建立了一条tcp通路,服务端端口号21,客户端端口号是22655,这条通路就是上面所说的控制连接。因为没有进行文件数据传输,所以数据连接尚未建立。
windows环境"ftp"命令行客户端展现的交互过程:
ftp> open 192.168.2.2连接到 192.168.2.2。220 (vsFTPd 3.0.3)---> OPTS UTF8 ON200 Always in UTF8 mode.用户(192.168.2.2:(none)): book---> USER book331 Please specify the password.密码:---> PASS 123456230 Login successful.
客户端登录到FTP服务器的抓包过程
建立好控制连接之后,客户端和服务器就开始了报文交互,如图中的绿框所示,下面文字也描述了其报文交互过程,并且做了注释。
服务端(192.168.2.2): 220 (vsFTPd 3.0.3) //220,表示服务器准备完成,客户端可以发送命令了。 后面跟的是FTP服务器的版本信息。客户端(192.168.2.6):OPTS UTF8 ON //表示服务器需要切换到UTF8字符集进行工作。服务端(192.168.2.2): 200 Always in UTF8 mode. //200,表示命令执行成功,后面的提示信息表示已经工作再UTF8模式下了。客户端(192.168.2.6):USER book //指定用户book登录服务端(192.168.2.2): 331 Please specify the password. //331 表示需要输入密码客户端(192.168.2.6):PASS 123456 //客户端输入密码123456服务端(192.168.2.2): 230 Login successful. //# 230 表示用户登入成功
下图展示了第一个FTP应答报文220 (vsFTPd 3.0.3)\r\n的二进制数据形式,其也印证了FTP报文是以ASCII码明文进行传递的。220 (vsFTPd 3.0.3)\r\n报文的20个字节(包含空格)的ASCII码为32 32 30 20 28 76 73 46 54 50 64 20 33 2e 30 2e 33 29 0d 0a。
第一个FTP应答报文
3.3 数据连接
上一节看到了控制连接的建立和连接建立之后的客户端和服务器之间的报文交互。本节来看一下数据连接。数据连接有如下三个用途:
从客户向服务器发送一个文件。从服务器向客户发送一个文件。从服务器向客户发送文件或目录列表。这里再强调一下控制连接一直保持到客户端—服务器连接的全过程,但数据连接可以根据需要随时开、随时关。根据FTP数据连接的用途可以看到,在进行文件传输或是查询服务器端文件或目录列表时,需要创建数据连接。数据连接的创建过程如下:
数据连接的创建由客户端控制,因为是客户端发出需要数据连接的命令(获取文件、上传文件或列出目录)。客户端通常在客户端主机上选择一个临时端口号来结束数据连接。客户端从该端口发出被动打开。客户端使用PORT命令通过控制连接将此端口号发送到服务器。服务器接收控制连接上的端口号,并向客户端主机上的该端口发出主动打开。数据连接的服务器端始终使用端口20。下面来进行网络抓包看一下实际的数据连接建立过程。通过windows环境下的"ftp"命令行客户端向FTP服务器请求一个文件123.c来触发数据连接的建立。下图为数据连接的网络抓包过程。客户端通过PORT命令将端口信息(192,168,2,6,88,137、端口号:88*256+137=22665)传到服务端;服务端通过自身20端口和客户端22665端口,主动建立TCP连接,此连接就是为数据连接。文件数据123.c就是通过该连接进行传输。文件数据传输完成后,服务端又会主动发起断开该连接,如下图中红框所示的四次挥手。
windows环境"ftp"命令行客户端展现的交互过程:
ftp> get 123.c---> PORT 192,168,2,6,88,137200 PORT command successful. Consider using PASV.---> RETR 123.c150 Opening BINARY mode data connection for 123.c (48 bytes).226 Transfer complete.ftp: 收到 48 字节,用时 0.00秒 16.00千字节/秒。ftp>
数据连接建立过程
3.4 主动模式
思考一下上一节描述的数据连接会有什么问题?其发起数据连接过程为,客户端通过PORT命令将客户端监听的端口号传递给服务端,服务端通过固定的20端口主动去和客户端监听的端口进行TCP连接,此连接就是数据连接。可以看到如果客户端的防火墙阻止了服务器的主动连接请求,那么数据连接就会失败。所以主动模式有一定缺陷。
上面描述的这种连接模式就是主动模式,主动是相对于服务端来说的。下图示意了主动模式过程,控制连接是客户端发起,数据连接是服务端发起。
主动模式
3.5 被动模式
为了解决主动模式所面临的问题,FTP协议也支持被动模式。被动模式的示意图如下图所示:控制连接和数据连接都由客户端主动发起,而且服务端数据连接端口不在是固定端口20,而是被分配了一个临时端口。因为两次连接都是客户端主动发起,所以就不会有防火墙的问题。
被动模式
通过网络数据包来看一下被动模式的交互过程。客户端通过发送PASV,表明客户端明确告知FTP服务器它使用被动模式。服务器收到PASV后,会分配一个临时端口号37499(192,168,2,5,146,123,端口号=146*256+123=34799),并通过报文将该端口号通知到客户端。明确好了两端的端口号,客户端就会主动通过TCP三次握手和服务器建立连接,该连接就是数据连接。在文件传输完毕后,服务器通过TCP四次挥手,断开该连接。
被动模式网络数据包
3.6 匿名服务器
回忆一下上面介绍的客户端向FTP服务器发起连接的过程,第一步基本都需要输入服务器的用户名和密码。但有一些FTP服务器天然就是为了分发软件和共享文件而存在,让每一个人都申请用户名和密码,将非常的不方便。匿名FTP(anonymous FTP)就是为了应对这种场景而出现的。
匿名FTP服务器的实质是:提供服务的机构在它的FTP服务器上建立一个公开账户(一般为anonymous),并赋予该账户访问公共目录的权限。用户想要登录到这些FTP服务器时,无需事先申请用户账户和密码,可以用anonymous作为用户名,用自己的E-mail地址做密码或直接不输入密码,便可登录,获取FTP服务。
如ftp.gnu.org就是一个匿名服务器,用于GNU的软件分发和资料共享。如下是其登录过程,直接用anonymous当作用户名,不需要输入密码。
2、ftp是指的什么?
ftp是指的文件传输协议,是用于在网络上进行文件传输的一套标准协议,它工作在 OSI模型的第七层,TCP模型的第四层,即应用层,使用TCP传输而不是UDP,客户在和服务器建立连接前要经过一个“三次握手”的过程,保证客户与服务器之间的连接是可靠的,而且是面向连接,为数据传输提供可靠保证。FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。
然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
扩展资料:FTP的传输有两种方式:ASCII、二进制。1、ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
2、二进制传输模式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。
如果传输二进制文件,所有的位都是重要的。
3、ftp指的是什么?
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
FTP允许用户以文件操作的方式与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。扩展资料开发任何基于 FTP 的客户端软件都必须遵循 FTP 的工作原理,FTP 的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条 TCP 连接,一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应),这种将命令和数据分开传送的思想大大提高了 FTP 的效率,而其它客户服务器应用程序一般只有一条 TCP 连接。
4、FTP是什么
什么是FTP呢?FTP是TCP/IP协议组中的协议之一,是英文FileTransferProtocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。
简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。
若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。
每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
这就是关于《ftp是什么意思,ftp是指的什么(详解ftp协议,力荐)》的所有内容,希望对您能有所帮助!