FTP的工作原理
来源:互联网 发布:知微的境界 编辑:程序博客网 时间:2024/06/05 08:12
FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层, TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的“三次握手”的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。
下面,让我们来看看,一个FTP客户在和服务器连接是怎么样的一个过程(以标准的FTP端口号为例)。
首先,FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP的默认端口是21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT模式),是用来建立数据传输通道的,主要有3个作用
1) 从客户向服务器发送一个文件。
2) 从服务器向客户发送一个文件。
3) 从服务器向客户发送文件或目录列表。
其次,FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,这里都是相对于服务器而言的。为了让大家清楚的认识这两种模式,朗月繁星分别举例说明。
PORT模式
当FTP客户以PORT模式连接服务器时,他动态的选择一个端口号(本次试验是6015)连接服务器的21端口,注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过TCP的三次握手后,连接(控制信道)被建立
图2:用netstat命令查看,控制信道被建立在客户机的6015和服务器的20端口
现在用户要列出服务器上的目录结构(使用ls或dir命令),那么首先就要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道(这个命令由控制信道发送给服务器),当服务器接到这一指令时,服务器会使用20端口连接用户在PORT指令中指定的端口号,用以发送目录的列表(如图3)。
当完成这一操作时,FTP客户也许要下载一个文件,那么就会发出get指令,请注意,这时客户会再次发送PORT指令,告诉服务器连接他的哪个“新”端口,你可以先用netstat -na这个命令验证,上一次使用的6044已经处于TIME_WAIT状态(如图4)。
当这个新的数据传输通道建立后(在微软的系统中,客户端通常会使用连续的端口,也就是说这一次客户端会用6045这个端口),就开始了文件传输的工作。
COMMAND:> PORT 127,0,0,1,28,37 200 PORT command successful.COMMAND:> LISTSTATUS:> Transfer complete.其中,
PORT 127,0,0,1,28,37告诉服务器当收到这个PORT指令后,连接FTP客户的28x256+37=7205这个端口
- FTP的工作原理
- 浅析FTP的工作原理
- 浅析FTP的工作原理
- 浅析FTP的工作原理
- 浅析FTP的工作原理
- FTP协议的工作原理
- 浅析FTP的工作原理
- FTP工作原理(转)
- FTP工作原理
- ftp工作原理
- ftp工作原理
- FTP工作原理
- FTP工作原理
- ftp工作原理
- ftp工作原理
- ftp工作原理详解
- 浅析FTP的PORT和PASV模式工作原理
- FTP文件传输协议两种方式的工作原理
- 无法从命令行或调试器启动服务。必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它。
- windows下mysql忘记root密码的解决方法
- OPPO官方回应Find 7屏幕泛黄:原来如此
- Mysql存储过程和函数
- socket中的短连接与长连接
- FTP的工作原理
- 捉虫记录:解决内存泄漏问题
- DLL编写中extern “C”和__stdcall的作用
- hive -e "show tables"提示cannot recognize input near 'show' '<EOF>' &#
- 如何找回回收站已经清空的文件
- linux rhel 安装网卡驱动 连接无线
- VC++6.0 用gSoap客户端访问WebService
- [BASIC-28] Huffuman树
- 《C和指针》第七章 函数