FTP协议总结

说明:本文仅供学习交流,转载请标明出处,欢迎转载!

FTP协议文件传输协议)建立在TCP协议的基础之上,用来从一个主机把文件复制到另外一个主机。在FTP客户机与服务器之间,采用来了两条TCP连接,这两条连接分别是控制连接数据连接。在控制连接过程中,FTP服务器使用的端口号为21,在数据连接过程中,FTP服务使用的端口号为20,而客户机在整个过程中使用的端口号都是临时端口号,这两个临时端口号可以相同,也可以不同,当然在绝大多数情况下,这两个临时端口号都是不同的。在整个从连接的发起到数据传输的整个过程中,控制连接一直都打开着而数据连接则在数据开始传送时打开,数据传送完毕后关闭

   控制连接

控制连接的打开与关闭过程如下:

1.服务器在熟知端口21发出被动打开命令,等待客户;

2.客户使用临时端口发出主动打开;

3.当客户不再使用该控制连接时,主动关闭该控制连接。

所以整个控制连接过程中,客户始终是控制连接的发起者和终止者

要实现以上控制连接上的通信,客户需要向FTP服务器发送命令,而FTP服务器向客户发送对这些命令的响应来共同完成。在发送命令的过程中,由于客户机与FTP服务器的系统可能不同,为了解决这一可能存在的问题,客户机在向服务器发送命令的过程中,使用NVT ASCII字符发送(相当于一个编码的过程),而在服务器的接收程序则将NVT ASCII字符转换为服务器主机系统所能识别的格式(相当于一个解码的过程)。在以上通信过程中,每一条命令或响应都是一个短行,每一行的行结束标志为CR(回车)+LF(换行),即\r\n。现在我们已经知道命令是从客户向服务器发送的,而响应则是从服务器向客户机发送。下面我们介绍下命令的种类和响应的种类:

命令的种类。总体而言,客户向服务器发送的命令包括:登录命令、文件管理命令、数据类型命令、数据结构命令、端口选择命令、数据读写命令等。这些命令可以告诉由客户机告诉FTP服务器:

(1)登录命令。登录的用户名和密码。

(2)文件管理命令。如何管理远程计算机的文件系统,如显示远程目录和文件,重命名远程目录和文件以及新建和删除目录或文件,这个跟linux系统中的文件相关的命令相似,如对应linux系统中cd,rm,rmdir, touch,mkdir, pwd等。

(3)数据类型命令。让客户自定义文件传送的文件类型(如ASCII码文件类型,EBCDIC文件类型、二进制文件类型)、格式控制(仅对ASCII格式和EBCDIC有效,包括非打印、远程登录格式控制)、传输方式(字节流方式、块方式、压缩方式)。

(4)数据结构命令。告诉服务器应该采用的是那种数据结构:字节流文件、记录式文件、页式文件。

(4)端口选择命令。客户通过该命令,告诉FTP服务器,你下次传送数据给我的时候,应该把数据发送到我的哪个端口上。

(5)文件读写命令。告诉服务器现在是读文件还是写文件。

响应。客户发送的每一个命令至少对于一个响应,FTP服务器发出的响应由两个部分主持:数字(3位)+说明文本。其中说明文本用于解释数字的含义(这样,客户端就不用实际这些数字的含义了,因为有后面的文本帮忙嘛!)。

 数据连接

数据连接主要有三个目的:

(1)客户向服务器发送一个文件。(叫作写文件或存储文件

(2)服务器向客户发送一个文件。(叫作读文件

(3)服务器向客户发送文件或目录列表。(列出文件名

  数据连接的打开与关闭一般过程如下:

1.客户在控制连接的过程中,通过发送port命令,将客户的IP地址和将在数据连接阶段使用的客户端的临时端口号发送给服务器的控制端口号21后,客户端的数据连接临时端口号处于被动打开的状态。

2.服务器通过数据连接端口号20,利用客户端给出的临时端口号向客户端主动打开命令,于是便打开了此数据连接,与客户端进行数据交换。

3.当服务器不再与客户机进行数据交换后,服务器便主动关闭同客户端的数据连接。

从以上可以看出,在整个数据连接的过程中,服务器端是数据连接的发起者和终止者,毕竟只有他自己才知道还有没有数据要发送给客户端嘛

通常情况下,上面的控制连接和数据连接如下图所示:

特殊情况1:客户为并没有用port命令将其数据连接的端口号发送给FTP服务器端,此时如果想要实现客户与服务器之间的数据连接,由于该端口已经被客户用于控制连接,要是再使用该端口,客户必须确定SO_REUSEADDR选项,如下图所示:

特殊情况2:服务器对数据连接做主动关闭后处于2MSL等待状态,若此时客户在之前的控制连接上发送另外一个命令数据请求,并分配一个新的客户端的临时端口号做被动打开,由于此时服务器正好处于2MSL等待状态,端口号20还不能真正使用,此时,服务器必须确定SO_REUSEADDR选项,如下图所示:

    匿名FTP

通常情况下,要使用FTP,用户就需要在远程服务器上有账号和密码,但是有些网站有很多可供公用的文件,如果要访问这些文件,用户就不需要有账号和密码。匿名FTP的账号为anonymous,密码可以是设置为自己的邮箱地址或者guest之类的。

总结

    1.FTP协议对应的运输层协议为TCP。

      2.FTP协议的数据连接和控制连接是分开的,而Telenet协议的数据连接和控制连接公用一条连接。

      3.控制连接主动的发起者和终止者都是FTP客户端,而数据连接的主动发起者和终止这都是FTP服务器端。

      4.数据连接和控制连接对应的IP数据报中的Tos(服务类型)字段不一样。控制连接为ox10,表示采用“最小时延”,而数据连接为ox08,表示采用“最大吞吐量”。

参考资料

[1]《TCP/IP详解 卷1:协议》

[2]《TCP/IP 协议族 第4版》

FTP协议总结

时间: 2024-10-19 17:12:57

FTP协议总结的相关文章

FTP协议

FTP协议 FTP即文件传输协议是应用层提供交互式会话系统,基于TCP连接的,FTP客户端和服务器之间是可靠的.面向连接的.为数据提供可靠保证,标准连接端口端口是21,数据传输端口是20. FTP主要作用:让用户连接上一个远程计算机(这些计算机运行着FTP服务器程序),来查看远程计算机有什么文件,将远程计算机的文件拷贝到本地计算机上(下载-get),或将本地计算机文件送到远程计算机上(上传-put). FTP的协议的特点: 支持C/S模式,一个FTP服务器可以同时给多个客户端传送数据. 是一个应

理解FTP协议

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5186117.html FTP协议用于在本地文件系统与远程文件系统之间传送文件. FTP使用两个并行的TCP连接: 控制连接:控制连接用于在客户和服务器之间发送控制信息.如用户名和口令.改变远程目录的命令或上传和下载文件的命令. 数据连接:数据连接用于传送文件. TCP服务器在21端口上监听控制连接,如果有客户要

python之模块ftplib(FTP协议的客户端)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块ftplib(FTP协议的客户端) #需求:快速进行ftp上传 ,下载,查询文件 from ftplib import FTP ftp = FTP() #设置变量 timeout = 30 port = 21 ftp.connect('192.168.1.188',port,timeout) # 连接FTP服务器 ftp.login('UserName','888888') # 登录 p

linux架构学习第二十八天之FTP协议以及vsftpd的使用

内容: 1.ftp协议 2.vsftpd的搭建及配置 一.FTP协议     1.FTP协议: FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".工作在第七层,而且是基于TCP协议传输数据. FTP工作原理与其它的应用协议有些不同.它是用两个端口进行通信的.一个端口用于命令交互.这个端口在用户连接之后一直保持:而另一个端口只是在数据传时打开(比如:上传文件,下载文件,获取服务端文件列表),在数据传输时有两种不同的模式,一是用户开

ftp协议详解

客户端与服务器之间,需要多条连接才能完成应用的协议,属于复杂协议.如FTP,PPTP,H.323和SIP均输入复杂协议. 这里主要介绍ftp协议的工作原理.首先,ftp通信协议有两种工作模式,被动模式和主动模式. 主动模式 以上图为例,假设客户端IP为192.168.2.10,服务器端IP为192.168.2.11,首先客户端使用端口1966连接服务器的21端口,接着客户端会发送一个含有PORT 192,168,2,10,19,137字符的数据包给服务器端. 服务器端接收到这个数据包之后,从PO

马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用

1.ftp协议及vsftpd的基本应用         文件共享服务:                 工作在应用层:ftp(file transfer protocol)                          应用层协议:tcp,                  工作在内核:nfs                 跨平台:samba           ftp工作在221号端口,传输数据:                  命令连接:文件管理类命令,始终在线的连接       

FTP协议的44种命令

FTP协议的44种命令:1) ? 说明:显示ftp命令的说明.后面可以加参数,是加需要解释的命令名,不加则显示包含所有命令列表. 2) append 说明:使用当前文件类型设置,将本地文件附加到远程计算机中.大概格式是 append local-file [remote-file] 其中local-file是说指定要添加的本地文件. remote-file是说指定要将local-file附加到远程计算机文件,要是省了这个,则是使用本地文件名做远程文件名. 3)ascii 说明:默认情况下,将文件

基于FTP协议的文件传输工具(SOCKET、FTP方面、MFC方面)

一.本课程是怎么样的一门课程(全面介绍) 1.简介:FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息.2.作用:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算

ftp协议基础

文件共享服务 ftp:应用层,可以跨平台,但对数据的编辑难以实现: nfs(Sun):内核,跨平台困难: samba:跨平台,在Linux或Unix实现CIFS(SMB)协议--即Unix通用文件系统协议: 现有的三类存储模型 DNS:直接附加存储,例如机箱内的硬盘: NAS:网络附加存储,通过网络文件服务器提供文件级别的共享存储,工作于应用空间,nfs和samba的CIFS就是NAS的实现: SAN:网络附加存储,通过网络文件服务器提供块级别的共享存储,工作于内核空间: ftp:Flie Tr