15 Linux之ftp nfs samba 認識和區別

FTP(File Transfer Protocol,文件傳輸協議),應用層協議,可跨平臺。如其名,只能實現文件傳輸功能,不能實現一些其他的功能,例如文件系統掛載等功能。

NFS(Network File System,網路文件系統),工作在內核模式下的,故難以實現跨平臺。由於基於文件系統實現,在linux下可實現掛載使用等功能。

win7已有NFS功能

    wKioL1VcM9aTPT23AAHkHs9JEck519.jpg

win10暫時還沒

    wKiom1VcMmnQiVZsAAHyAVXxLdo608.jpg

SMB(Service Message Block,服務消息塊協議),能夠實現Windows和Linux主機之間的文件共享服務,可實現跨平臺,在Linux上實現了CIFS(Common Internet File System)協議。

  1. FTP協議

      1. 工作模式

    主動模式:

  1. 客戶端請求服務端的21端口先建立命令連接

  2. 服務端響應客戶端,並以5000+隨機端口與客戶端建立數據連接

  3. 開始數據傳送

  1. 屬於C/S(Client/Server)架構,基於套接字通信。

  2. FTP協議用到2種不同的tcp連接:一是命令連接,用於服務端與客戶端命令的傳達,監聽在tcp/21端口;另一個是數據連接,用來傳輸數據,監聽的端口是隨機的。


注:考慮到客戶端防火牆很可能將服務端建立連接產生隨機的端口拒之門外,故被動模式產生了        被動模式:
  1. 客戶端請求服務端的21端口先建立命令連接

  2. 客戶端使用5000+隨機端口用命令連接請求數據連接

  3. 服務端收到請求後隨機產生端口,反饋給客戶端。p1 p2

  4. 客戶端使用5000+端口與服務端隨機端口(p1*256+p2)之間傳輸數據

  1. 注:被動模式也會存在防火牆問題,但服務端防火牆有連接追蹤功能以解決此問題。故被動模式用的較多

  2. 用戶認證

  1. 匿名用戶:登錄名是anonymous,且不須密碼

  2. 系統用戶:FTP服務端本地用戶和密碼,默認訪問的是用戶家目錄

  3. 虛擬用戶:僅用於訪問服務端特定資源。可指定用戶文件或數據庫來使用。最終會將虛擬用戶映射爲系統用戶,所以默認訪問的爲系統用戶家目錄

    常見FTP工具
    1. 服務端

      1. Linux端:vsftpd,pureftp....

      2. windows端:SerU,FileZilla-Server...

    2. 客戶端

      1. Linux端:ftp,lftp,lftpget,wget,curl...

      2. windows端:FileZilla

NFS協議
  1. RPC(Remote Procedure Call Protocol)遠程過程調用協議

    1. 一部分功能由本地程序完成 另一部分功能由遠程主機上的函數完成。客戶端掛載了nfs服務器的文件系統時,進行一些操作。但該協議是在內核級別上實現的協議,RPC正是處理該問題的協議,它會將客戶端的操作的函數調用發送到服務器端,由服務器端執行這些函數調用。

  2. idmapd

    1. 想想這種情形,nfs客戶端在掛載文件系統以後,在本地以某用戶的身份創建了一個文件,在服務器端這個文件的屬主和屬組是哪個用戶呢?早期是通過NIS(Network Information Services網絡信息服務)來解決這個問題的,但是在傳輸賬號和密碼時,使用的是明文傳輸,現在使用LDAP+clbbler來實現的。但是,NFS使用的是idmapd這個服務,有rpc提供,將所有的用戶後映射爲nfsnobody,但是在訪問的時候,還是以本地UID對應的本地用戶來使用的。

  3. mounted

    1. NFS是通過什麼來控制那些客戶端可以訪問,那些不可以訪問的呢?NFS只支持通過IP來控制客戶端,而這個功能是由守護進程mounted來實現的,它監聽的端口是半隨機的。所謂的半隨機指的是,這個隨機端口是由rpc服務來決定的,而rpc是通過隨機的方式。作用等等同於小區大門保安的作用。

  4. NFS請求過程

    1. 請求過程:當客戶端試這去掛載使用nfs共享的文件系統是,客戶端首先回去與postmapper(tcp/111)端口去註冊使用,此時postmapper會隨機分配一個端口給mounted,然後mounted這個守護進程會來驗證客戶端的合法性,驗證通過後,會把請求交給nfs服務,客戶端此時可以掛載使用了,用戶在創建文件時,會使用到idmapd的守護進程來映射屬主。其實idmapd也是有rpc服務提供的,只不過在這裏,nfs服務使用到用戶映射的功能時,會自動的去調用此守護進程。

SAMBA協議
  1. SMB:Service Message Block

  2. CIFS:Common Internet File System 通用網絡文件系統,windows系統之間共享的協議,samba實現了該協議,故可實現windows與linux之間的文件共享服務

  3. 監聽的端口:

    1. tcp/137 udp/137 tcp/139 udp/139

    2. 137:是實現NetBIOS協議,實現解析windows之間主機名的解析,實現在windwos的網絡鄰居可看到的Linux主機名

    3. 139:是實現cifs協議

  4. 交互式數據訪問;

    1. smbclient -L HOST -U USERNAME

  5. 獲取共享信息後:

    1. smbclient //SERVER/shared_name -U USERNAME

  6. 基於掛載的方式訪問;

    1. mount -t cifs //SERVER/shared_name  /mount_point -o uername=USERNAME,pasword=PASSWORD


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章