sftp是ssh內含的協議,只要sshd服務器啟動了,它就可用,它本身不需要ftp服務器啟動。 FTP服務器和客戶端要進行文件傳輸,就需要通過端口來進行。FTP協議需要的端口一般包括兩種:
控制鏈路--------TCP端口21
所有你發往FTP服務器的命令和服務器反饋的指令都是通過服務器上的21端口傳送的。
數據鏈路--------TCP端口20
數據鏈路主要是用來傳送數據的,比如客戶端上傳、下載內容,以及列目錄顯示的內容等。 FTP服務器和客戶端要進行文件傳輸,就需要通過端口來進行。
【 FTP連接的兩種方式】:
在數據鏈路的建立上,FTP Server 為了適應不同的網絡環境,支持兩種連接模式:主動模式(Port)和被動模式(Pasv)。其實這兩種連接模式主要是針對數據鏈路進行的,和控制鏈路無關。
主動模式
主動模式是這樣工作的:客戶端把自己的高位端口和服務器端口21建立控制鏈路。所有的控制命令比如Is或get都是通過這條鏈路傳送的。
當客戶端需要服務器端給它傳送數據時,客戶端會發消息給服務器端,告訴自己的位置和打開的高位端口(一般大於1024的端口都就叫高位端口),等候服務器 的20端口和客戶端打開的端口進行連接,從而進行數據的傳輸。當服務器端收到信息后,就會和客戶端打開的端口連接,這樣數據鏈路就建立起來了。
采用主動模式連接服務器的客戶端,當它位於NAT或者防火牆的保護之后時會碰到連接失敗的問題。這是因為當防火牆接到服務器發送過來的信息的時候,並不知道應該發送給內部網絡中的哪一台客戶端造成的。
被動模式
被動模式是這樣工作的:當客戶端發送數據請求后,服務器也會發信息給客戶端,告訴客戶端:服務器在本地打開了一個高位端口P,你現在來連接我吧。當客戶端收到該信息時,就會去連接服務器端的端口P,連接成功后,數據鏈路就建立了。
從上面的解釋中我們可以看到,兩種模式主要的不同是數據連接建立的不同。對於Port模式,是客戶端在本地打開一個端口等服務器去連接建立數據連接,而Pasv模式就是服務器打開一個端口等待客戶端去建立一個數據連接。