网络-FTP数据连接模式

Posted by 周思进 on March 20, 2022

好早做的笔记,做了点文末补充~

FTP使用客户服务器方式,大致工作流程如下: 1、客户端通过TCP三次握手与服务器的21端口建立控制连接 2、服务器对客户端进行身份验证,授予客户端相应的操作权限 3、客户端请求数据传输建立数据连接 4、数据传输完成后断开数据连接 3、退出FTP服务器断开控制连接

FTP客户端与服务器之间需要建立两个TCP连接,控制连接和数据连接。 控制连接,用于传输控制信令,其在整个会话期间保持连接; 数据连接用于传输数据,在客户端发起数据传输请求后建立数据连接,在结束传输后断开连接,不必一直存在。

使用两个连接的好处是使协议更加简单和容易实现,且在传输的过程中,便于利用控制连接中断等操作。


数据连接模式

数据连接分两种模式:被动模式和主动模式。 其主动和被动都是相对服务端而言的。

1、主动模式 PORT命令: 服务器主动连接指定的端口 客户端通过控制连接向服务端发送本地ip地址和用于数据连接的端口号 ,ip地址信息被分解为每8位一个段 ,每个段都作为十进制数 ( 用字符串表示 )传送 。 段之间用逗号分隔 , 一个PORT命令像下面这样: PORT h1,h2,h3,h4,p1,p2 (h1是因特网主机地址的高8位) 服务器打开20号端口与设备说明的端口号建立数据连接,如下图所示:

image

2、被动模式 PASV命令: 服务器等待客户端建立数据连接 客户端通过控制连接向服务端发送PASV命令,服务端收到此命令开启一个数据端口( 任意非特权端口P>1024 ),并通过控制连接告诉设备,服务端 “监听 ” 并等待客户端连接;客户端收到服务器的地址和端口号发起数据连接。如下图所示(箭头方向表示发起方):

image

对于被动模式,如果服务器是置于防火墙之后,就可能因为客户端发起连接的目标端口不在防火墙允许规则中而被拒绝,客户端则会因为一直收不到服务端响应而连接超时。

固客户端在被动模式失败的情况下,需要再尝试用主动模式进行连接操作。