㈠ ftp問題。
1、 簡介
在絕大多數的LINUX發行版本中都選用的是WashingtonUniversity FTP,它是一個著名的FTP伺服器軟體,一般簡稱為wu-ftp。它功能強大,能夠很好地運行於眾多的UNIX操作系統,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP伺服器,一大半以上採用了它。wu-ftp擁有許多強大的功能,很適於吞吐量較大的FTP伺服器的管理要求:
· 在用戶下載文件的同時對文件做自動的壓縮或解壓縮操作;
· 對不同網路上的機器做不同的存取限制;
· 記錄文件上載和下載時間;
· 顯示傳輸時的相關信息,方便用戶及時了解目前的傳輸動態;
· 設置最大連接數,提高了效率,有效地控制了負載。
2、 所需資源
2.2.1 所需包
RedHat6.2 伺服器安裝
2.2.2 所需配置文件
/etc/ftpusers
/etc/ftpaccess
/var/run/ftp.pids
/etc/ftpconversions
/var/log/xferlog
/etc/ftpgroups
/etc/ftphosts
2.2.3 相關命令
ftpd FTP伺服器程序
ftpshut 用於關閉FTP伺服器程序
ftpcount 顯示目前在線人數
ftpwho 查看目前FTP伺服器的連接情況
ckconfig 檢查FTP伺服器的設置是否正確
ftprestart 重新啟動FTP服務
2.2.4 相關目錄
/home/ftpd/bin 存放一些供FTP用戶使用的可執行文件
/home/ftpd/etc 存放一些供FTP用戶使用的配置文件
/home/ftpd/pub 存放供下載的信息
/home/ftpd/incoming 存放供上載信息的空間
3、 配置方案
/etc/ftpaccess
說明: ftp許可權配置文件
源文件:
guestuser weboa# FTP用戶class all real,guest,anonymous *class weboa guest *# 格式:class [類名] [real/guest/anonymous] [IP地址] 功能: 這個指令的功能設定FTP伺服器上用戶的類別。並可對客戶端的IP 地址進行限制,允許某部分的IP地址或全部的IP地址訪問。而在FTP 伺服器上的用戶基本上可以分為以下三類: real 在該FTP伺服器有合法帳號的用戶; guest 有記錄的匿名用戶; anonymous 許可權最低的匿名用戶 email [email protected] 5# 格式:loginfails [次數] 功能:設定當用戶登錄到FTP伺服器時,允許用戶輸錯密碼的次數。 readme README* loginreadme README* cwd=*message /welcome.msg loginmessage .message cwd=*# 格式:message [文件名稱] [指令] 功能:當用戶執行所指定的指令時,系統將指定的文件內容顯示出來。 compress yes all# 格式:compress [yes/no] [類別] 功能:設置哪一個類別的用戶可以使用compress(壓縮)功能。 tar yes all# 格式:tar [yes/no] [類別] 功能:設置哪一個類別的用戶可以使用tar(歸檔)功能。 chmod no guest,anonymous# 格式:chmod [yes/no] [real/anonymous/guest] 功能:設置是否允許指定用戶使用chmod命令更改文件許可權。默認是允許。delete yes all# 格式:delete [yes/no] [real/anonymous/guest] 功能:設置是否允許指定用戶使用delete命令刪除文件。默認是允許。overwrite yes guest# 格式:overwrite [yes/no] [real/anonymous/guest] 功能:設置是否允許指定用戶覆蓋同名文件。默認是允許。rename yes guest# 格式:rename [yes/no] [real/anonymous/guest] 功能:設置是否允許指定用戶使用rename命令來為文件改名。默認是允許。 log transfers anonymous,real inbound,outbound# 格式:log transfers [real/guest/anonymous] [inbound/outbound] 功能:設置哪些用戶的上載(inbound)和下載(outbound)操作做日誌。shutdown /etc/shutmsg# 格式:shutdown [文件名] 功能: FTP伺服器關閉的時間可以設置在後面所指定的文件中,當設 置的時間一到,便無法登錄FTP伺服器了,要恢復的話只有將 這個文件刪掉。而這個文件必 須由指令/bin/ftpshut來生成。 passwd-check rfc822 warn# 格式:passwd-check [none/trivial/rfc822] [enforce/warn] 功能:設定對匿名用戶anonymous的密碼使用方式。 none 表示不做密碼驗證,任何密碼都可以登錄; trival 表示只要輸入的密碼中含有字元"@"就可以登錄; rfc822 表示密碼一定要符合RFC822中所規定的E-Mail格式才 能登錄; enfore 表示輸入的密碼不符合以上指定的格式就不讓登錄; warn 表示密碼不符合規定時只出現警告信息,仍然能夠登錄。limit remote 32 Any /etc/ftpd/toomany.msg# 格式:limit [類別] [人數] [時間] [文件名] 功能:這個指令的功能為設置指定的時間內指定的類別允許連接的 指定人數上限。當達到上限的時候,顯示指定文件的內容。upload /home/ftpd * noupload /home/ftpd /pub yes anonymous 0644 dirs# 格式:upload [根目錄] [上載目錄] [yes/no] [用戶] [許可權] [dirs/nodirs] 功能:對可以上載的目錄進行更加詳細的設置。 alias incoming /home/ftp/incoming# 格式:alias [目錄別名] [目錄名] 功能:給指定目錄設置一個別名,在切換目錄時就可以使用較短的目錄別名。
/etc/ftpusers
說明:FTP用戶黑名單,為了安全考慮,需要禁止以下用戶使用FTP
源文件:
4、 小結
在眾多的網路應用中,FTP(File Transfer porotocol)有著非常重要的地位。在Internet中一個十分重要的資源就是軟體資源。而各種各樣的軟體資源大多數都是放在FTP伺服器中的。可以說,FTP與WEB服務幾乎占據了整個Internet應用的80%以上。
FTP服務可以根據服務對象的不同分為兩類:一類是系統FTP伺服器,它只允許系統上的合法用戶使用;另一類是匿名FTP伺服器,Anonymous FTP Server,它使用任何人都可以登錄到FTP伺服器上去獲取文件。
如果你在安裝LINUX系統的時候,在選擇啟動進程的時候選擇?quot;ftpd"這一項的話,安裝完LINUX系統後,它已經將一個默認的FTP伺服器安裝到系統中去了。我們已經可以利用它來實現系統FTP伺服器的功能了。我們只需在此基礎上根據我們的需要進行一些個性化設定就可以了。
㈡ 簡述FTP的工作原理
FTP的工作原理:FTP 採用 Internet 標准文件傳輸協議 FTP 的用戶界面, 向用戶提供了一組用來管理計算機之間文件傳輸的應用程序。
開發任何基於 FTP 的客戶端軟體都必須遵循 FTP 的工作原理,FTP 的獨特的優勢同時也是與其它客戶伺服器程序最大的不同點就在於它在兩台通信的主機之間使用了兩條 TCP 連接,一條是數據連接,用於數據傳送;
另一條是控制連接,用於傳送控制信息(命令和響應),這種將命令和數據分開傳送的思想大大提高了 FTP 的效率,而其它客戶伺服器應用程序只有一條 TCP 連接。
(2)ftprfc擴展閱讀:
FTP 的目標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。它能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。
但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數據之間的時間,會非常長;並且不時的必須執行一些冗長的登錄進程。
FTP 在網際網路網路上歷史是最悠久的網路工具,從 1971 年由 A KBHUSHAN 提出第一個 FTP 的RFC(RFC114),FTP 憑借其獨特的優勢一直都是網際網路中最重要、最廣泛的服務之一。
㈢ 現在的雲存儲和ftp有什麼區別都是文件傳輸協議啊!區別在於哪裡
說白了就是雲存儲是把所有人的文件都放在一個ftp上,可以節省資源,統計數據等,相當於公共汽車,平常的FTP只保存你少數人的資源,相當於私家車
如下為網路
雲存儲是在雲計算(cloud computing)概念上延伸和發展出來的一個新的概念,是指通過集群應用、網格技術或分布式文件系統等功能,將網路中大量各種不同類型的存儲設備通過應用軟體集合起來協同工作,共同對外提供數據存儲和業務訪問功能的一個系統。 當雲計算系統運算和處理的核心是大量數據的存儲和管理時,雲計算系統中就需要配置大量的存儲設備,那麼雲計算系統就轉變成為一個雲存儲系統,所以雲存儲是一個以數據存儲和管理為核心的雲計算系統。
㈣ FTP可以有多個TCP連接用於多個並行文件傳輸
盡管理論上可以讓FTP伺服器支持多個並發傳輸,但它不受 RFC 或任何已知的實現。
該塊很簡單,控制連接在接收到傳輸請求後,在數據傳輸完成之前不會返回最終狀態或接受新命令。因此,盡管您可以排隊另一個傳輸請求,但實際上伺服器不會處理它,直到當前的傳輸請求完成。
如果您想要多個文件傳輸,只需記錄日誌進入FTP伺服器多次使用不同的程序或命令行窗口,並且每個都啟動一次傳輸。
㈤ 如何非同步讀取FTP
一:開發背景
由於需要對多個伺服器發布大的數據包,所以自己在LINUX用C語言,開發了一個傳送器工具。因為上傳時需要支持斷點續傳,所以自己參考ftp-rfc959和一些文章開發了這個支持斷點續傳的上傳工具。整個工具分兩部分開發的:一是支持斷點續傳的Ftp工具,包含下載和上傳功能。二是同時對多個伺服器發布不同數據包的傳送器工具。本文只是對斷點續傳的商船和下載作探討。
二:實現
其實Ftp上傳下載的實現很簡單,首先Ftp伺服器端要支持文件的定位,
然後就是通過建立的Socket用Ftp伺服器命令和伺服器交互.
有些也可以通過Socket做自己的客戶端和伺服器端,但是有些伺服器是自己能管理控制的,而且原來自己也寫過一些這樣C/S模式的工具,簡單消息的傳送接收還不錯。
但用來傳輸文件效率很低,比文件傳送協議FTP(File Transfer Protocol)差的太多。 利用Ftp的服務端可以省去伺服器端的開發,而且可以向任何開放Ftp服務的伺服器上傳送文件,可以不考慮對方安裝的
是什麼的操作系統。
三:FTP
文件傳送協議 FTP 只提供文件傳送的一些基本的服務,它使用 TCP 可靠的運輸服務。FTP 的主要功能是減少或消除在不同操作系統下處理文件的不兼容性。
FTP 使用客戶伺服器方式。
一個 FTP 伺服器進程可同時為多個客戶進程提供服務。FTP的伺服器進程由兩大部分組成:一個主進程,負責接受新的請求;另外有若干個從屬進程,負責處理單個請求。
A、通常的方式:
控制連接在整個會話期間一直保持打開,FTP 客戶所發出的傳送請求通過控制連接發送給控制進程,但控制連接並不用來傳送文件,實際用於傳輸文件的是「數據連接」。
控制進程在接收到 FTP 客戶發送來的文件傳輸請求後就創建一個「數據傳送進程」和一個「數據連接」,並將數據連接連接到「數據傳送進程」,數據傳送進程實際完成文件的傳送,在傳送完畢後關閉「數據傳送連接」並結束運行
當客戶進程向伺服器進程發出建立連接請求時,要尋找連接伺服器進程的熟知埠(21),同時還要告訴伺服器進程自己的另一個埠號碼,用於建立數據傳送連接。接著,伺服器進程用自己傳送數據的熟知埠(20)與客戶進程所提供的埠號碼建立數據傳送連接。
B、 被動模式:
FTP客戶端發出的連接請求,一般通過伺服器的21號埠建立控制連接,專門用來傳輸一些字元串命令和響應信息。控制命令通道一定是由客戶端向伺服器的連接(默認的埠是21,也可以指定埠,這要看伺服器的設置)。
PASV:通過控制通道通過發送PASV 伺服器命令到 FTP伺服器。請求建立被動模式數據連接通道。 (客戶端的命令 passive)
伺服器返回連接的信息(227 Entering Passive Mode (70,0,10,62,120,18) )地址和埠。埠=最後第二位乘256再加上最後一位(120*256+18)。(注意埠設為0的情況) 如: *f_port = atoi(port_1) * 256 + atoi(port_2);
伺服器端和客戶端身份轉換,原客戶端在本地建立監聽,監聽來自原伺服器遠端的連接請求建立數據連接通道。
四、 實現方法:
A、下載:
1、向伺服器發送「REST + 本地文件長度」,告訴伺服器,客戶端要斷點下載了。這時伺服器還不知道客戶端要下載的文件名;
2、向伺服器發送"RETR + 文件名",通知伺服器要下載的文件名,這時伺服器開始定位文件指針讀文件並發送數據。
3、客戶端定位本地文件指針偏移到文件末尾;
4、兩端的准備工作都做完了以後,客戶端創建socket,以被動或非被動方式建立數據鏈接,循環調用recv接收文件數據並追加到本地文件末尾;
B、上傳:
1、獲取伺服器上和本地要上傳文件的同名文件大小;
2、向伺服器發送「APPE + 文件名」,通知伺服器,從數據通道發送給你的數據要附加到這個文件末尾。
3、定位本地文件指針,文件指針偏移到指定位置,這個位置與FTP伺服器上文件大小相同的位置。
4、從文件指針處讀數據並發送。
C、Ftp伺服器命令
我們平時使用的命令,大多是客戶端的。伺服器端的命令可以參考下面:
命令 描述
ABOR 中斷數據連接程序 ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組 APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄 CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件 HELP <command> 返回指定命令信息 LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表 MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄 NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認 PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接 PORT <address> IP 地址和兩位元組的埠 ID PWD 顯示當前工作目錄 QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接 REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件 RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名 RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數 SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息 STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上 STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統 TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名
D、伺服器返回的部分數字代碼含義
125 Data connection already open; Transfer starting.
226 Transfer complete.
227 Entering Passive Mode (127,0,0,1,4,18).
230 User xxxxx logged in.
331 Password required for xxxxx.
425 Can』t open data connection.
226 Closing data connection.
200 return a state of TYPE or MODE commond
220 connection state
五、關於Socket
關於Socket編程有很多參考資料,這里不作詳細說明
Socket是應用層與TCP/IP協議族通信的中間軟體抽象層,它是一組介面
Socket 是一個基本的通信機制Socket把復雜的TCP/IP協議族隱藏在Socket介面後面,對用戶來說,一組簡單的介面就是全部,讓Socket去組織數據,以符合指定的協議.
Socket也具有一個類似於打開文件的函數調用Socket(),該函數返回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是通過該Socket實現的。
常用的Socket類型有兩種:
A、流式Socket(SOCK_STREAM):流式是一種面向連接的Socket,針對於面向連接的TCP服務應用。
B、數據報式Socket(SOCK_DGRAM):數據報式Socket是一種無連接的Socket,對應於無連接的UDP服務應用。
Socket的程序是一種C/S結構,分客戶端和伺服器端。
A、客戶端
– 初始化Socket
– 連接伺服器(connect),如果連接成功,這時客戶端與伺服器端的連接就建立了
– 客戶端發送數據請求,伺服器端接收請求並處理請求,然後把回應數據發送給客戶端
– 客戶端讀取數據,最後關閉連接,一次交互結束。
B、伺服器端
- 初始化Socket
- 埠綁定(bind)
- 監聽(listen)埠
- 調用accept阻塞,等待客戶端連接
在這里我們使用的就是面向連接的流式Socket,只編寫客戶端的程序。
六、代碼:
下面僅提供一個編譯過並在使用中的函數簡單的說明其實現原理,
需要有一點C語言和Linux/UNIX的socket編程基礎即可理解。
只是建立連接和傳輸部分的一個函數。當文件傳出結束或斷開時,
可以調用檢查函數看是否成功,位元組是否正常等,如果不正常結束,
可以再次循環調用它並定為伺服器文件的位元組,繼續傳輸。
其他的控制和功能都在其他函數中實現。為移植方便使用標准C語法符合C89標准。
code:
/*****************************************************************
* FileName: uftt_ver5.c *
* Company: algorithmics china lib Co.,Ltd. *
* Author: G.L.Zhang --- zglcl008 *
* Time: [2006-12-20] *
* Description: uninterrupted file transfers tools *
*****************************************************************/
int f_file_trans(const char *ft_addr, int ft_port, const char *ft_usr,const char *ft_pwd, const char *ft_opt, const char *ft_src, char *ft_obj, int ft_flg)
{
int cmd_sock = -1;
int dat_sock = -1;
int stream_sock= -1;
int dat_port = 0;
char dat_buffer[1024*5];
struct sockaddr_in f_server;
struct sockaddr_in f_datasvr;
unsigned char *pasv_ip = NULL;
unsigned char *pasv_port = NULL;
unsigned int len_addr = 0;
long rc_size = 0;
/* long svr_file_size = 0; */
long file_size = 0;
int rc = 0;
if (ft_addr == NULL || ft_usr == NULLft_pwd == NULL ||
ft_opt == NULL || ft_src == NULL || ft_obj == NULL ||
ft_port == 0 || ft_flg < 0) {
err_quit("--- file transfers parameter error");
}
/* get ftp commomd socket */
if ((cmd_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("cmmond socket");
err_quit("--- command sock error");
}
bzero(&f_server, sizeof(f_server));
f_server.sin_family = AF_INET;
f_server.sin_port = htons(ft_port);
f_server.sin_addr.s_addr = inet_addr(ft_addr);
if (connect(cmd_sock, (struct sockaddr *)&f_server, sizeof(f_server)) < 0) {
perror("connect");
err_quit("--- command sock error");
}
rc = uftt_cmd(dat_buffer, cmd_sock, NULL);
if (rc == 220)
printf("-1- %d OK\n", rc);
else
printf("-1- %d ERR\n", rc);
rc = uftt_cmd(dat_buffer, cmd_sock,"USER %s",ft_usr);
if (rc == 331)
printf("-2- %d OK\n", rc);
else
printf("-3- %d ERR\n", rc);
rc = uftt_cmd(dat_buffer, cmd_sock,"PASS %s",ft_pwd);
if (rc == 230)
printf("-3- %d OK\n", rc);
else
printf("-3- %d ERR\n", rc);
rc = uftt_cmd(dat_buffer, cmd_sock, "TYPE I");
if (rc == 200)
printf("-41- %d OK\n", rc);
else
printf("-41- %d ERR\n", rc);
rc = uftt_cmd(dat_buffer, cmd_sock, "MODE S");
if (rc == 200)
printf("-42- %d OK\n", rc);
else
printf("-42- %d ERR\n", rc);
memset(dat_buffer, ''\0'', sizeof(dat_buffer));
rc = uftt_cmd(dat_buffer, cmd_sock, "PASV");
if (rc == 227)
printf("-5- %d OK\n", rc);
else
printf("-5- %d ERR\n", rc);
#ifdef ZGL_DEBUG
printf("-5- %d %s\n", rc, dat_buffer);
#endif
/* get passive port */
dat_port = 0;
if ((rc = get_svr_port(dat_buffer, (int *)&dat_port)) < 0)
err_quit("data stream port error");
#ifdef ZGL_DEBUG
printf("--- pasive port=[%d]\n", dat_port);
#endif
if ((dat_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("data socket");
err_quit("--- data sock error");
}
len_addr = sizeof(f_datasvr);
bzero(&f_datasvr, sizeof(f_datasvr));
rc = getsockname(cmd_sock, (struct sockaddr *)&f_datasvr, (unsigned int *)&len_addr);
f_datasvr.sin_port = htons(dat_port);
/* 0=all port or appoint port TEST OK ***
f_datasvr.sin_port = htons(dat_port);
f_datasvr.sin_port = 0;
*/
if (bind(dat_sock,(struct sockaddr *)&f_datasvr,len_addr) == -1)
err_sys("--- data sock bind error");
if (listen(dat_sock,1) == -1)
err_sys("--- data sock bind error");
rc = getsockname(dat_sock, (struct sockaddr *)&f_datasvr, (unsigned int *)&len_addr);
pasv_ip = (unsigned char *)&f_datasvr.sin_addr;
pasv_port = (unsigned char *)&f_datasvr.sin_port;
rc = uftt_cmd(dat_buffer, cmd_sock,"PORT %d,%d,%d,%d,%d,%d",pasv_ip[0],
pasv_ip[1], pasv_ip[2], pasv_ip[3], pasv_port[0], pasv_port[1]);
if (rc == 200)
printf("-6- %d OK\n", rc);
else
printf("-6- %d ERR\n", rc);
/* get RETR put STOR append APPE */
if (ft_flg == 0) {
rc = uftt_cmd(dat_buffer, cmd_sock, "STOR %s", ft_obj);
}
else if (ft_flg > 0){
rc = uftt_cmd(dat_buffer, cmd_sock, "APPE %s", ft_obj);
}
if (rc == 150)
printf("-7- %d OK\n", rc);
else
printf("-7- %d ERR\n", rc);
stream_sock = accept(dat_sock, (struct sockaddr *)&f_datasvr, (unsigned int *)&len_addr);
if (stream_sock < 0)
err_sys("--- stream socket error");
rc_size = f_put_file(stream_sock, ft_src, ft_obj, ft_flg, file_size);
/* do without ***
rc = uftt_cmd(dat_buffer, dat_sock,"QUIT");
printf("-8- %d \n", rc);
*/
close(stream_sock);
close(dat_sock);
rc = uftt_cmd(dat_buffer, cmd_sock,"QUIT");
if (rc == 226)
printf("-9- %d OK\n", rc);
else
printf("-9- %d ERR\n", rc);
close(cmd_sock);
return rc_size ;
}
㈥ ftp與fxp有什麼區別
什麼是FXP(文件交換協議)
FXP最早是指客戶端控制從一個FTP伺服器把文件傳到另一個FTP伺服器。FXP方式能大大提高大容量文件的傳輸速度。利用了發送伺服器和接受伺服器之間的帶寬,當然比從FTP伺服器下載文件到你的電腦再上傳到另一個FTP伺服器快多了。
FTP(File Transfer Protocal),是文件傳輸協議的簡稱。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。用戶可以通過它把自己的PC機與世界各地所有運行FTP協議的伺服器相連,訪問伺服器上的大量程序和信息。
㈦ 怎樣在winCE里用socket通信給FTP上傳文件
現ftp主要三種用途:
、用作網站空間存放網站程序
二、用作論壇或其類型網站遠程附件盤
三、公司(集體)或需要
文件傳輸協議(FTP)RFC 959定義於198510月發布文件傳輸協議(FTP)設計跨平台、簡單且易於實現協議文件傳輸協議(FTP)漫演化史互聯網重要應用至今卻已江河本文作者各面列舉些文件傳輸協議(FTP)詬病缺點
FTP文件傳輸協議必消亡五理由
1.數據傳輸模式合理
考慮文件自身內容味使用ASCII模式傳輸數據合理文件傳輸協議(FTP)應該具自檢測功能用戶進行自定義
雖現許LinuxWindows客戶端已經支持自傳輸模式達數代UNIXWindows客戶端都默認使用ASCII傳輸模式種傳輸模式甚至造文件損壞
2.工作式設計合理
文件傳輸協議(FTP)主模式(PORT)或模式(PASV)工作決定數據鏈接建立式
主模式客戶端首先向伺服器端發送IP址埠號等待伺服器端建立TCP鏈接模式客戶端同首先建立伺服器鏈接伺服器端啟埠(10245000間)等待客戶端傳輸數據
文件傳輸協議(FTP)讓思議客戶端偵聽伺服器端
3.與防火牆工作協調
文件傳輸協議(FTP)誕網路址轉換(NAT)防火牆前網路存惡意攻擊今數終用戶IPv4址已路由防火牆使用IPv4址短缺
FTP意味著呢意味著FTP客戶端IP址路由或者位於防火牆能使用傳輸模式進行數據傳輸
伺服器端IP址路由或者位於防火牆呢FTP進行數據傳輸
現許防火牆適用於NAT環境使用些特殊技巧(hacks)允許FTP防火牆工作需要防火牆進行配置
4.密碼安全策略完善
互聯網早期文件傳輸協議(FTP)並沒密碼安全作規定FTP客戶端伺服器端數據明文形式傳輸任何通訊路徑路由具控制能力都通嗅探獲取密碼數據
我使用SSL封裝FTPFTP通建立鏈接進行數據傳輸我即便保護密碼安全難保護數據傳輸安全性
自文件傳輸協議(FTP)發布安全數據傳輸經歷足發展推薦使用SCP取代FTP進行文件傳輸
5.FTP協議效率低
FTP伺服器檢索文件包含繁復交換握手步驟:
客戶端建立FTP伺服器端控制埠TCP Socket鏈接並等待TCP握手完
客戶端等待伺服器端發送執
客戶端向伺服器端發送用戶名並等待響應
客戶端向伺服器端發送密碼並等待響應
客戶端向伺服器端發送SYST命令並等待響應
客戶端向伺服器端發送TYPE I命令並等待響應
用戶需要伺服器端切換目錄客戶端仍發送命令並等待響應
主模式客戶端需要發送PORT命令伺服器端等待響應(模式與主模式相反)
建立數據傳輸鏈接(需要經三握手建立條TCP Socket連接)
通鏈接傳輸數據
客戶端等待伺服器端控制連接發送2xx指令確保數據傳輸功
客戶端發送QUIT命令並等待伺服器響應
同情形我看看HTTP協議:
HTTP客戶端向HTTP伺服器端建立條TCP Socket連接
HTTP客戶端向HTTP伺服器端發送GET命令包含URL、HTTP協議版本、虛擬主機名等等並等待響應
HTTP伺服器端響應包含所想要數據完
傳輸文件FTP需要往復10HTTP需要2傳輸文件FTP省略發送用戶名密碼步驟HTTP則使用固定套接字(Socket)相同TCP連接傳輸文件
綜所述雖文件傳輸協議(FTP)曾經顯赫現已經既安全友且效率低協議勢必取代
㈧ Http、URL、FTP分別表示什麼
http是一個協議
HTTP 協議定義伺服器端和客戶端之間文件傳輸的溝通方式。目前HTTP協議的版本是Http1.1。RFC 2616描述了HTTP協議的具體信息。
這個協議已經成為瀏覽器和Web站點之間的標准。
當我上網的時候底層是如何進行交互的?
當訪問者點擊一個超鏈接的時候,將會給瀏覽器提交一個URL地址。通過這個URL地址,瀏覽器便知道去鏈接那個網站並去取得具體的頁面文件(也可能是一張圖片,一個pdf文件)。
HTTP工作的基礎就是,連接一個伺服器並開始傳輸文件到瀏覽器。
HTTP傳輸的基本過程
在http傳輸的過程中,被稱為客戶端的請求者向伺服器請求一個文件。
最基本的過程是:
1 客戶端連接一個主機;
2 伺服器接收連接,
3 客戶端請求一個文件,
4 伺服器發送一個應答.
URL是英文「Uniform Resource Locators」的縮寫,意思是「統一資源定位器」。它不僅可用來定位網路上信息資源的地址,也可用來定位本地系統要訪問的文件。
URL可分為兩種類型,一種是絕對URL,另一種是相對URL。
絕對URL就是指明需要訪問的信息或資源的絕對位置。絕對URL的基本語法格式為:accessmethod:‖servername[:port]/directory/name。其中,accessmethod是指定資源伺服器的服務方式,稱為「使用協議」。在WWW系統中,最常用的就是「http」協議。servername,指伺服器域名,接入到Internet中每個可供訪問的伺服器,都有一個專用的域名,用戶要訪問伺服器上的資源,必須指明伺服器的域名。「[:port]」是指明進入一個伺服器的埠號,它是用數字來表示的,一般可預設。「directory」是指明文件所在伺服器的目錄或路徑。「name」是文件名,在預設的情況下,首先會調出稱為「主頁」的文件。
相對URL就是定位需要訪問資源的相對路徑。所謂「相對路徑」,就是所需資源相對於當前位置的路徑。例如,當我們已處於伺服器中的一個路徑時,如果該路徑中有多個文件需要訪問,那麼我們僅需指明文件名就可以了。
FTP是英語FILE TRANSFER PROTOCOL的簡稱,中文意為"文件傳送協議,用於在電腦和電腦之間傳送文件,有了這個協議,文件的傳輸就可以不受不同的電腦,不同的操作系統,甚至不同文件格式的限制,傳輸文件的一般步驟如下:
1在本地電腦上登陸到國際互聯網,
2搜索有文件共享主機或者個人電腦(一般有專門的FTP伺服器網站上公布的,上面有進入該主機或個人電腦的名稱,口令和路徑)
3當與遠程主機或者對方的個人電腦建立連接後,用對方提供的用戶名和口令登陸到該主機或對方的個人電腦.
4在遠程主機或對方的個人電腦登陸成功後,就可以上傳你想跟別人分享的東東或者下載別人授權共享的東東(這里的東東是指能放到電腦里去又能在顯示屏上看到的東東)
5完成工作後關閉FTP下載軟體,切斷連接.
為了實現文件傳輸,用戶還要運行專門的文件傳輸程序,比如網際快車就有這方面的功能,其它還有很多專門的FTP傳輸軟體,各有各的特色
㈨ http,ftp分別是什麼意思
HTTP,即超文本傳輸協議,是 HyperText Transfer Protocol的縮寫。
FTP(文件傳輸) FTP就是文件傳輸協議,通過FTP,用戶可以從Internet網上的一台機器向另一台機器復制文件,可以用這種方式獲取大量的文檔,數據和其他的信息。