1. 程式人生 > 其它 >SSH、TCP、UDP、FTP、SFTP協議

SSH、TCP、UDP、FTP、SFTP協議

目錄

一、SSH協議

1. SSH協議是什麼

# 簡介:
SSH即Secure Shell,安全外殼協議,簡稱SSH,SSH 是較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。是一種建立在應用層基礎上的安全協議,通過對密碼進行加密傳輸驗證,可在不安全的網路中對網路服務提供安全的傳輸環境,實現ssh客戶端和ssh伺服器端的連線,所以ssh是基於C/S結構的。

# 詳細:
# 注意:
SSH是由客戶端和服務端的軟體組成的,有兩個不相容的版本分別是:1.x和2.x。 用SSH 2.x的客戶程式是不能連線到SSH 1.x的服務程式上去的。OpenSSH 2.x同時支援SSH 1.x和2.x。

服務端是一個守護程序(daemon),他在後臺執行並響應來自客戶端的連線請求。服務端一般是sshd程序,提供了對遠端連線的處理,一般包括公共金鑰認證、金鑰交換、對稱金鑰加密和非安全連線。
客戶端包含ssh程式以及像scp(遠端拷貝)、slogin(遠端登陸)、sftp(安全檔案傳輸)等其他的應用程式。
他們的工作機制大致是本地的客戶端傳送一個連線請求到遠端的服務端,服務端檢查申請的包和IP地址再發送金鑰給SSH的客戶端,本地再將金鑰發回給服務端,自此連線建立。SSH 1.x和SSH 2.x在連線協議上有一些差異。
一旦建立一個安全傳輸層連線,客戶機就傳送一個服務請求。當用戶認證完成之後,會發送第二個服務請求。這樣就允許新定義的協議可以與上述協議共存。連線協議提供了用途廣泛的各種通道,有標準的方法用於建立安全互動式會話外殼和轉發(“隧道技術”)專有 TCP/IP 埠和 X11 連線。

2. SSH的優點

傳統的網路服務程式,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網路上用明文傳送口令和資料,別有用心的人非常容易就可以截獲這些口令和資料。而且,這些服務程式的安全驗證方式也是有其弱點的, 就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的伺服器接收你傳給伺服器的資料,然後再冒充你把資料傳給真正的伺服器。伺服器和你之間的資料傳送被“中間人”一轉手做了手腳之後,就會出現很嚴重的問題。通過使用SSH,你可以把所有傳輸的資料進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個額外的好處就是傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、PoP、甚至為PPP提供一個安全的"通道"

3. SSH協議是tcp還是udp,及其工作流程

ssh是應用層協議,它的傳輸層協議是tcp,所以在ssh登入之前必定會有tcp連線。其ssh協議建立連線過程如下:

1、tcp三次握手;

2、ssh協議版本協商;

3、伺服器端把公鑰發給客戶端;

4、加密演算法協商;

5、客戶端使用公鑰對伺服器端的密碼加密併發送給伺服器端;

6、伺服器端收到後用自己的私鑰解密後得到使用者名稱密碼和本地密碼對比,驗證成功允許登入,否則需要客戶端再次輸入密碼驗證。

3. SSH的驗證

# 從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基於口令的安全驗證)
只要你知道自己帳號和口令,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連線的伺服器就是你想連線的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到“中間人”這種方式的攻擊。

第二種級別(基於密匙的安全驗證)
需要依靠密匙,也就是你必須為自己建立一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連線到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公用密匙,然後把它和你傳送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就用公用密匙加密“質詢”(challenge)並把它傳送給客戶端軟體。客戶端軟體收到“質詢”之後就可以用你的私人密匙解密再把它傳送給伺服器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網路上傳送口令。
第二種級別不僅加密所有傳送的資料,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒

二、TCP、UDP協議

1. 什麼是TCP、UDP協議

# 簡介:
它們都是屬於傳輸層的用於資料傳輸的協議

# 不同的是:
TCP是傳輸控制協議,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。 舉例:打電話,需要雙方都接通,才能進行對話 特點:效率低,資料傳輸比較安全

UDP是資料報協議,是一種面向無連線的傳輸層通訊協議。 舉例:發簡訊,不需要雙方建立連線,But,資料報的大小應限制在64k以內 特點:效率高,資料傳輸不安全,容易丟包

2. 實現簡易的TCP通訊

# TCP程式設計 
TCP是基於位元組流的傳輸層通訊協議,所以TCP程式設計是基於IO流程式設計。 對於客戶端,我們需要使用Socket(python有socket庫)類來建立物件。對於伺服器端,我們需要使用ServerSocket來建立物件,通過物件呼叫accept()方法來進行監聽是否有客戶端訪問。

客戶端與伺服器端實現步驟 前提:建立一個專案,在專案中建立兩個模組(model),一個模組用來放客戶端相關程式碼,一個模組用來放伺服器端相關程式碼
    

3. 實現簡易的UDP通訊

# UDP程式設計 
UDP使用資料報進行資料傳輸,沒有客戶端與伺服器端之分,只有傳送方與接收方,兩者哪個先啟動都不會報錯 ,但是會出現資料丟包現象。傳送的內容有字數限制,大小必須限制在64k以內。

傳送方與接收方實現步驟: 前提:建立一個專案,在專案中建立兩個模組(model),一個模組用來放傳送方相關程式碼,一個模組用來放接收方相關程式碼

# 提示:
在執行程式時,先執行傳送方程式,還是先執行接收方程式都不會報錯,但是有可能會出現資料丟包,一般我們都先執行接收方的程式程式碼,再執行傳送方的程式程式碼

4. TCP、UDP詳情

點選直達

三、FTP、SFTP協議

1. FTP協議

  • 在實際專案開發中最常使用的檔案傳輸的方式有ftp和sftp兩種

1. 什麼FTP協議

# 介紹
提供一種在伺服器和客戶機之間上傳和下載檔案的有效方式;是基於TCP的傳輸,FTP採用雙TCP連線方式;支援授權與認證機制,提供目錄列表功能

FTP是TCP/IP協議組中的協議之⼀,TP協議由兩個部分組成:

1.FTP伺服器(⽤來儲存⽂件)
2.FTP客戶端(⽤戶可以使⽤FTP客戶端通過FTP協議訪問位於FTP伺服器上的資源)

# 詳解
是TCP/IP網路上兩臺計算機傳送檔案的協議,FTP是在TCP/IP網路和internet上最早使用的協議之一,它屬於網路協議組的應用層。FTP客戶機可以給伺服器發出命令來下載檔案,上傳檔案,建立或改變伺服器上的目錄。相比於HTTP,FTP協議要複雜得多。複雜的原因:因為FTP協議要用到兩個TCP連線,一個是命令鏈路,用來在FTP客戶端與伺服器之間傳遞命令;另一個是資料鏈路,用來上傳或下載資料。FTP是基於TCP協議的,因此iptables防火牆設定中只需要放開指定埠的TCP協議即可

# FTP的兩個機制
ASPF機制(主動模式下被防火牆限制)和長會話機制(檔案傳輸到99%時中斷)

2. FTP的傳輸模式

  • FTP有兩種傳輸模式
    • 主動模式(Port)
    • 被動模式(Passive)
預設情況下FTP協議使⽤TCP端⼝中的20和21這兩個端⼝。21端⼝⽤於傳輸控制資訊,⽽是否使⽤20作為傳輸資料的端⼝與FTP使⽤的
傳輸模式有關,如果採⽤被動模式則具體使⽤哪個端⼝要伺服器端和客戶端協商決定。FTP傳輸模式分為以下兩種:
  • 模式圖解
  • 主動模式圖解註釋

    • FTP客戶端⾸先和FTP伺服器的TCP21端⼝建⽴連線,通過這個通道傳送命令,客戶端需要接收資料的時候在這個通道上傳送PORT命令。PORT命令包含了客戶端⽤什麼端⼝接收資料。在傳送資料的時候,伺服器端通過⾃⼰的TCP 20端⼝連線⾄客戶端的指定端⼝傳送資料
      
  • 被動模式圖解註釋

    • 在建⽴控制通道與主動模式相似,但建⽴連線後是Pasv命令。FTP伺服器收到Pasv命令後便隨機開啟⼀個⾼端端⼝(端⼝號⼤於1024)並且通知客戶端在這個端⼝上傳送資料的請求,客戶端連線FTP伺服器此端⼝,通過三次握⼿建⽴通道,然後FTP伺服器將通過這個端⼝進⾏資料的傳送
      

(1)主動模式

主動方式也稱為PORT方式,是FTP協議最初定義的資料傳輸連線方式。

主要特點是:

1、FTP客戶端通過向FTP伺服器傳送PORT命令,告訴伺服器該客戶端用於傳輸資料的臨時埠號

2、當需要傳送資料時,伺服器通過TCP埠號20與客戶端的臨時埠建立資料傳輸通道,完成資料傳輸;在建立資料連線的過程中,由伺服器主動發起連線,因此被稱為主動方式。


(2)被動模式

被動方式也稱為PASV方式,被動方式的主要特點是:

1、FTP客戶端通過向FTP伺服器傳送PASV命令,告訴伺服器進入被動方式。伺服器選擇臨時埠號並告知客戶端

2、當需要傳送資料時,客戶端主動與伺服器的臨時埠號建立資料傳輸通道,完成資料傳輸;在整個過程中,由於伺服器總是被動接收客戶端的資料連線,因此被稱為被動方式

3. FTP使用注意點--防火牆

很多防火牆在設定的時候都是不允許接受外部發起的連線的,所以許多位於防火牆侯或者內網的FTP伺服器不支援PASV模式,因為客戶端無法穿過防火牆開啟FTP伺服器的高階埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連線,造成無法工作

4. FTP資料傳輸方式

FTP資料傳輸方式:ASCII模式和二進位制模式

ASCII模式用於傳輸文字。傳送端的字元在傳送前被轉換成ASCII碼格式之後進行傳輸,接收端收到之後再將其轉換成字元。

二進位制模式常用於傳送圖片檔案和程式檔案。傳送端在傳送這些檔案時無需轉換格式,即可傳輸

5. FTP使用的埠

  • 控制連線(即登入和傳送命令相關,非資料傳輸的都屬於控制連線)

    控制連線使用TCP埠號21;用於在FTP客戶端和FTP伺服器之間傳輸FTP控制命令及命令執行資訊;控制連線在整個FTP會話期間一直保持開啟
    
  • 資料連線(傳輸資料時的埠)

    資料連線使用TCP埠號(主動模式下20,被動模式下隨機);用於傳輸資料,包括資料上傳、下載、檔案列表傳送等。資料傳輸結束後資料連線將終止
    

2. SFTP協議

1. 什麼是SFTP協議

# 簡介:
可以為傳輸檔案提供一種安全的網路的加密方法。SFTP 是SSH的其中一部分,是一種客戶端傳輸檔案至服器的安全方式

# 詳解:
SFTP是SSH File Transfer Protocol的縮寫,安全檔案傳送協議,可以為傳輸檔案提供一種安全的加密方法。SFTP與FTP有著幾乎一樣的語法和功能。SFTP為SSH的一部分,是一種傳輸檔案到伺服器的安全方式。在SSH軟體包中,已經包含了一個叫作SFTP的安全檔案傳輸子系統,SFTP本身沒有單獨的守護程序,它必須使用sshd守護程序來完成相應的連線操作,所以從某種意義上來說,SFTP並不像是一個伺服器程式,更像是一個客戶端程式。SFTP同樣是使用加密傳輸認證資訊和傳輸的資料,所以使用SFTP是非常安全的。

但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網路安全性要求更高時,可以使用SFTP代替FTP

2. SFTP與FTP的區別

(1)連結方式

FTP使用TCP埠21上的控制連線建立連線。
SFTP是在客戶端和伺服器之間通過SSH協議(TCP埠22)建立的安全連線來傳輸檔案

(2)安全性

SFTP使用加密傳輸認證資訊和傳輸的資料,所以使用SFTP相對於FTP是非常安全的

(3)效率

SFTP這種傳輸方式使用了加密解密技術,所以傳輸效率比普通的FTP要低得多