FTP协议要点

FTP协议的大体流程分为如下3步:

1、登陆

        客户端发送用户名,服务器要求密码;客户端发送密码,服务器验证返回结果

      (可将匿名,非匿名的验证方式再详细点。。。。。。。。。。)

2、协商传输模式

       传输模式分为主动模式和被动模式,这里的主被动是针对服务器而言。也就是说,在开始建立数据连接时,如果是服务器主动连客户端,就叫主动模式,服务器被动等待客户端来连接(客户端主动发起连接)就是被动模式。

       传输模式的选择取决于客户端,在登陆完成后,发送或者下载数据前,客户端需要主动和服务器协商使用何种传输模式,只有这个传输模式确定好了,数据连接才可能建立起来。不然客户端和服务器谁都不知道该怎么或者谁来建立连接,这是因为在协商传输模式的同时会协商端口号(主动建立连接方需要知道被动方允许建立连接的端口号),没有这个端口号就好像一个男生想追女神,但是却没有对方的联系方式一样。

       当客户端发送PORT命令时,表示进入主动模式。同时在这条命令中带上客户端自己的IP地址和端口号,以便服务器来主动进行数据连接。

       当客户端发送PASV命令时,表示进入被动模式。服务器会向客户端发送其可以接受数据连接的IP地址和端口号(随机产生),以便客户端来进行连接,服务器处于被动模式。

       两种模式没有优劣之分,只是使用场景不一样。例如一般服务器端都有防火墙,只有固定的一些端口开放。此时如果采用被动模式,客户端便不能穿透防火墙去连接服务器的端口,此时就需要采用主动模式,让服务端主动采用20号端口去连接客户端。而一般20号端口都是开放的。

       (此处可以有个抓包说明)

 3、进行数据传输      

       当完成传输模式的协商后,便可以新建一个连接用于数据传输。

       注意:前两步都走的是控制连接(服务器用的是21号端口)。   这一步便会新建一个连接用于传输数据,所使用的端口号便是上一步所协商的结果。

       如果是主动模式,服务器便用自己的20号端口去连接之前协商的客户端端口,如果是被动模式,客户端便随机选择自己一个端口去连接协商的服务器端口。此时可以发现,服务器的20号端口只有在主动模式的时候才会有用。

       在进行数据传输时,有两种编码方式:ASCII传输模式和二进制数据。二者的区别在在于对回车换行符的处理,binary模式不对数据进行任何处理,ascii模式将回车换行转换为本机的回车字符,比如Unix下是\n,Windows下是\r\n,Mac下是\r。

        在传输一些图片,可执行程序的时候一般使用binary,因为其对数据不会做任何的修改,如果此时用了ascii模式,在传输的过程中会自动的增加或删除一些换行符,会引起错误。在传输文本文件时,一般使用ascii模式,这样在不同操作系统上传输文件后,便可以打开直接阅读,不用再进行手动转换。如果此时用了binary模式,那么从Unix服务器下载到windows的文本文件,其换行符还是Unix类型的,在windows上打开此文件,可能就不能按正常的格式显示。如果自己不能区分开用什么模式,那么就采用binary,因为其可以保证文件的一致完整性。即使对于文本文件,其换行符的转换可以借助其他工具来完成。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值