文件傳輸協議FTP、SFTP和SCP

 

 

網絡通信協議分層

應用層:

  • HTTP(Hypertext Transfer Protocol 超文本傳輸協議,顯示網頁)
  • DNS(Domain Name System)
  • FTP(File Transfer Protocol)
  • SFTP(SSH File Transfer Protocol,和FTP不一樣)
  • SCP(Secure copy,based on SSH)
  • SSH (Secure Shell)

通信層:

  • TCP(Transmission Control Protocol 三次握手傳輸協議)
  • UDP

網絡層:

  • IP(Internet Protocol)
  • ICMP(Internet Control Message Protocol,主要用於路由發送錯誤報告)

鏈接層:

  • MAC(media access control)

文件傳輸協議

 
FTP(File Transfer Protocol):是TCP/IP網絡上兩臺計算機傳送文件的協議,FTP是在TCP/IP網絡和INTERNET上最早使用的協議之一,它屬於網絡協議組的應用層。FTP客戶機可以給服務器發出命令來下載文件,上載文件,創建或改變服務器上的目錄。相比於HTTP,FTP協議要複雜得多。複雜的原因,是因爲FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。FTP是基於TCP協議的,因此iptables防火牆設置中只需要放開指定端口(21 + PASV端口範圍)的TCP協議即可。 
FTP工作模式:
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了一個1024+的隨機端口,你過來連接我”。於是服務器從20端口向客戶端的1024+隨機端口發送連接請求,建立一條數據鏈路來傳送數據。
PASV(Passive被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了一個1024+的隨機端口,你過來連接我”。於是客戶端向服務器的指定端口發送連接請求,建立一條數據鏈路來傳送數據。
PORT方式,服務器會主動連接客戶端的指定端口,那麼如果客戶端通過代理服務器鏈接到internet上的網絡的話,服務器端可能會連接不到客戶端本機指定的端口,或者被客戶端、代理服務器防火牆阻塞了連接,導致連接失敗。PASV方式,服務器端防火牆除了要放開21端口外,還要放開PASV配置指定的端口範圍。
 

SFTP(Secure File Transfer Protocol):安全文件傳送協議。可以爲傳輸文件提供一種安全的加密方法。SFTP與 FTP有着幾乎一樣的語法和功能。SFTP爲SSH的一部份,是一種傳輸文件到服務器的安全方式。在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。
複製代碼
 1 登陸遠程主機:  
 2 sftp user@host  
 3 針對本機的命令都加上l:  
 4 lcd,lpwd  
 5 將本機文件上傳到遠程:  
 6 put filename.txt [some/directory]  
 7 將當前文件夾下的文件上傳到遠程:  
 8 mput *.* // multiple  
 9 下載遠程文件到本地:  
10 get filename.file [some/directory]  
11 下載目錄下所有遠程文件到本地:  
12 mget *.* [some/directory]  
13 幫助:  
14 ?  
15 退出:  
16 bye/exit/quit  
複製代碼

SCP(Secure Copy):SCP就是Secure copy,是用來進行遠程文件複製的,並且整個複製過程是加密的。數據傳輸使用ssh,並且和使用和ssh相同的認證方式,提供相同的安全保證。 
複製代碼
 1 拷貝本地文件到遠程:  
 2 scp filename.txt user@host:some/directory  
 3 拷貝本地文件到遠程,使用指定端口:  
 4 scp -P 2234 filename.txt user@host:some/directory  
 5 拷貝多個文件到遠程home:  
 6 scp filename1.txt filename2.txt user@host:~  
 7 拷貝遠程文件到本地:  
 8 scp user@host:directory/filename.txt  /directory  
 9 拷貝遠程文件夾到本地:  
10 scp -r user@host:directory/folder  .  
11 拷貝遠程文件到遠程:  
12 scp user@host1:directory/filename.txt  user@host1:directory  
複製代碼

比較:
FTP 基於TCP來傳輸文件,明文傳輸用戶信息和數據。
SFTP 基於SSH來加密傳輸文件,可靠性高,可斷點續傳。
SCP 是基於SSH來加密拷貝文件,但要知道詳細目錄,不可斷點續傳。
 
 
分類: Linux, Windows
標籤: 文件傳輸, ftp, sftp, scp
0
0
 
 
 
« 上一篇: Notepad++快捷使用
» 下一篇: PHP開發編碼規範
posted @ 2018-04-03 16:42  X-Wolf  閱讀(15417)  評論(0 編輯 收藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章