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端口,而被动模式是经过客户端确认后打开的
相关文章推荐
- PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 的解决方法
- PHP生成条形码
- php pcntl_fork 多进程僵尸进程的问题
- 15个实用的PHP正则表达式
- PHP - 目录、文件操作
- pure-ftp脚本
- 【php趣味】__CLASS__、get_class、get_called_class三兄弟
- php 登录实例演示
- php 登录实例演示
- php 登录实例演示
- php使用php-fpm重启、停止操作命令
- 【PHP趣味】new self和new static的区别
- laravel-v4.0.9
- 类与对象
- PHPMailer使用
- 【php学习】数组操作
- 【转载】PHP运行模式的深入理解
- php反射例子
- PHPthinking在线编程工具终极版
- Yaf学习笔记1--Windows环境下安装Yaf