相信有很多第一次接触FTP协议的同学会有一种感觉:扎眼一看FTP是一个很简单的协议,但是细究的话会发现ftp协议也不是很简单。

  那么今天我们就来聊一聊这个让很多初学网络的学员郁闷的FTP协议。首先我们先了解下FTP协议的概念。

  FTP(File Transfer Protocol,文件传输协议),其在互联网上进行文件传输的标准协议,FTP协议使用的TCP协议作为传输协议,从而保证通过FTP协议传输的数据是可靠的。简单理解就是我们使用FTP协议可以在网络上对文件进行上传和下载。

  FTP分为控制连接和数据连接,其在数据连接上有两种不同的数据传输方式:主动方式和被动方式。

  而今天我们主要谈谈FTP的主动模式,FTP主动传输模式也称为PORT方式,其也是FTP协议的默认传输方式。众所周知,通过FTP协议进行数据的传输前,需要建立两个连接:一个是控制连接;另外一个是数据连接。其中FTP主动传输方式在这个两个连接的特点如下:

        1)FTP client主动发起建立控制连接

        2)FTP server主动发起建立数据连接

   那么接下来我们通过实验的方式来详细介绍这两种连接的具体内容:

        1.建立控制连接

                

 

 

         

 

 

                         图:控制连接建立成功

   如上图所示:FTP主动模式的控制连接是由FTP client主动发起的,FTP client发起连接的端口号是由系统随机生成的(50253);而FTP server的端口为知名端口号21(该端口号是FTP用于建立控制连接的端口号);经过FTP client和FTP server之间TCP三次握手后此时FTP client和FTP server之间的控制连接就建立成功了。

       2.主动连接参数传递

  当FTP client和FTP server之间的控制连接建立成功后,接下来是要建立数据连接,因为只有数据连接建立成功后,它们之间才能上传下载文件信息,但是在建立数据连接之前,FTP client必须向FTP server端传递一些参数信息用于确定建立数据连接时FTP client所使用的临时端口号。

        

 

 

        

 

 

                          图:PORT参数

  如上图所示:FTP client主动通过已经建立好的控制连接向FTP server发送PROT命令,此时FTP client的端口信息仍然是系统随机生成的(49323),FTP server的接口仍然是知名端口号21,而传递的PORT命令参数内容为(12,1,1,2,197,118)。其中12.1.1.2表示的是FTP client,而通过公式197*256+118=50550,这个通过公式算出来的端口号50550,就是用于后面建立数据连接时,FTP client所使用的端口号。

        3.建立数据连接

        

        

 

 

                       图:数据连接建立成功

   如上图所示:FTP主动模式的数据连接是由FTP server主动发起的,此时FTPserver的端口号为知名端口号20(该端口号是用于FTP数据连接的),而FTP client的端口号就是通过PORT参数计算出来的端口号(50550),经过FTP client和FTP server之间TCP的三次握手,此时FTP的数据连接就建立成功了。

  当数据连接建立成功后,此时FTP server和FTP client之间就可以上传下载文件了。

  测试:

  此时在FTP server建立fuquit的文件,而在FTP client建立china的文件.

        

 

 

        

 

 

  此时我们让FTP client下载FTP server的funquit,而让FTP client上传china文件给FTP server

        

 

 

        

 


 

 

 

 

                    


©著作权归作者所有:来自51CTO博客作者jinzhenwells的原创作品,如需转载,请与作者联系,否则将追究法律责任

更多相关文章

  1. 2、AP上线的那些事儿(1)capwap建立过程、设备初始化以及二层上线
  2. PDO连接数据库实例
  3. TCP/IP之TCP报文简介
  4. Microsoft Ignite 2021:Azure Sentinel 新特性
  5. 内存卡连接时显示文件夹变0字节请问怎么才能修复
  6. U盘连接时显示位置不可用请问如何才能修复
  7. tp5中在js函数中给url传参数并进行连接
  8. H5建立链接的7种方式
  9. Android TCP Socket通信客户端/服务器端Demo(附APP源码)

随机推荐

  1. Android软件开发常用系统控件(一) TextView
  2. 第十四周实验报告:实验四 Android程序设计
  3. listview android:cacheColorHint,listSe
  4. 解决 android如何设置全屏模式
  5. android实现TextView多行文本滚动
  6. android Fragment与Activity交互,互相发数
  7. Android TextView实现跑马灯效果
  8. Android探索之旅 | Android(安卓)Studio
  9. 2018年60个实用Android框架排行榜
  10. Android 常用 adb 命令总结