Samba 服務使用的端口和協議(是一組TCP UDP協議的組合,主要使用CIFS協議,有一個Java例子)


Samba服務所使用的端口和協議: 

1)Port 137 (UDP) - NetBIOS 名字服務 ; nmbd
2)Port 138 (UDP) - NetBIOS 數據報服務
3)Port 139 (TCP) - 文件和打印共享 ; smbd (基於SMB(Server Message Block)協議,主要在局域網中使用,文件共享協議)
4)Port 389 (TCP) - 用於 LDAP (Active Directory Mode)
5)Port 445 (TCP) - NetBIOS服務在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB協議擴展到Internet后,實現Internet文件共享)
6)Port 901 (TCP) - 用於 SWAT,用於網頁管理Samba  
windows系統之間的文件共享協議:NetBEUI(NetBIOS Extend User Interface)協議和IPX/SPX協議
NetBEUI協議是一種短小精悍、通信效率高的廣播型協議,安裝后不需要進行設置,特別適合於在“網絡鄰居”傳送數據。
NETBEUI缺乏路由和網絡層尋址功能,既是其最大的優點,也是其最大的缺點。因為它不需要附加的網絡地址和網絡層頭尾,所以很快並很有效且適用於只有單個網絡或整個環境都橋接起來的小工作組環境。
因為不支持路由,所以NETBEUI永遠不會成為企業網絡的主要協議。NETBEUI幀中唯一的地址是數據鏈路層媒體訪問控制(MAC)地址,該地址標識了網卡但沒有標識網絡。路由器靠網絡地址將幀轉發到最終目的地,而NETBEUI幀完全缺乏該信息。
NetBEUI協議主要用於本地局域網中,一般不能用於與其他網絡的計算機進行溝通。 
IPX/SPX (Internetwork Packet Exchange/Sequences Packet Exchange,Internet分組交換/順序分組交換IPX/SPX)是Novell公司的通信協議集。與NetBEUI形成鮮明區別的是IPX/SPX比較龐大,在復雜環境下具有很強的適應性。這是因為IPX/SPX在設計一開始就考慮了網段的問題,因此它具有強大的路由功能,適合於大型網絡使用。
IPX主要實現網絡設備之間連接的建立維持和終止;SPX協議是IPX的輔助協議,主要實現發出信息的分組、跟蹤分組傳輸,保證信息完整無缺的傳輸。 其中,IPX協議負責數據包的傳送;SPX負責數據包傳輸的完整性。
LINUX系統之間文件共享 和 LIUNX與WINDOWS系統之間的文件共享:IBM SMB,服務器信息塊協議
服務器信息塊(SMB)協議是一種IBM協議,用於在計算機間共享文件、打印機、串口等。SMB協議可以用在因特網的TCP/IP協議之上,也可以用在其它網絡協議如IPX和NetBEUI之上。


http://blog.csdn.net/wangsifu2009/article/details/6780749

------------------------------------------------------------------------------

基於SMB/JCIFS協議的共享文件上傳和下載(局域網中共享文件獲取文件)  

SMB最初是IBM的貝瑞·費根鮑姆(Barry Feigenbaum)研制的,其目的是將DOS操作系統中的本地文件接口“中斷13”改造為網絡文件系統。后來微軟對這個發展進行了重大更改,這個更改后的版本也是最常見的版本。微軟將SMB協議與它和3Com一起發展的網絡管理程序結合在一起,並在Windows for Workgroups和后來的Windows版本中不斷加入新的功能。
CIFS (Common Internet File System) 通用Internet文件系統
 

  在windows主機之間進行網絡文件共享是通過使用微軟公司自己的CIFS服務實現的。 

 

  CIFS 是一個新提出的協議,它使程序可以訪問遠程Internet計算機上的文件並要求此計算機的服務。CIFS 使用客戶/服務器模式。客戶程序請求遠在服務器上的服務器程序為它提供服務。服務器獲得請求並返回響應。CIFS是公共的或開放的SMB協議版本,並由Microsoft使用。SMB協議(見最后的名詞解釋)現在是局域網上用於服務器文件訪問和打印的協議。象SMB協議一樣,CIFS在高層運行,而不象TCP/IP協議那樣運行在底層。CIFS可以看做是應用程序協議如文件傳輸協議和超文本傳輸協議的一個實現。

 

  CIFS 可以使您達到以下功能: 

 

  1.訪問服務器本地文件並讀寫這些文件 

 

  2.與其它用戶一起共享一些文件塊 

 

  3.在斷線時自動恢復與網絡的連接 

 

  4.使用西歐字符文件名 

 

  一般來說,CIFS使用戶得到比FTP更好的對文件的控制。它提供潛在的更直接地服務器程序接口,這比使用HTTP協議的瀏覽器更好。CIFS最典型的應用是windows用戶能夠從“網上鄰居”中找到網絡中的其他主機並訪問其中的共享文件夾.

 

  CIFS 是開放的標准而且已經被作為Internet應用程序標准被提交到IETF。

JCIFS是CIFS 在JAVA中的一個實現,是samba組織負責維護開發的一個開源項目,專注於使用java語言對cifs協議的設計和實現。他們將jcifs設計成為一個完整的,豐富的,具有可擴展能力且線程安全的客戶端庫。這一庫可以應用於各種java虛擬機訪問遵循CIFS/SMB網絡傳輸協議的網絡資源。類似於java.io.File的接口形式,在多線程的工作方式下被證明是有效而容易使用的

Java代碼 
  1. package com.smb;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.BufferedOutputStream;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileOutputStream;  
  8. import java.io.IOException;  
  9. import java.io.InputStream;  
  10. import java.io.OutputStream;  
  11.   
  12. import jcifs.smb.SmbFile;  
  13. import jcifs.smb.SmbFileInputStream;  
  14. import jcifs.smb.SmbFileOutputStream;  
  15.   
  16. public class Smbtest {  
  17.     /** 
  18.      * 從局域網中共享文件中得到文件並保存在本地磁盤上 
  19.      * @param remoteUrl 共享電腦路徑 如:smb//administrator:123456@172.16.10.136/smb/1221.zip  , smb為共享文件 
  20.      * 注:如果一直出現連接不上,有提示報錯,並且錯誤信息是 用戶名活密碼錯誤 則修改共享機器的文件夾選項 查看 去掉共享簡單文件夾的對勾即可。 
  21.      * @param localDir 本地路徑 如:D:/ 
  22.      */  
  23.     public static void smbGet(String remoteUrl,String localDir){  
  24.         InputStream in = null;  
  25.         OutputStream out = null;  
  26.         try {  
  27.             SmbFile smbFile = new SmbFile(remoteUrl);  
  28.             String fileName = smbFile.getName();  
  29.             File localFile = new File(localDir+File.separator+fileName);  
  30.             in = new BufferedInputStream(new SmbFileInputStream(smbFile));  
  31.             out = new BufferedOutputStream(new FileOutputStream(localFile));  
  32.             byte []buffer = new byte[1024];  
  33.             while((in.read(buffer)) != -1){  
  34.                 out.write(buffer);  
  35.                 buffer = new byte[1024];  
  36.             }  
  37.         } catch (Exception e) {  
  38.             e.printStackTrace();  
  39.         }finally{  
  40.             try {  
  41.                 out.close();  
  42.                 in.close();  
  43.             } catch (IOException e) {  
  44.                 e.printStackTrace();  
  45.             }  
  46.         }  
  47.     }  
  48.     /** 
  49.      * 把本地磁盤中的文件上傳到局域網共享文件下 
  50.      * @param remoteUrl 共享電腦路徑 如:smb//administrator:123456@172.16.10.136/smb 
  51.      * @param localFilePath 本地路徑 如:D:/ 
  52.      */  
  53.     public static void smbPut(String remoteUrl,String localFilePath){  
  54.         InputStream in = null;  
  55.         OutputStream out = null;  
  56.         try {  
  57.             File localFile = new File(localFilePath);  
  58.             String fileName = localFile.getName();  
  59.             SmbFile remoteFile = new SmbFile(remoteUrl+"/"+fileName);  
  60.             in = new BufferedInputStream(new FileInputStream(localFile));  
  61.             out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));  
  62.             byte []buffer = new byte[1024];  
  63.             while((in.read(buffer)) != -1){  
  64.                 out.write(buffer);  
  65.                 buffer = new byte[1024];  
  66.             }  
  67.         } catch (Exception e) {  
  68.             e.printStackTrace();  
  69.         }finally{  
  70.             try {  
  71.                 out.close();  
  72.                 in.close();  
  73.             } catch (IOException e) {  
  74.                 e.printStackTrace();  
  75.             }  
  76.         }  
  77.     }  
  78.       
  79.     public static void main(String[] args) {  
  80.         smbPut("smb://administrator:123456@172.16.10.136/smb", "E:/1221.zip");  
  81.         smbGet("smb://administrator:123456@172.16.10.136/smb/1221.zip", "D:/");  
  82.   
  83.     }  
  84.   
  85. }  
 
http://iteye.blog.163.com/blog/static/1863080962012111155514179/
------------------------------------------------------------------------------






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM