1. 程式人生 > >網路文件共享服務原理_學習筆記

網路文件共享服務原理_學習筆記

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協議

網路文件共享服務原理_學習筆記