1. 程式人生 > >Linux中的FTP服務

Linux中的FTP服務

使用 信息 直接 ice code cnblogs file 數據傳輸格式 pasv

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服務