1. 程式人生 > >文件傳輸協議FTP、SFTP和SCP

文件傳輸協議FTP、SFTP和SCP

tle 發出 自帶 multi lai ans iptables 資料 aid

網絡通信協議分層

應用層:

  • 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)

文件傳輸協議:

參考資料:http://desert3.iteye.com/blog/1684130

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配置指定的 端口範圍。

使用Windows自帶的FTP服務 使用FileZilla
SFTP(Secure File Transfer Protocol):安全文件傳送協議。可以為傳輸文件提供一 種安全的加密方法。SFTP與 FTP有著幾乎一樣的語法和功能。SFTP為SSH的一部份,是一種傳輸文件到服務器的安全方式。在SSH軟件包中,已經包含了一個叫作 SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來 完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據, 所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可 以使用SFTP代替FTP。
[plain] view plain copy
  1. 登陸遠程主機:
  2. sftp [email protected]
  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相同的認證方式,提供相同的安全保證。
[plain] view plain copy
  1. 拷貝本地文件到遠程:
  2. scp filename.txt [email protected]:some/directory
  3. 拷貝本地文件到遠程,使用指定端口:
  4. scp -P 2234 filename.txt [email protected]:some/directory
  5. 拷貝多個文件到遠程home:
  6. scp filename1.txt filename2.txt [email protected]:~
  7. 拷貝遠程文件到本地:
  8. scp [email protected]:directory/filename.txt /directory
  9. 拷貝遠程文件夾到本地:
  10. scp -r [email protected]:directory/folder .
  11. 拷貝遠程文件到遠程:
  12. scp [email protected]:directory/filename.txt [email protected]:directory

比較:
FTP 基於TCP來傳輸文件,明文傳輸用戶信息和數據。 SFTP 基於SSH來加密傳輸文件,可靠性高,可斷點續傳。 SCP 是基於SSH來加密拷貝文件,但要知道詳細目錄,不可斷點續傳。

文件傳輸協議FTP、SFTP和SCP