首先需要先簡單介紹一下網路七大層:
應用層 通訊型別:E-mail、檔案傳輸、客戶端/伺服器
表示層 加密、資料轉換:ASCII轉換為EBCDIC、BCD轉換為二進位制等
會話層 開始,停止會話。維持秩序
傳輸層 確保傳送整個檔案或訊息
網路層 根據網路地址將資料路由到不同的區域網和廣域網
資料鏈路層 通過站點地址從節點傳送資料包
物理層 電訊號和光纖
網路七大層,在程式設計運用最多的是TCP/IP四層參考模型:物理鏈路層、網路層、傳輸層、應用層
常見的應用層有:
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網路上最早使用的協議之一,它屬於網路協議組的應用層。FTP客戶機可以給伺服器發出命令來下載檔案,上載檔案,建立或改變伺服器上的目錄。相比於HTTP,FTP協議要複雜得多。複雜的原因,是因為FTP協議要用到兩個TCP連線,一個是命令鏈路,用來在FTP客戶端與伺服器之間傳遞命令;另一個是資料鏈路,用來上傳或下載資料。FTP是基於TCP協議的,因此iptables防火牆設定中只需要放開指定埠(21 + PASV埠範圍)的TCP協議即可。
SSH(Secure Shell):由 IETF 的網路工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用 SSH 協議可以有效防止遠端管理過程中的資訊洩露問題。SSH是由客戶端和服務端的軟體組成的:服務端是一個守護程式(daemon),他在後臺執行並響應來自客戶端的連線請求。服務端一般是sshd程式,提供了對遠端連線的處理,一般包括公共金鑰認證、金鑰交換、對稱金鑰加密和非安全連線; 客戶端包含ssh程式以及像scp(遠端拷貝)、slogin(遠端登陸)、sftp(安全檔案傳輸)等其他的應用程式。
從客戶端來看,SSH提供兩種級別的安全驗證:第一種級別(基於口令的安全驗證); 第二種級別(基於密匙的安全驗證)。SSH 主要有三部分組成: 傳輸層協議 [SSH-TRANS] ;使用者認證協議 [SSH-USERAUTH] ;連線協議 [SSH-CONNECT]。
SFTP(Secure File Transfer Protocol):安全檔案傳送協議。可以為傳輸檔案提供一種安全的加密方法。SFTP與 FTP有著幾乎一樣的語法和功能。SFTP為SSH的一部份,是一種傳輸檔案到伺服器的安全方式。在SSH軟體包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全檔案傳輸子系統,SFTP本身沒有單獨的守護程式,它必須使用sshd守護程式(埠號預設是22)來完成相應的連線操作,所以從某種意義上來說,SFTP並不像一個伺服器程式,而更像是一個客戶端程式。SFTP同樣是使用加密傳輸認證資訊和傳輸的資料,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網路安全性要求更高時,可以使用SFTP代替FTP。
SCP(Secure Copy):SCP就是Secure copy,是用來進行遠端檔案複製的,並且整個複製過程是加密的。資料傳輸使用ssh,並且和使用和ssh相同的認證方式,提供相同的安全保證。
比較:
FTP 基於TCP來傳輸檔案,明文傳輸使用者資訊和資料。
SFTP 基於SSH來加密傳輸檔案,可靠性高,可斷點續傳。
SCP 是基於SSH來加密拷貝檔案,但要知道詳細目錄,不可斷點續傳。