您的位置:首页 > 编程语言 > PHP开发

FTP-模式

2016-04-15 16:34 573 查看
这篇文章只是归纳总结,总结FTP的主动模式和被动模式的区别,详情可以参考FTP协议的分析和扩展

Port模式(主动模式):

建立控制连接(三次握手)

1. 客户端向服务器发送一个TCP SYN(TCP同步)包给服务器端口21,客户端使用暂时的端口作为它的源端口
2. 服务端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端使用的暂时端口
3. 客户端发送一个ACK(确认)包,建立连接


建立传输数据通道

1. 客户端在控制连接通道中发送PORT命令(携带端口和ip地址,在这个端口上接收数据)给服务端。源端口为客户端暂时端口,目的端口为21
2. 服务端在端口20上向客户端的端口(客户端PORT命令中携带的端口)发送一个SYN包
3. 客户端以源端口(PORT命令中的端口)作为暂时端口,目的端口20发送一个SYN ACK包。
4. 服务端发送一个ACK包,建立数据传输通道,传输数据在客户端端口暂时端口(PORT命令中携带的)和服务端20端口进行


传输数据

1. 发送数据的一方(可以是客户端也可以是服务端),以传输数据通道来发送数据
2. 数据以TCP段形式发送(一些命令如STOR表示客户端要发送数据,RETR表示服务端发送数据)
3. 数据的接收方接到到数据后,需要对这些TCP段进行ACK确认(TCP协议是一个面向连接的协议)
4. 双方开始传输数据


结束连接(四次握手)

1. 数据传输完成后。发送数据的一方发送FIN命令来结束数据连接
2. 接收数据一方进行ACK命令确认
3. 接收数据一方发送FIN命令来结束数据连接
4. 发送一方进行ACK命令确认断开连接


Passive模式(被动模式):

被动模式和主动模式的1,3,4步骤是相同的,主要第2步骤不同

建立传输数据通道

1. 客户端在控制连接通道中发送PASC命令给服务端
2. 服务端向客户端进行应答PASC OK(携带服务端的IP地址和端口)
3. 客户端选择一个暂时端口向服务端的端口(PASC携带的端口)发送SYN(同步包)
4. 服务端以PASC命令的端口向客户端的端口(客户端选择的端口)发送SYN ACK(同步确认包)
5. 客户端向服务端发送一个ACK包,建立数据通道,传输数据在客户端暂时端口和服务端端口(PASC中的端口)中进行

Passive模式(被动模式)和Port模式(主动模式)的区别在于建立传输数据的通道上,主动模式是相对于服务端而言的,在客户端发送PORT命令时,主动打开20端口,而被动模式是经过客户端确认后打开的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: