日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FTP的主动模式和被动模式工作原理

發(fā)布時間:2023/12/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FTP的主动模式和被动模式工作原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

1、鏈路分類

2、控制鏈路

3、數(shù)據(jù)鏈路

3.1、被動模式(PASV)

3.2、主動模式(PORT)

3.3、兩種模式數(shù)據(jù)鏈路區(qū)別

4、FTP 相關(guān)命令

4.1、登錄

4.2、建立文件傳輸套接字通信

4.3、操作文件

4.4、目錄操作

4.5、模式與類型

4.6、參數(shù)信息

4.7、其他不常用的命令

4.8、FTP服務(wù)端的響應(yīng)碼


1、鏈路分類

? ? ? FTP是僅基于TCP的服務(wù),與眾不同的是FTP協(xié)議要用到兩個TCP連接,一個是控制鏈路,用來在客戶端與服務(wù)器之間傳遞命令的;另一個是數(shù)據(jù)鏈路,用來上傳或下載數(shù)據(jù)的??刂奇溌肥怯煽蛻舳讼蚍?wù)器端的 21 號端口建鏈,根據(jù)數(shù)據(jù)鏈路的建鏈方向以及所使用的端口號的不同分為主動模式和被動模式兩種。

2、控制鏈路

無論是被動模式還是主動模式都是需要客戶端用一個大于1024的端口主動先向服務(wù)器的 21號端口 建鏈形成控制鏈路,具體過程如下:

1、客戶端向服務(wù)器發(fā)起三次握手操作,完成TCP鏈路的建立
2、TCP建鏈完成,服務(wù)器向客戶端回復(fù)220 (220:對新用戶服務(wù)準(zhǔn)備好)
3、服務(wù)器向客戶端發(fā)送回應(yīng)530(530:需要客戶端發(fā)送用戶名和密碼)
4、客戶端發(fā)送用戶名,服務(wù)器收到用戶名并校驗成功后回復(fù)331(331:用戶名正確,需要口令)
5、客戶端發(fā)送密碼,服務(wù)收到密碼校驗成功后并回復(fù)230(230:用戶登錄成功)

client:10.43.42.199、server:10.43.85.223,報文如下

//client [root@localhost ~]# netstat -anp | grep 10.43.85.223 tcp 0 0 10.43.42.199:52055 10.43.85.223:21 ESTABLISHED 19848/ftp

3、數(shù)據(jù)鏈路

3.1、被動模式(PASV)

ftp默認(rèn)使用被動模式傳輸數(shù)據(jù),具體過程如下:

1、客戶端向服務(wù)器發(fā)送PASV指令,告訴服務(wù)器使用被動模式(控制鏈路)
2、服務(wù)器收到指令后,開啟一個監(jiān)聽端口 listen_port(大于1024),并將該端口信息回復(fù)客戶端
3、客戶端收到服務(wù)的監(jiān)聽端口 listen_port 信息后,立刻再起一個端口向listen_port進(jìn)行建鏈(數(shù)據(jù)鏈路)
4、數(shù)據(jù)鏈路建鏈完成后,數(shù)據(jù)信息走數(shù)據(jù)鏈路、控制指令信息走控制鏈路

模型如下:

? ? ? ? ? ??

抓包信息如下:

client命令執(zhí)行結(jié)果:

//clientftp> get test1 local: test1 remote: test1 227 Entering Passive Mode (10,43,85,223,25,164). 150 Opening BINARY mode data connection for test1 (70776816 bytes). 226 Transfer complete. 70776816 bytes received in 6.1 seconds (1.1e+04 Kbytes/s) ....[roott@localhost ~]# netstat -anp | grep 10.43.85.223 tcp 0 0 10.43.42.199:44613 10.43.85.223:6564 ESTABLISHED 19848/ftp tcp 0 0 10.43.42.199:52055 10.43.85.223:21 ESTABLISHED 19848/ftp

3.2、主動模式(PORT)

1、客戶端本地開啟一個監(jiān)聽端口listen_port,后向服務(wù)器發(fā)送PROT指令,并將端口信息帶給服務(wù)器
2、服務(wù)收到PROT指令,立刻用本地20號端口向客戶端的 listen_port 進(jìn)行建鏈(數(shù)據(jù)鏈路)
3、數(shù)據(jù)鏈路建鏈完成后,數(shù)據(jù)信息走數(shù)據(jù)鏈路、控制指令信息走控制鏈路。

? ? ? ? ??

抓包信息如下:

client命令執(zhí)行結(jié)果:

//clientftp> passive Passive mode off. ftp> get test2 local: test2 remote: test2 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for test2 (86743786 bytes). 226 Transfer complete. 86743786 bytes received in 7.5 seconds (1.1e+04 Kbytes/s) ftp> quit[roott@localhost ~]# netstat -anp | grep 10.43.85.223 tcp 0 0 10.43.42.199:59250 10.43.85.223:20 ESTABLISHED 19848/ftp tcp 0 0 10.43.42.199:52055 10.43.85.223:21 ESTABLISHED 19848/ftp [roott@localhost ~]# netstat -anp | grep 10.43.85.223 tcp 0 0 10.43.42.199:59250 10.43.85.223:20 ESTABLISHED 19848/ftp tcp 0 0 10.43.42.199:52055 10.43.85.223:21 ESTABLISHED 19848/ftp [roott@localhost4 ~]# netstat -anp | grep 10.43.85.223

3.3、兩種模式數(shù)據(jù)鏈路區(qū)別

  • 被動模式和主動模式的區(qū)分主要是在數(shù)據(jù)鏈路上,控制鏈路兩者完全相同。
  • 被動模式是客戶端向服務(wù)器主動建鏈,監(jiān)聽端口由服務(wù)器響應(yīng)PASS后帶回。
  • 主動模式是服務(wù)器向客戶端主動建鏈,監(jiān)聽端口封裝在客戶端的請求信息PROT中,同時服務(wù)只能使用21號端口進(jìn)行建鏈鏈,也就是說如果是主動模式,同一時刻只能有一條數(shù)據(jù)鏈路在傳輸(相同 ip)。
  • 還有一點需要注意:數(shù)據(jù)鏈路僅用于數(shù)據(jù)傳輸,數(shù)據(jù)傳輸完畢后立刻斷鏈,如果后續(xù)還有數(shù)據(jù)傳輸會重新新建一條數(shù)據(jù)鏈,無論是PASS 還是 PROT。
  • 4、FTP 相關(guān)命令

    (每執(zhí)行一次命令后,服務(wù)端會給與回復(fù))

    4.1、登錄

    USER 賬號\r\n登錄賬號
    PASS 密碼\r\n登錄密碼
    REIN\r\n想重新登錄,連接不會關(guān)閉,下一條命令USER可重新連接
    QUIT\r\n退出

    4.2、建立文件傳輸套接字通信

    PASV\r\n被動模式,服務(wù)端會回復(fù)一個IP地址和端口,然后你再連接.(一般使用被動模式)
    PORT 表示IP端口的特殊格式\r\n主動模式,讓服務(wù)端主動來連接你的文件監(jiān)聽套接字

    4.3、操作文件

    STOR 文件名\r\n上傳文件
    APPE 文件名\r\n上傳文件,如果文件名已存在,把數(shù)據(jù)插入尾部
    DELE 文件名\r\n刪除指定文件
    REST 字節(jié)個數(shù)\r\n跳過字節(jié)數(shù),短點續(xù)傳,下載文件前使用,使RETR命令僅下載偏移后的部分
    RETR 文件名\r\n下載文件
    ABOR\r\n放棄傳輸一個文件,將關(guān)閉文件套接字通信

    4.4、目錄操作

    CWD 目錄名\r\n改變當(dāng)前目錄到指定目錄
    CDUP\r\n返回上一次目錄,當(dāng)?shù)礁夸洉r,不變
    LIST\r\n顯示當(dāng)前目錄下的文件,包括長度,文件類型(如目錄)與權(quán)限(表示類型:drwxr-xr-x)
    LIST 目錄名\r\n顯示指定目錄下的文件,包括長度,文件類型(如目錄)與權(quán)限(表示類型:drwxr-xr-x)
    MKD 目錄名\r\n創(chuàng)建一個目錄
    PWD\r\n顯示當(dāng)前目錄的路徑
    RMD 目錄名\r\n刪除目錄
    RNFR 文件或目錄名\r\n將某文件或目錄重命名,接下來要使用RNTO指定新名稱
    RNTO 文件或目錄名\r\n重命名為....
    NLST\r\n僅顯示當(dāng)前目錄下的文件,以\r\n表示下一個
    NLST 目錄\r\n僅顯示指定目錄下的文件,以\r\n表示下一個

    4.5、模式與類型

    TYPE 字符\r\n選擇傳輸類型
    A為文本模式
    I為二進(jìn)制模式
    E為EBCDIC
    N為Nonprint非打印模式
    T為Telnet格式控制符

    4.6、參數(shù)信息

    ?

    SYST\r\n獲取服務(wù)端系統(tǒng)信息(NT或Unix)
    STAT 文件或文件夾\r\n獲取相關(guān)信息

    4.7、其他不常用的命令

    ACCT 用戶帳號\r\n發(fā)送PASS命令并接收到332代碼之后才應(yīng)發(fā)送
    SMNT 另一個文件數(shù)據(jù)系統(tǒng)的路徑\r\n允許用戶裝配另一個文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)而無需改變登錄
    MODE 字符\r\n指定傳輸類型:默認(rèn)為流模式(S為流)(B為塊)(C為經(jīng)過壓縮)
    STRU 字符\r\n指定結(jié)構(gòu)類型:F為文件結(jié)構(gòu)(默認(rèn)值,就是流式傳輸)
    ALLO 邏輯字節(jié)數(shù)\r\n上傳文件前,使用此命令申請內(nèi)存(本人還沒見到需要的,都是直接上傳)
    NOOP測試通信
    HELP幫助,會列出有效命令

    4.8、FTP服務(wù)端的響應(yīng)碼

    150文件狀態(tài)良好,打開數(shù)據(jù)連接
    200命令成功
    212目錄狀態(tài)
    213文件狀態(tài)
    110重新啟動標(biāo)記應(yīng)答
    500格式錯誤,命令不可識別
    501參數(shù)語法錯誤
    502命令未實現(xiàn)
    120在X分鐘內(nèi)準(zhǔn)備好
    125連接打開準(zhǔn)備傳送
    214幫助信息,信息僅對人類用戶有用
    215名字系統(tǒng)類型
    220對新用戶服務(wù)準(zhǔn)備好
    221服務(wù)關(guān)閉控制連接,可以退出登錄
    202命令未實現(xiàn)
    211系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)
    225數(shù)據(jù)連接打開,無傳輸正在進(jìn)行
    226關(guān)閉數(shù)據(jù)連接,請求的文件操作成功
    227進(jìn)入被動模式
    230用戶登錄
    331用戶名正確,需要口令
    332登錄時需要帳戶信息
    350請求的文件操作需要進(jìn)一步命令
    421連接用戶過多
    425不能打開數(shù)據(jù)連接
    426關(guān)閉連接,中止傳輸
    450請求的文件操作未執(zhí)行
    451中止請求的操作:有本地錯誤
    452未執(zhí)行請求的操作:系統(tǒng)存儲空間不足
    250請求的文件操作完成
    257創(chuàng)建"PATHNAME"
    503命令順序錯誤
    504此參數(shù)下的命令功能未實現(xiàn)
    530賬號或密碼錯誤
    532存儲文件需要帳戶信息
    550未執(zhí)行請求的操作
    551請求操作中止:頁類型未知
    552請求的文件操作中止,存儲分配溢出
    553未執(zhí)行請求的操作:文件名不合法

    參考文獻(xiàn):

    https://blog.csdn.net/jingzi123456789/article/details/83409572

    https://blog.csdn.net/Aaron133/article/details/78508211

    ?

    總結(jié)

    以上是生活随笔為你收集整理的FTP的主动模式和被动模式工作原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。