91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行FileZilla的源代碼分析

發布時間:2021-11-02 16:14:06 來源:億速云 閱讀:171 作者:柒染 欄目:系統運維

這篇文章將為大家詳細講解有關如何進行FileZilla的源代碼分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

FileZilla是一種快速、可信賴的FTP客戶端以及服務器端開放源代碼程式,具有多種特色、直覺的接口。給大家分析下FileZilla的源代碼。

在進一步分析代碼之前,先復習一下FTP協議,下圖是FTP的結構圖。

如何進行FileZilla的源代碼分析

圖1

客戶端和服務器是通過兩個連接來進行通訊的:

一個是控制連接,也就是傳輸些控制命令,客戶端發出FTP命令,服務器給出應答,例如:USER,PASS命令等等。這個連接中,FTP服務器的端 口就是熟知的21端口,連接是由客戶端發起的,例如:ftp 192.168.0.1。有一點注意,用戶是通過“用戶接口”來操作的,一般的用戶接口是指cuteFTP這些FTP客戶端,或者ftp.exe這種命令 行程序,用戶在用戶接口使用的是ftp命令,如ls, get, cd等,這些ftp命令并不是真正與FTP服務器交互的命令,這些ftp命令還需要由“用戶協議解釋器”翻譯成真正的ftp協議命令,如USER, PASS,才能與服務器進行交互。

一個是數據連接,即真正的文件傳輸是在這個連接上進行的。服務器端的數據連接端口是20,客戶端的數據連接端口是隨機生成的。數據連接只在傳輸文件 時存在,文件傳完后,這個連接就斷了,如果需要再次傳送文件,會再次建立一個數據連接(客戶端的端口是隨機的,不一定是上次的那個)。數據連接的模式有兩 種,一種是主動方式,一種是被動方式,兩者的區別在于數據連接是由誰發起。

我們來看一個典型的FTP交互過程,用的是windows的ftp.exe程序,先建立一個連接,然后ls看一下文件列表,用get命令下 載一個文件,***quit關閉。下面-d選項可以顯示交互的細節,注意-->開頭的行是ftp客戶端發給FTP服務器的請求,3個數字開頭的行是服 務器的應答,如220, 331等開頭的行:

C:\>ftp -d localhost

Connected to dell.

220-FileZilla Server version 0.9.18 beta

220-written by Tim Kosse (Tim.Kosse@gmx.de)

220 Please visit http://sourceforge.net/projects/filezilla/

User (dell:(none)): robert

---> USER robert

331 Password required for robert

Password:

---> PASS test

230 Logged on

ftp> ls

---> PORT 127,0,0,1,4,173

200 Port command successful

---> NLST

150 Opening data channel for directory list.

Manual.txt

226 Transfer OK

ftp: 收到 175 字節,用時 0.00Seconds 175000.00Kbytes/sec.

ftp> get Manual.txt

---> PORT 127,0,0,1,4,174

200 Port command successful

---> RETR Manual.txt

150 Opening data channel for file transfer.

226 Transfer OK

ftp: 收到 17319 字節,用時 0.09Seconds 192.43Kbytes/sec.

ftp> quit

---> QUIT

221 Goodbye

C:\>

剛開始,客戶端發出建立連接的請求:

C:\>ftp -d localhost // 建立連接

Connected to dell. // 連接已建立

然后服務器發送歡迎信息,并要求輸入用戶名:

220-FileZilla Server version 0.9.18 beta

220-written by Tim Kosse (Tim.Kosse@gmx.de)

220 Please visit http://sourceforge.net/projects/filezilla/

User (dell:(none)):

客戶端輸入用戶名robert,然后回車:

---> USER robert // ftp.exe生成FTP命令:USER,發送給服務器

服務器要求輸入密碼:

331 Password required for robert

Password:

客戶端輸入密碼,然后回車:

---> PASS test // ftp.exe生成FTP命令:PASS,發送給服務器

服務器通過密碼驗證:

230 Logged on

客戶端鍵入ls命令

ftp> ls

ftp.exe生成FTP命令:PORT,告訴服務器客戶端的隨機端口是什么

---> PORT 127,0,0,1,4,173 // 127,0,0,1是IP地址,4 * 256 + 173 = 1197是隨機端口號

200 Port command successful // 服務器響應PORT命令

---> NLST // 客戶端發出NLST命令,要求列出文件列表

150 Opening data channel for directory list. // 服務器會在20端口與客戶端的1197端口建立數據連接,傳輸數據,注意ls命令的結果是在“數據連接”中傳輸的

Manual.txt // 只有一個文件

226 Transfer OK // FTP服務器響應,傳輸完畢

ftp: 收到 175 字節,用時 0.00Seconds 175000.00Kbytes/sec. // FTP客戶端顯示的傳輸結果

下面客戶端要求下載Manual.txt文件

ftp> get Manual.txt

---> PORT 127,0,0,1,4,174 // 告訴服務器客戶端新的隨機端口4 * 256 + 174 = 1198

200 Port command successful // // 服務器響應PORT命令

---> RETR Manual.txt // 告訴服務器下載Manual.txt文件

150 Opening data channel for file transfer. // 服務器會在20端口與客戶端的1198端口建立數據連接,傳輸數據

226 Transfer OK // FTP服務器響應,傳輸完畢

ftp: 收到 17319 字節,用時 0.09Seconds 192.43Kbytes/sec. // FTP客戶端顯示的傳輸結果

***客戶端退出

ftp> quit

---> QUIT // 發出QUIT命令

221 Goodbye // 服務器***響應

仔細閱讀上面的交互過程,可以發現,用戶手工輸入的一個FTP命令,可能會被ftp.exe處理成與FTP服務器的多次交互。如ls, get命令。

關于如何進行FileZilla的源代碼分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安溪县| 任丘市| 寿宁县| 五指山市| 琼中| 怀安县| 宁陕县| 扎兰屯市| 鸡西市| 中江县| 华池县| 江都市| 延安市| 铅山县| 留坝县| 盈江县| 藁城市| 宿松县| 万年县| 封丘县| 阳朔县| 韶山市| 尉氏县| 金乡县| 舞钢市| 正镶白旗| 东光县| 贡觉县| 宜章县| 明溪县| 沁源县| 彩票| 凤凰县| 林甸县| 托里县| 平武县| 运城市| 郯城县| 伽师县| 五大连池市| 沙田区|