Linux中的FTP服務
FTP服務
文件傳輸協議
FTPFile Transfer Protocol 早期的三個應用級協議之一
基於C/S結構
雙通道協議:數據和命令連接
數據傳輸格式:二進制(默認)和文本
兩種模式:服務器角度主動(PORT style):服務器主動連接
主動模式(PORT)--進行tcp三次握手
FTP 客戶端首 先和服務器的TCP 21端口建立連接,用來發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。PORT命令包含了客戶端用什麽端口接收數據。在傳送數據的時 候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。FTP server必須和客戶端建立一個新的連接用來傳送數據。
如下圖所示,用戶主機直接暴露在互聯網中,用戶連接FTP SERVER使用主動模式遵循以下一個過程:
用戶主機一個隨機端口連接FTP SERVER的TCP21端口進行協商;
用戶主機告訴FTP SERVER,我的XXXX端口已經打開,你可以放心大膽的連過來;
然後FTP SERVER就用TCP20端口連接用戶主機的XXXX端口,數據傳輸開始。
被動模式(PASV)--進行tcp三次握手
建立控制通道和Standard模式類似,但建立連接後發送Pasv命 令。服務器收到Pasv命令後,打開一個臨時端口(端口號大於1023小於65535)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務 器此端口,然後FTP服務器將通過這個端口傳送數據。
很多防火墻在 設置的時候都是不允許接受外部發起的連接的,所以許多位於防火墻後或內網的FTP服務器不支持PASV模式,因為客戶端無法穿過防火墻打開FTP服務器的 高端端口;而許多內網的客戶端不能用PORT模式登陸FTP服務器,因為從服務器的TCP 20無法和內部網絡的客戶端建立一個新的連接,造成無法工作。
當用戶主機前端多了一道防火墻(客戶機使用地址轉換接入互聯網),事情就變的復雜了,首先,主動模式是FTP SERVER連接客戶機,防火墻肯定不幹;即便樂意幹客戶機與服務器協商的XXXX端口也是隨機端口,你讓迷茫的防火墻情何以堪,這時就需要客戶端軟件使用被動模式主動連接防火墻,這麽一來正合防火墻的胃口。
客戶端使用被動模式遵循以下過程:
首先用戶使用隨機端口連接FTP SERVER的TCP 21端口進行協商;
FTP SERVER告訴客戶機:我的XXXX端口開放了,你連過來吧;
客戶機使用一個隨機端口連接FTP SERVER的XXXX端口傳輸數據。
服務器被動模式數據端口示例:
227 Entering Passive Mode (192,168,175,138,224,59)
服務器數據端口為:224*256+59
FTP軟件介紹
FTP服務器:
Wu-ftpd,Proftpd,Pureftpd,ServU,IIS
vsftpd:Very Secure FTP Daemon,CentOS默認FTP服務器
高速,穩定,下載速度是WU-FTP的兩倍
ftp.redhat.com數據:單機最多可支持15000個並發
客戶端軟件:
ftp,lftp,lftpget,wget,curl ftp -A ftpserver port -A主動模式 –p 被動模式 lftp –u username ftpserver lftp username@ftpserver lftpget ftp://ftpserver/pub/file gftp: GUI centos5 最新版2.0.19 (11/30/2008) filezilla,CuteFtp,FlashFXP,LeapFtp IE ftp://username:password@ftpserver
FTP服務狀態碼:
1XX:信息 125:數據連接打開 2XX:成功類狀態 200:命令OK 230:登錄成功 3XX:補充類 331:用戶名OK 4XX:客戶端錯誤 425:不能打開數據連接 5XX:服務器錯誤 530:不能登錄
用戶認證:
匿名用戶:ftp,anonymous,對應Linux用戶ftp 系統用戶:Linux用戶,用戶/etc/passwd,密碼/etc/shadow 虛擬用戶:特定服務的專用用戶,獨立的用戶/密碼文件 nsswitch:network service switch名稱解析框架 pam:pluggable authentication module 用戶認證 /lib64/security /etc/pam.d/ /etc/pam.conf
Linux中的FTP服務