成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

FileZilla FTP服務器源代碼分析(2)

系統(tǒng) Windows
FileZilla FTP服務器源代碼分析:FileZilla是一款免費而且開源的FTP工具。包括FileZilla Client,F(xiàn)ileZilla Server兩個版本。FileZilla Server只提供了windows系統(tǒng)下的版本,我們要將本地的網(wǎng)站網(wǎng)頁文件上傳到網(wǎng)站服務器,或從服務器下載網(wǎng)頁文件,只需FileZilla Client客戶端版本就可以了。FileZilla FTP服務器源代碼分析

FileZilla FTP服務器源代碼分析:FileZilla是一款免費而且開源的FTP工具。包括FileZilla Client,F(xiàn)ileZilla Server兩個版本。FileZilla Server只提供了windows系統(tǒng)下的版本,我們要將本地的網(wǎng)站網(wǎng)頁文件上傳到網(wǎng)站服務器,或從服務器下載網(wǎng)頁文件,只需FileZilla Client客戶端版本就可以了。FileZilla FTP服務器源代碼分。在進一步分析代碼之前,先復習一下FTP協(xié)議,下圖是FTP的結(jié)構(gòu)圖。

  

 

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

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

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

  我們來看一個典型的FTP交互過程,用的是windows的ftp.exe程序,先建立一個連接,然后ls看一下文件列表,用get命令下 載一個文件,***quit關閉。下面-d選項可以顯示交互的細節(jié),注意-->開頭的行是ftp客戶端發(fā)給FTP服務器的請求,3個數(shù)字開頭的行是服 務器的應答,如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 字節(jié),用時 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 字節(jié),用時 0.09Seconds 192.43Kbytes/sec.

  ftp> quit

  ---> QUIT

  221 Goodbye

  C:\>

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

  1.   C:\>ftp -d localhost // 建立連接  
  2.  
  3.   Connected to dell. // 連接已建立  
  4.  

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

  1.   220-FileZilla Server version 0.9.18 beta  
  2.  
  3.   220-written by Tim Kosse (Tim.Kosse@gmx.de)  
  4.  
  5.   220 Please visit http://sourceforge.net/projects/filezilla/  
  6.  
  7.   User (dell:(none)):  
  8.  

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

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

  服務器要求輸入密碼:

  331 Password required for robert

  Password:

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

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

  服務器通過密碼驗證:

  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 // 客戶端發(fā)出NLST命令,要求列出文件列表

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

  Manual.txt // 只有一個文件

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

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

  下面客戶端要求下載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端口建立數(shù)據(jù)連接,傳輸數(shù)據(jù)

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

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

  ***客戶端退出

  ftp> quit

  ---> QUIT // 發(fā)出QUIT命令

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

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

  要想詳細了解FTP命令的細節(jié),可以參見FTP的RFC,或者相關的資料,不過由于我們閱讀源代碼的主要目的不是研究FTP細節(jié),而在于掌握高并發(fā)的網(wǎng)絡編程的技術,所以,我們只以上面這個簡單的FTP交互來看一下,在代碼中這個過程是如何實現(xiàn)的。

【編輯推薦】

  1. FileZilla FTP服務器源代碼分析(1)
  2. FileZilla FTP服務器源代碼分析(2)
  3. FileZilla FTP服務器源代碼分析(4)
  4. FileZilla FTP服務器源代碼分析(5)
責任編輯:zhaolei 來源: CSDN網(wǎng)
相關推薦

2011-03-01 16:25:37

FileZilla

2011-03-01 16:32:58

FileZilla

2011-03-01 16:01:08

FileZilla

2011-02-23 14:16:43

FileZilla

2011-03-07 13:36:16

2011-02-23 14:46:21

FileZilla

2011-02-23 14:54:58

FileZilla

2011-02-23 14:39:27

FileZilla

2011-02-23 15:11:27

FileZilla

2011-02-23 15:33:42

FileZilla

2011-02-23 14:26:28

FileZilla

2011-02-23 15:21:06

FileZilla

2011-02-23 15:26:01

FileZilla

2011-02-23 13:47:33

FileZilla

2021-11-01 07:15:36

服務器FTPFileZilla

2011-01-11 13:12:48

FileZill服務器軟件FTP工具

2011-03-02 09:00:26

2010-07-01 14:22:02

配置FTP服務器

2011-03-07 17:04:02

ProftpdFTP

2019-02-26 16:20:52

FTP服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美成人精品一区二区男人看 | 阿v视频在线观看 | 欧美一区两区 | 国产一级一级 | 精品国产乱码久久久久久闺蜜 | 久久精品视频91 | 天天玩夜夜操 | 韩日在线观看视频 | 国产高清亚洲 | 久久综合狠狠综合久久综合88 | 国产99久久精品一区二区永久免费 | 污视频在线免费观看 | h视频在线观看免费 | 亚洲精品久久久一区二区三区 | 成人免费视频播放 | 最新黄色毛片 | www.亚洲精品 | 亚洲国产二区 | 亚洲精品高清视频在线观看 | www.日韩 | 午夜影院在线观看 | 国产欧美精品区一区二区三区 | 91免费观看在线 | 国产在线一区二区三区 | 欧美日韩一二区 | 乱码av午夜噜噜噜噜动漫 | a网站在线观看 | 蜜桃视频在线观看免费视频网站www | 国产美女视频黄a视频免费 国产精品福利视频 | 成人黄色在线 | 成人免费一区二区三区视频网站 | 日日噜噜夜夜爽爽狠狠 | 日批日韩在线观看 | 午夜日韩 | 国产精品一卡 | 国产韩国精品一区二区三区 | 精品网| 久久日本 | 中文字幕成人网 | 91看片在线观看 | 久久久精品一区 |