关于FTP协议的简单介绍

一、FTP协议作用

       FTP协议用于远距离计算机之间进行文件的传输。


二、协议知识

  (一)FTP协议建立在TCP协议基础上

    1、通信时双方会建立两个TCP连接:

        一个用来控制和发送命令,另一个用来传输数据。

    2、连接的分工

        发送命令的连接是长久保持的;

        传输数据的连接是临时建立,传输完毕后就会关闭。


  (二)端口号

     1、服务端接受命令的TCP套接字端口号是21。

     2、服务端数据连接的TCP套接字是随机分配。


三、FTP的优缺点 

     1、优点:传输速度快,方便,可用于文件上传下载。

     2、缺点:不安全,账号、密码和数据是明文传输。


四、通信过程

    1、客户端主动和服务端21号端口建立TCP连接。

    2、客户端发送命令,服务端接收后进行处理和回复。

    3、通信完毕后,客户端主动关闭连接。

    注意:每次建立TCP连接后,服务端会主动回复一次当前状态,响应码是220。


五、主要客户端命令

       FTP协议使用命令来进行文件上传,下载,删除,修改的功能。

      命令名字需要大写。

   (一)登录

      格式如下:

USER 空格 用户名

     匿名登录:使用"annoymous"作用户名。


  (二)输入密码 

PASS 空格 密码

     服务端收到后,进行密码比对。


(三)查看当前服务器目录 格式如下:

PWD

    服务端收到后,返回当前会话记录的服务端工作目录。


(四)切换目录 格式如下:

CWD  空格 目录路径


(五)主动模式

格式如下:

PORT 空格 (地址1, 地址2, 地址3, 地址4, 端口参数1, 端口参数2)

案例:

   PORT (122,22,3,4,1,100)

说明:
   122,22,3,4代表IP地址为122.22.3.4   
   1,100代表端口号为 1 * 256 + 100 = 356

地址参数和端口参数都是客户端的,让服务端主动来连接。

计算公式:

    1、地址1到地址4是把IPV4地址的点替换成逗号,例如:IPV4地址"122.22.3.1"替换成 "122,22,3,1"。

    2、端口号 = 端口参数1 * 256 + 端口参数2。

      


(六)被动模式

PASV

      数据传输时让客户端主动连接服务器的端口。


(七)退出连接

 QUIT


(八)设置传输类型

TYPE  空格 代号

代号为字符A,代表Ascii字符。 代号为字符I,代表二进制。


(九)代表类型

SRU 空格  F/R/P     

任选F、 R 、P三者之一。 F是文件,R是记录,P是页面。


(十)其他命令

      修改目录、删除目录、获取文件、上传文件、显示文件列表等等。

 

     注意:LIST列表命令也需要另外单独建立TCP数据连接发送结果。


六、协议格式

(一)客户端发送命令:

命令名 空格 可选参数\r\n

注意:命令名和参数要用一个空格隔开。

案例:

// 1、客户端发送用户名"admin"给服务端验证
USER admin\r\n

// 2、客户端发送密码"124"给服务端验证
PASS 124\r\n


(二)服务端响应执行结果

数字 空格 文字说明\r\n

        数字是3位数,每个数对应一个结果;每次客户端发送一次命令,就获得服务端的响应结果。

 

结果种类:

 1)单行结果,只有一行字符串。

    案例:

200 执行成功。\r\n

2)多行结果

        如果响应结果的第一行第四个字符是'-',代表多行,后面还有字符。

案例:

200-帮助消息如下:\r\n

200-第一行\r\n

200-第二行\r\n

200 最后一行\r\n

       如果第四个字符是空格,说明是最后一行,结果输出完毕。


七、问题思考

   (一)如何传输文件?

     1、每传输一个文件需要另外建立一个TCP连接。

     2、传输完毕后,关闭该TCP数据连接。


(二)如果同时传输多个文件,怎么做? 会进行排队?还是同时建立多个TCP连接?

     每次文件传输会占用双方各自的一个端口,每个端口某时刻用来传输一个数据包。


八、其他

  (一)安全的文件传输协议SFTP

         SFTP协议是建立在SSH协议上的FTP协议。

 (二)客户端交互方式

       使用时一般安装软件。 交互方式有:命令窗口、图形界面。


九、文件上传和下载主要过程

(一)文件上传:

  1、 用户通过客户端登录成功。

  2、客户端发送PASV命令,服务器返回地址和端口。

  3、客户端和服务器建立数据TCP通道。

  4、发送"STOR 文件名"命令。

  5、客户端开始读取文件,输出到数据的TCP通道里,服务端读取接收。

  6、客户端输出完毕后,关闭数据TCP连接。


(二)文件下载:

  1、登录成功。

  2、发送PASV命令,服务器返回地址和端口。

  3、另外和服务器建立TCP连接。

  4、 执行LIST命令。

  5、读取数据通道的每行文件名。

  6、发送PASV命令,服务器返回地址和端口。

  7、另外和服务器建立数据TCP连接。

  8、发送"RETRV 文件名"命令。

  9、开始读取数据,写入本地文件目录中。


(三)STOR和RETRV命令中的文件名一般需要路径。

   有两种路径:

      1、绝对路径:从FTP服务器的工作目录出发。

          "/"代表工作目录。

          例如:工作目录下work目录的文件:" /work/hhhh.txt"

     2、相对路径:从当前目录出发。

          "./"代表当前目录。

          "../"代表上一级目录。

         例如:当前目录的文件"./me.txt"。


十、服务端响应的常用状态码

  (一)关于验证

    220 已准备为新用户服务。

    331 用户名正确。

    230 密码正确。

    530 密码错误。


(二)关于命令执行

    200 命令执行完毕。

   227 进入被动模式 (地址和端口参数)。


(三)关于文件传输

   213 文件字节总数

   150 数据通道正常。

   226 传输完成。

   500 命令错误。


十一、更多

    更多信息请去RFC官网查询。

    大多数都是英文介绍文档。

 

你可能感兴趣的:(其他协议,网络协议)