1. 程式人生 > >[svc]ftp協議數據連接的2種模式

[svc]ftp協議數據連接的2種模式

協議 隨機 分享圖片 script info scrip ftp服務 角度 報文

玩明白了以太網2的二層數據格式, ip格式 tcp/udp個時候, 需要玩一玩一些有用的基於這些已上的協議數據了. 如 dhcp ftp等.比較有趣.

ftp協議

分控制連接21端口 和數據連接 20端口

數據連接站在服務端角度來講分兩種模式: 主動模式(服務端主動用自己的20端口去連客戶端,適合防火墻)
被動模式(服務端被動等客戶端來連服務端的一個隨機端口.)

技術分享圖片

每個協議都有控制層面(對應控制報文),和數據層面(對應的傳輸數據,有些只有控制層面,如dhcp不需要傳數據)

FTP服務端會監聽2個端口, 控制進程20,數據進程21(主動模式)

數據連接,站在服務器角度,有2種模式:
    主動模式:ftp server從20端口主動向客戶端發起連接,由於源端口固定,所以適用於模式防火墻模式.
    被動模式:ftp server被動等待客戶端來連我的這個端口(控制連接後會告知會將passive ip/port告知了客戶端)
一般情況下默認都是被動模式

ftp兩種模式

原圖和兩枚ftp數據包: https://github.com/lannyMa/scripts/tree/master/pkgs/ftp
技術分享圖片

主動模式數據交互過程

14.1 客戶端 14.128服務端

  • 建立控制連接,3次握手, 客戶端連服務端21端口
    技術分享圖片

  • 待連接建立後,客戶端告知服務端 active ip/port
    技術分享圖片

  • 服務端主動和客戶端建立數據連接(站在服務端角度,是服務端主動去找客戶端)
    技術分享圖片

  • 傳輸數據
    技術分享圖片

  • 斷開數據連接
    技術分享圖片

  • 斷開控制連接
    技術分享圖片

被動模式數據交互過程

  • 客戶端主動去和服務端建立控制連接
    技術分享圖片

  • 服務端告知客戶端passive mode /ip/port
    技術分享圖片

  • 客戶端主動去和服務端建立數據連接(站在服務端角度,是服務端被動等客戶端)

    技術分享圖片

  • 客戶端和服務端之間斷開數據連接
    技術分享圖片

  • 客戶端和服務端之間斷開控制連接
    技術分享圖片

[svc]ftp協議數據連接的2種模式