Samba与nfs与ftp
samba服务
samba是一个网络服务器,用于linux和windows之间共享文件。
samba端口号
samba (启动时会预设多个端口)
数据传输的tcp端口 139、445
进行netbios名称解析之类工作的udp端口就 137、138
samba的功能:
① 分享档案与打印机服务;
② 可以提供用户登入 samba 主机时的身份认证,以提供不同身份者的个别数据;
③ 可以进行 windows 网络上的主机名解析 (netbios name)
④ 可以进行装置的分享 (例如 zip, cdrom...)
samba工作原理:
samba服务功能强大,这与通信是基于smb协议有大的关系。smb协议不仅能够提供目录和打印机共享,还支持认证和权限设置等功能。在早期,smb运行于nbt协议(netbios over tcp/ip)上,使用udp协议的137、138及tcp协议的139端口,但随着后期开发,它可以直接运行于tcp/ip协议上,没有额外的nbt层,使用tcp协议的445端口。
通过samba服务,windows用户可以通过【网上邻居】窗口查看到linux*享的资源,同时linux用户也能够查看到服务器上的共享资源。samba服务的具体工作过程如图:
协议协商
客户端在访问samba服务器时,首先由客户端发送一个smb negprot请求数据报,并列出它所支持的所有smb协议版本。服务器在接收到请求信息后开始响应请求,并列出希望使用的协议版本。如果没有可使用的协议版本则返回oxffffh信息,结束通信。
建立连接
当smb协议版本确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送sesssetupx请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后服务器通过发送一个sesssetupx请应答数据报来允许或拒绝本次连接。
访问共享资源
当客户端和服务器完成了协商和认证之后,它会发送一个tcon或smb tconx数据报并列出它想访问网络资源的名称,之后服务器会发送一个smb tconx应答数据报以表示此次连接是否被接受或拒绝。
断开连接
连接到相应资源,smb客户端能够open smb打开一个文件,通过read smb读取文件,通过write smb写入文件,通过close smb关闭文件。
配置文件详解参考教案。
ftp服务
ftp (file transfer protocol) 是传输协议之一,他最主要的功能是在服务器与客户端之间进行档案的传输。
vsftpd软件包:“very secure”的ftp服务器软件
ftp端口号
主动模式:消息端口21,数据端口20
被动模式:消息端口21,数据端口随机
ftp的工作原理
建立连接:
客户端发送连接请求,同时打开一个大于 1024 的端口,比如 1031 端口,若 ftp 服务器侦听到该请求,则会在 1031 端口和 ftp 的 21 端口之间建立起一个 ftp 会话连接。
传输数据:
当需要传输数据时,客户端再动态的打开一个大于 1024 的端口连接到 ftp 得 20 端口,并在这个两个端口之间进行数据传输。
ftp 协议中,控制连接均有客户端发起,而数据连接有两种工作方式:
port 主动方式和pasv 被动方式
主动
client server
1024+ ---------------> 21
1024+n <-------------- 20
客户端使用1024 以上的端口连接服务器的21 号端口,并且会事先开启一个1024+n 的端口准备让服务器来连接,服务器得知客户端准备的端口后,用20 号端口与客户端连接,创建数据链路时server 端处于主动去连接客户端的状态固称为主动传输模式
被动
client server
1024+ ---------------> 21 1024+m
1024+ <--------------
1024+n --------------->1024+m
客户端使用1024 以上的端口连接服务器的21 号端口,服务器接到连接请求后,开启一个1024+m 的端口等待客户端来连接,再通知客户端这个等待连接的端口号是1024+m,客户端接到服务器端的信息后,开启新的一个1024+n 的端口与1024+m 进行连接,创建数据连接时,server 端处于被客户端连接的状态,固称为被动传输模式.
vsftp 默认是根据客户端不同而使用不同模式,windows 客户端则使用主动,linux 客户端则使用被动
可以用 pasv_enable=no 来强制使用主动
nfs服务
nfs即网络文件系统(network file system),是使不同的计算机之间能通过网络进行文件和目录共享的一种网络协议,多用于类unix系统中的网络中。
windows网络共享服务或samba服务用于办公居于网共享,而护粮网中小型网站集群架构后端常用nfs进行数据共享,如果是大型网站,那么有可能还会用到更复杂的分布式文件系统(mfs,glusterfs,fastdfs)。
rpc服务(使用的是固定端口111)最主要的功能就是记录每个nfs功能所对应的端口号,并且在nfs客户端请求时将该端口和功能对应的信息传递给请求数据的nfs客户端,从而确保客户端可以链接到正确的nfs端口上去,达到实现数据传输交互数据目的。
nfs端口号
nfs的功能所对应的端口无法固定,它会随机取用一些未被使用的端口来作为传输只用。
一般nfs为udp 2049和其他挂载端口等,rpc为111端口。
nfs 服务配置过程中,其中 mountd, statd 和 lockd 进程可以使用固定端口号。
修改 /etc/sysconfig/nfs 文件
mountd_port="4002"
statd_port="4003"
lockd_tcpport="4004"
lockd_udpport="4004"
nfs的工作原理
当访问程序通过nfs客户端向nfs服务器端存取文件时,其请求数据流程大致如下:
1)首先用户访问网站程序,由程序在nfs客户端上发出存取nfs文件的请求,这时nfs客户端(即执行程序的服务器)的rpc服务(rpcbind 服务)就会通过网络向nfs服务器端的rpc服务(rpcbind 服务)的111端口发出nfs文件存取功能的询问请求。
2)nfs服务器端的rpc服务(rpcbind服务)找到对应的已注册的nfs端口后,通知nfs客户端的rpc服务(rpcbind 服务)。
3)此时nfs客户端获取到正确的端口,并与nfs daemon联机存取数据。
4)nfs客户端把数据存取成功后,返回给前端访问程序,告知用户存取结果,作为网站用户,就完成了一次存取操作。
因为nfs的各项功能都需要向rpc服务( rpcbind服务)注册,所以只有rpc服务才能获取到nfs服务的各项功能对应的端口号(portnumber)、pid、nfs在主机所监听的ip等信息,而nfs客户端也只能通过向rpc服务询问才能找到正确的端口。也就是说,nfs需要有rpc服务的协助才能成功对外提供服务。从上面的描述,我们不难推断,无论是nfs客户端还是nfs服务器端,当要使用nfs时,都需要首先启动rpc服务,nfs服务必须在rpc服务启动之后启动,客户端无需启动nfs服务,但需要启动rpc服务。