網路文件共享服務原理_學習筆記
阿新 • • 發佈:2018-02-04
block pass 打開 設計 china 自己 project 發送數據 方案 實際需求和局域網內解決方案
SMAB
NFS
FTP
DAS NAS SAN
1、FTP 協議(File Transfer Protocol 文件傳輸協議)
FTP報文格式
FTP有2種工作模式:
分為主動模式和被動模式,基於服務器角度而言 主動模式(port style): 命令:客戶端:隨機端口port1----> 服務器端:21 數據:客戶端:隨機端口port2<—-------> 服務器端:20 客戶端通過發送命令比如get,ls,等命令告訴服務器端需要訪問的資源和操作等,然後客戶端是以主動模式連接的服務器,客戶端在發送get等命令後,還會告訴客戶端這邊的數據接收隨機端口是多少,然後服務器通過20主動去發起tcp連接請求,然後建立數據連接後發送數據給客戶端。 這樣子存在的問題就是防火墻一般是對入方向的數據進行控制,因為服務器端的20並不是監聽端口,所以當防火墻發現有往服務器20端口發送的報文就會拒絕,因此當windows去連接阿裏雲主機的時候需要對dport=20的數據進行放行。 被動模式(passive style): 命令: 客戶端:隨機端口port3-------> 服務器端:21 數據: 客戶端:隨機端口port4<-------> 服務器端:隨機端口port5 被動模式就是客戶端發起命令比如get,我要獲取數據了,要開啟數據鏈接了,我是被動模式鏈接的服務器,服務器說我知道了,然後發送了一個響應報文告訴客戶端你連這個端口就好了(還不如說你就連20就好了,我還是不知道為啥子要這麽設計呢?,一個進程同時能接受用戶的請求數,不能如80那樣去,通過主進程調度,通過子進程或子線程的方式來響應,所以使用隨機端口建立新的連接請求。這就是被動模式的原因,),然後客戶端就向此dport5發送tcp連接請求,然後獲取數據。這邊就比較那啥了,因為客戶端防火墻會開放ftp客戶端的會話,所以沒啥影響,服務器端的防火墻應該也能夠識別這個是本地ftp服務自己的端口放行放行,才行。但是設置這種模式有啥好處就不得而知了,而且ftp獨有的2個連接也不知孰好孰壞,反正就服務器而言,主動發起tcp請求,還是被動接受客戶端發來的tcp請求,只要能傳輸數據就好了不是。 被動服務器端口port5為協商結果, 227 Entering Passive Mode (host_ip,xx,yy) 服務器數據端口為:xx*256+yy
linux默認是用被動模式,windows默認是用的是主動模式
實現工具
Server:常見的服務器端軟件
windows:Serv-U,IIS
Serv-U多平臺,可用於Linux,多用於windows [https://www.serv-u.com/]
linux:wu-ftp(最早的ftp實現工具),pure-ftpd,proftpd,vsftpd
Linux下幾款ftp軟件的分析參看:[http://blog.chinaunix.net/uid-8874157-id-3729247.html] proftpd更專業,功能強大 pure-ftpd更簡單,部署簡單 vsftpd更安全,性能好
Client:常見的客戶端端軟件
各種瀏覽器
windows:FileZilla,tftpd32
FileZilla多平臺,多用於windows [https://filezilla-project.org/]
linux:ftp,lftp,lftpget,wget,curl
ftp:軟件包ftp
lftp和lftpget:軟件包lftp
wget:軟件包wget
狀態碼
1XX:信息 125:數據連接打開
2XX:成功類狀態 200:命令OK 230:登錄成功
3XX:補充類 331:用戶名OK
4XX:客戶端錯誤 425:不能打開數據連接
5XX:服務器錯誤 530:不能登錄
用戶賬號
匿名用戶
系統用戶
虛擬用戶
共享哪些文件資源
用戶能夠對這些文件資源進行什麽的操作權限。如何對用戶進行認證
nss:名稱解析框架
/lib64/libnss
/usr/lib64/libnss
/etc/nsswitch.conf
pam:可插入認證模塊
/lib64/security/pam
/etc/pam.d/
數據傳輸安全
sftp:ssh提供的基於ssh的協議的ftp
ftps:基於ssl/tls的ftp
2、RPC協議
網路文件共享服務原理_學習筆記