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

FTP 原理详解

2015-05-19 15:54 246 查看
本文主要是说一下 FTP 的两个连接 ,两种模式

FTP (File Transfer protocol) 是一种文件传输协议
FTP 是一种文件共享服务 ,工作于应用层
这里顺便提一下 nfs 利用 RPC : Remote Procedure Call(远程过程调用)
这里强调一下RPC的作用 :能够让位于不同主机上的进程基于2 进制的格式实现进程通信

Samba 利用 CIFS/SMB

ftp 主要工作于 tcp 的 21 号 端口 : 21/tcp
与其它单个连接的不同 FTP 有 2 个连接:
(1) 命令连接 : 也叫 控制连接 ,工作于 21/tcp
如不特殊定义,一直存在,但不传输数据
一直在线


只要客户端不断开就一直处于连接状态

(2) 数据连接 : (这个有两种情况)

1. 主动模式 : 20/tcp

也就是说,如果客户端请求数据时,服务器端自己打开一个端口去连接客户 端的一个空闲端口,如果客户端相应则开始传输数据(但是这种模式存在一个
问题,也即是客户端的防火墙问题,主动模式的请求会被防火墙拦住)





2.被动模式
当客户端请求数据时,客户端通过命令连接发送一个报文告诉客户端一个打 开的等待客户端连接的端口,让客户端自己去连接。





注意: 一般我们说主动被动都是相对于服务端来讲的 。

防火墙的主要作用是关闭端口,但是从本机请求可以出去,外部请求的却不能通过。
而且本机的请求得到的响应也能通过。
注意请求和响应的区别。
在被动模式下服务端打开的端口是不确定的, 在主动模式下客户端打开的端口是
不确定的。
上面所说的被动连接模式会出现一个问题,就是主机的安全问题。 不过,现在的防火墙有 一个功能
叫做连接追踪,也就是说它能识别上面 命令连接 和 数据连接 的相关联关系,对 客户端的请求放行。

FTP 的数据传输格式(自动模式) :
二进制
文本

注意: 传输格式应该遵循文件本身的格式, 不然会得到乱码。
拓展 : 现在互联网上的数据传输类型
1 结构化数据 2 半结构化数据 3 非结构化数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: