【上一篇】HTTP协议与HTTPS协议的区别
FTP简介
FTP(File Transport protocol),即文件传输协议,可有效地提高文件的共享和数据可靠高效地传输。FTP协议与前面几节介绍的Http协议更复杂,建立FTP连接时,需要同时开启两个端口,一个用于命令控制,另一个作为数据传输的端口,提高了效率。一般21端口作为命令控制的端口、20端口作为数据传输的端口。
命令控制端口:负责FTP命令发送、接收返回的响应信息。
数据端口:显示目录列表、上传、下载文件等有数据传输的操作。
下面简单介绍一下FTP的两种连接模式:主动模式、被动模式,其中的主动和被动都是针对服务器端来说的,主动模式下,服务器开启数据端口主动连接客户端,被动模式下,服务器端开启一个数据传输端口告诉客户端,然后服务器端被动地去连接这个端口。
FTP的主动模式【PORT】
主动模式下,客户端打开一个随机端口,向服务器端的21端口发起连接;同时客户端还会打开一个监听端口,并向服务器发送命令,服务器响应客户端命令主动开放20端口连接到客户端。
主动模式下,客户端告诉服务器端自己的端口号,让服务器的20端口主动连接客户端,这种方式是不安全的。因此客户端和服务器端都应该开启防火墙,对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。
【FTP协议的安全性分析,具体可以看一下网管小王的博客】防火墙对FTP主动和被动模式的影响.
FTP的被动模式【PASV】
被动模式下,当开启一个FTP连接时,客户端打开两个随机的端口,提交PASV命令,并用第一个端口去连接服务器的端口命令控制端口21,返回消息服务器的地址及开放的数据端口号,这是客户端的第二个端口去连接服务器的数据端口号,至此FTP的客户端和服务器端就建立了被动连接模式,进行后续的数据传输。
NFS协议简介
NFS(Network File System),是Sun公司用于分布式访问的文件系统。是在Linux的内核中实现的。
正如上图中所看到的,客户端通过发送消息来获取它们需要的服务器端磁盘上的目录和文件。问题来了,为啥我们不直接使用客户机上的本地磁盘呢?
主要原因有3:
(1)这种布局使得在客户机之间的数据共享更加容易。比如,如果你访问Client 0上的一个文件,然后你使用Client 2,你会看到相同的文件系统视图。数据可以很自然地在不同机器上共享。
(2)集中管理。比如要备份文件,可以只备份少数几个服务器上的数据,而不用备份许多客户机上的数据。
(3)安全,将所有的服务器放在一个锁好的机房里可以防止特定类型的问题发生。
参考资料
【1】高 乐怡,顾 锋磊.使用 Socket 通信实现 FTP 客户端程序
.https://www.ibm.com/developerworks/cn/linux/l-cn-socketftp/index.html[EB/OL].2011.04.07.
【2】Sun’s Network File System (NFS).http://pages.cs.wisc.edu/~remzi/OSTEP/dist-nfs.pdf