15 Linux之ftp nfs samba 认识和区别
FTP(File Transfer Protocol,文件传输协议),应用层协议,可跨平台。如其名,只能实现文件传输功能,不能实现一些其他的功能,例如文件系统挂载等功能。
NFS(Network File System,网路文件系统),工作在内核模式下的,故难以实现跨平台。由于基于文件系统实现,在linux下可实现挂载使用等功能。
win7已有NFS功能
win10暂时还没
SMB(Service Message Block,服务消息块协议),能够实现Windows和Linux主机之间的文件共享服务,可实现跨平台,在Linux上实现了CIFS(Common Internet File System)协议。
FTP协议
工作模式
主动模式:
客户端请求服务端的21端口先建立命令连接
服务端响应客户端,并以5000+随机端口与客户端建立数据连接
开始数据传送
属于C/S(Client/Server)架构,基于套接字通信。
FTP协议用到2种不同的tcp连接:一是命令连接,用于服务端与客户端命令的传达,监听在tcp/21端口;另一个是数据连接,用来传输数据,监听的端口是随机的。
客户端请求服务端的21端口先建立命令连接
客户端使用5000+随机端口用命令连接请求数据连接
服务端收到请求后随机产生端口,反馈给客户端。p1 p2
客户端使用5000+端口与服务端随机端口(p1*256+p2)之间传输数据
注:被动模式也会存在防火墙问题,但服务端防火墙有连接追踪功能以解决此问题。故被动模式用的较多
用户认证
匿名用户:登录名是anonymous,且不须密码
系统用户:FTP服务端本地用户和密码,默认访问的是用户家目录
虚拟用户:仅用于访问服务端特定资源。可指定用户文件或数据库来使用。最终会将虚拟用户映射为系统用户,所以默认访问的为系统用户家目录
服务端
Linux端:vsftpd,pureftp....
windows端:SerU,FileZilla-Server...
客户端
Linux端:ftp,lftp,lftpget,wget,curl...
windows端:FileZilla
RPC(Remote Procedure Call Protocol)远程过程调用协议
一部分功能由本地程序完成 另一部分功能由远程主机上的函数完成。客户端挂载了nfs服务器的文件系统时,进行一些操作。但该协议是在内核级别上实现的协议,RPC正是处理该问题的协议,它会将客户端的操作的函数调用发送到服务器端,由服务器端执行这些函数调用。
idmapd
想想这种情形,nfs客户端在挂载文件系统以后,在本地以某用户的身份创建了一个文件,在服务器端这个文件的属主和属组是哪个用户呢?早期是通过NIS(Network Information Services网络信息服务)来解决这个问题的,但是在传输账号和密码时,使用的是明文传输,现在使用LDAP+clbbler来实现的。但是,NFS使用的是idmapd这个服务,有rpc提供,将所有的用户后映射为nfsnobody,但是在访问的时候,还是以本地UID对应的本地用户来使用的。
mounted
NFS是通过什么来控制那些客户端可以访问,那些不可以访问的呢?NFS只支持通过IP来控制客户端,而这个功能是由守护进程mounted来实现的,它监听的端口是半随机的。所谓的半随机指的是,这个随机端口是由rpc服务来决定的,而rpc是通过随机的方式。作用等等同于小区大门保安的作用。
NFS请求过程
请求过程:当客户端试这去挂载使用nfs共享的文件系统是,客户端首先回去与postmapper(tcp/111)端口去注册使用,此时postmapper会随机分配一个端口给mounted,然后mounted这个守护进程会来验证客户端的合法性,验证通过后,会把请求交给nfs服务,客户端此时可以挂载使用了,用户在创建文件时,会使用到idmapd的守护进程来映射属主。其实idmapd也是有rpc服务提供的,只不过在这里,nfs服务使用到用户映射的功能时,会自动的去调用此守护进程。
SMB:Service Message Block
CIFS:Common Internet File System 通用网络文件系统,windows系统之间共享的协议,samba实现了该协议,故可实现windows与linux之间的文件共享服务
监听的端口:
tcp/137 udp/137 tcp/139 udp/139
137:是实现NetBIOS协议,实现解析windows之间主机名的解析,实现在windwos的网络邻居可看到的Linux主机名
139:是实现cifs协议
交互式数据访问;
smbclient -L HOST -U USERNAME
获取共享信息后:
smbclient //SERVER/shared_name -U USERNAME
基于挂载的方式访问;
mount -t cifs //SERVER/shared_name /mount_point -o uername=USERNAME,pasword=PASSWORD
本文出自 “运维狗” 博客,请务必保留此出处http://yunweigou.blog.51cto.com/6299641/1653362
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。