網路協議 應用層協議 檔案傳輸協議

2022-09-12 01:03:14 字數 1341 閱讀 3681

ftp 的英文全稱是 file transfer protocol,意為檔案傳輸協議,也就是在兩個相連的計算機(通常是本地主機與伺服器)之間進行檔案傳輸的協議

ftp 底層原理

ftp 使用兩個 tcp 連線實現檔案傳輸:乙個 tcp 連線用於控制,另乙個 tcp 連線用於資料傳輸。

控制主要包含使用者登入和驗證、傳送檔案的名稱、傳送方式設定等。利用這個連線,可以通過 ascii 碼字串傳送請求和接收應答。但在這個連線上無法傳送資料,只能通過另乙個專門的 tcp 連線實現資料傳輸。

ftp 控制用的連線使用的是 21 號埠,該埠進行檔案 get(retr)、put(stor)、以及檔案預覽(list)等操作時,每次都會建立乙個用於資料傳輸的 tcp 連線。資料傳輸完畢後,傳輸資料的這個連線被斷開,然後在控制用的連線上繼續進行命令或應答的處理。

控制用的連線,在使用者要求斷開之前會一直保持連線狀態,不過,絕大多數 ftp 伺服器都會對長時間沒有任何新命令輸入的使用者的連線強制斷開。

資料傳輸用的連線通常使用埠 20,不過可以用 port 命令修改為其它值。

ftp 檔案傳輸

以上就是 ftp 的大致原理,我們要使用 ftp 傳輸檔案,需要準備好客戶端和服務端守護程序,客戶端一般就是支援 ftp 檔案傳輸的軟體,比如 filezilla,而服務端守護程序就是vsftpd,可以參考這篇教程進行安裝配置。

伺服器端守護程序啟動以後,就會監聽 21 號埠等待連線,然後我們可以通過前面介紹的 telnet 在命令列測試連線到遠端 ftp 伺服器:

~ telnet 114.215.241.29 21   # 遠端主機ip和埠號

trying 114.215.241.29...

connected to 114.215.241.29.

escape character is '^]'.

220 (vsftpd 3.0.2)

user ftpuser # 通過 user 指令設定 ftp 使用者名稱

331 please specify the password.

pass ******** # 通過 pass 指令設定 ftp 使用者密碼

230 login successful. # 返回 230 表示認證成功

ftp 在傳輸過程中不會對資訊進行加密,都是明文傳輸,因而有被竊聽和侵入的風險,由此衍生出了安全的檔案傳輸協議 sftp(ssh file transfer protocol),它會使用 ssh 協議進行身份驗證並建立安全連線,所以推薦在日常使用時優先考慮 sftp,上面介紹的服務端 vsftpd 和客戶端 filezilla 都支援 sftp,感興趣的同學可以自行研究下實現,這裡就不深入展開了。

應用層 檔案傳輸協議

檔案傳送協議主要分為兩大類,第一類就是第一段中所提到的基於tcp的ftp和基於udp的tftp,這類的操作主要是通過複製整個檔案來實現的。另外一類是聯機訪問 on line access 也就是說允許多個程式 同時對乙個檔案進行訪問。其中比較有代表的協議有網路檔案系統nfs network file...

網路協議 應用層協議 概述

應用層協議概述 前面介紹的 ip 協議 tcp 協議和 udp 協議分別屬於網路層和傳輸層協議,都是屬於網路通訊中的基礎部分,接下來,要開始介紹網路通訊中應用層協議,應用層協議非常豐富,也是我們日常打交道最多的部分 不論是我們前面介紹過的 dns 網域名稱解析協議,還是我們日常 web 依賴的 ht...

網路協議 應用層

基於tcp ip的應用層協議 1.1.1 請求行 1.1.2 首部 就是請求頭,例如accept charset content type cache control if modified since 1.1.3 正文實體 正式的資料報文 1.1.4 http請求的傳送 客戶端傳送請求,應用層傳二...