2018年6月17日 星期日

FTP&FTPS傳輸差異

FTP屬於TCP的一種通訊協定,但FTP需要兩個Port作為通訊傳輸。一個用來傳輸client到server的指令,另一個用來傳輸資料。
在未加密的部分,一般指令的Port會設定為21,資料部分設定為22。
反之,在加密部分,指令的Port會設定為990,資料部分設定為991。

以上都是處於一般情況下,但FTP傳輸模式(資料傳輸前的指令不同)又分為主動模式(Active Mode)和被動模式(Passive Mode),
而加密部分分為外顯式加密(Explicit SSL)和隱含式加密(Implicit SSL)。

首先下圖顯示一般FTP傳輸方式並且未加密的情況下的概念圖

pic01 1.client端先發指令給server
2.server會回應指令資訊後
3.client端向server要求data傳輸
4.server端開始傳輸data給client端


以上為FTP基本傳輸方式和流程。


FTP又分為主動模式和被動模式,兩個分別以發出的指令不同所得到server的回應而不同。
下圖是以主動模式傳輸data

pic02
由上圖可知,client端當需要下載檔案時,發的指令為PORT 172,16,1,137,192,134,172,16,1,137前面四組數字代表server IP,而後面兩組數字192,134,為server需要連線的Port,算法為(192*256)+134,這時候server端就會主動連線到client端,並且開始做data傳輸。

然而被動模式可以由下圖可知
  pic03

被動模式client發的指令為PASV,server會回應227 Entering Passive Mode (172,16,1,137,193,19),這時跟主動模式算法一樣,但卻是由client端連線到server端,然後開始傳輸data。
以上兩種方法就是主動和被動模式,差別在於指令不同,Data傳輸時誰連誰的不同。
FTPS加密是以SSL為加密方式,跟未加密差別在於使用Port的不同,一般FTPS會使用990這個Port來做為指令的傳輸。
而主動和被動模式就跟未加密的方式一樣,但在加密部分會分為外顯式加密(Explicit SSL)和隱含式加密(Implicit SSL)。
以下圖顯示外顯示加密的方式

pic03
 
上圖可以發現在server回應220結束後,client端發出了AUTH TLS的指令,代表告訴server即將作SSL加密,則進行handshake。
之後任何傳輸都經過加密以確保資料安全性。

隱含式加密,則是在一開始連線時就做了SSL加密並不是等server回應220才開始加密。兩者差別在於client端何時宇server做SSL加密通訊。

沒有留言:

張貼留言